Name: series-workflowzcdr9 Phase: Succeeded StartedAt: 2026-09-08 08:27:33 +0000 UTC FinishedAt: 2026-09-08 10:12:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[0] Phase: Succeeded StartedAt: 2026-09-08 08:27:33 +0000 UTC FinishedAt: 2026-09-08 08:56:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 08:27:33 +0000 UTC FinishedAt: 2026-09-08 08:56:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "5e2d672280d97d83de43031d93761b12dadd7b8a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PCI", "VFIO", "VFIO_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "5e2d672280d97d83de43031d93761b12dadd7b8a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PCI", "VFIO", "VFIO_PCI" ], "series_id": "29f7d819-caaf-4752-b7cd-541a1665c8a2" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vfio_pci_core_disable", "vfio_pci_core_close_device", "vfio_pci_core_enable", "vfio_pci_open_device" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtWRklPJiMzNDssCiAgICAmIzM0O1ZGSU9fUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZpb19wY2lfY29yZV9kaXNhYmxlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfZW5hYmxlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX29wZW5fZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGV2aWNlIGxvY2tpbmcgYmVoYXZpb3IgaW4gdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgYnkgcmVwbGFjaW5nIGEgdHJ5bG9jayAocGNpX2Rldl90cnlsb2NrKSBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBsb2NrIChwY2lfZGV2X2xvY2spIGFuZCByZW1vdmluZyBhbiB1bnVzZWQgZ290byBsYWJlbC4gVGhpcyBjaGFuZ2UgZXhjbHVzaXZlbHkgYWZmZWN0cyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBhbmQgZGV2aWNlIHJlc2V0IGZsb3cuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgYWxsb2NhdGUsIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBub3IgZG9lcyBpdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSBvciBhbHRlciBsb2dpYyBkZWFsaW5nIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIGxvY2sgb3JkZXIgaW52ZXJzaW9ucykgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUC9LQVNBTiByYXRoZXIgdGhhbiBLTVNBTi4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBsb2dpYyBpbiB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoKSBieSByZXBsYWNpbmcgYSB0cnlsb2NrIG9uIHRoZSB1cHN0cmVhbSBicmlkZ2Ugd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGJsb2NraW5nIHBjaV9kZXZfbG9jayhicmlkZ2UpLiBUaGlzIGFsdGVycyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBiZWhhdmlvciBpbiB0aGUgVkZJTyBQQ0kgdGVhcmRvd24vZGlzYWJsZSBwYXRoIHdoZW4gZGV2aWNlIGluc3RhbmNlcyBhcmUgY2xvc2VkIG9yIGRpc2FibGVkLCB3aGljaCBjYW4gaW50cm9kdWNlIGRlYWRsb2NrIG9yIGxvY2tpbmcgaW52YXJpYW50IGlzc3Vlcy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZGSU8gUENJIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYmNhNGE5YjhkZDk4ZWVmNDM4MzNlZmM0NmY1ZWViN2MxZmUwNjg1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAwODo1NToyMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5pbmRleCAzNjJjMzc1YTA1Nzk5Li44OTY2YTViZWE0MDYzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5AQCAtNzkwLDggJiM0Mzs3OTAsOCBAQCB2b2lkIHZmaW9fcGNpX2NvcmVfZGlzYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG4gXHQgKi9cbiBcdGlmICh2ZGV2LVx1MDAzZXJlc2V0X3dvcmtzKSB7XG4gXHRcdGJyaWRnZSA9IHBjaV91cHN0cmVhbV9icmlkZ2UocGRldik7XG4tXHRcdGlmIChicmlkZ2UgXHUwMDI2XHUwMDI2ICFwY2lfZGV2X3RyeWxvY2soYnJpZGdlKSlcbi1cdFx0XHRnb3RvIG91dF9yZXN0b3JlX3N0YXRlO1xuJiM0MztcdFx0aWYgKGJyaWRnZSlcbiYjNDM7XHRcdFx0cGNpX2Rldl9sb2NrKGJyaWRnZSk7XG4gXHRcdGlmIChwY2lfZGV2X3RyeWxvY2socGRldikpIHtcbiBcdFx0XHRpZiAoIV9fcGNpX3Jlc2V0X2Z1bmN0aW9uX2xvY2tlZChwZGV2KSlcbiBcdFx0XHRcdHZkZXYtXHUwMDNlbmVlZHNfcmVzZXQgPSBmYWxzZTtcbkBAIC04MDEsNyAmIzQzOzgwMSw2IEBAIHZvaWQgdmZpb19wY2lfY29yZV9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbiBcdFx0XHRwY2lfZGV2X3VubG9jayhicmlkZ2UpO1xuIFx0fVxuIFxuLW91dF9yZXN0b3JlX3N0YXRlOlxuIFx0cGNpX3Jlc3RvcmVfc3RhdGUocGRldik7XG4gb3V0OlxuIFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtWRklPJiMzNDssCiAgICAmIzM0O1ZGSU9fUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZpb19wY2lfY29yZV9kaXNhYmxlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfZW5hYmxlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX29wZW5fZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGxvZ2ljIGluIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpIGJ5IHJlcGxhY2luZyBhIHRyeWxvY2sgb24gdGhlIHVwc3RyZWFtIGJyaWRnZSB3aXRoIGFuIHVuY29uZGl0aW9uYWwgYmxvY2tpbmcgcGNpX2Rldl9sb2NrKGJyaWRnZSkuIFRoaXMgYWx0ZXJzIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIGJlaGF2aW9yIGluIHRoZSBWRklPIFBDSSB0ZWFyZG93bi9kaXNhYmxlIHBhdGggd2hlbiBkZXZpY2UgaW5zdGFuY2VzIGFyZSBjbG9zZWQgb3IgZGlzYWJsZWQsIHdoaWNoIGNhbiBpbnRyb2R1Y2UgZGVhZGxvY2sgb3IgbG9ja2luZyBpbnZhcmlhbnQgaXNzdWVzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdpdGggVkZJTyBQQ0kgc3VwcG9ydC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZiY2E0YTliOGRkOThlZWY0MzgzM2VmYzQ2ZjVlZWI3YzFmZTA2ODUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDA4OjU1OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwppbmRleCAzNjJjMzc1YTA1Nzk5Li44OTY2YTViZWE0MDYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwpAQCAtNzkwLDggJiM0Mzs3OTAsOCBAQCB2b2lkIHZmaW9fcGNpX2NvcmVfZGlzYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpCiAJICovCiAJaWYgKHZkZXYtJmd0O3Jlc2V0X3dvcmtzKSB7CiAJCWJyaWRnZSA9IHBjaV91cHN0cmVhbV9icmlkZ2UocGRldik7Ci0JCWlmIChicmlkZ2UgJmFtcDsmYW1wOyAhcGNpX2Rldl90cnlsb2NrKGJyaWRnZSkpCi0JCQlnb3RvIG91dF9yZXN0b3JlX3N0YXRlOwomIzQzOwkJaWYgKGJyaWRnZSkKJiM0MzsJCQlwY2lfZGV2X2xvY2soYnJpZGdlKTsKIAkJaWYgKHBjaV9kZXZfdHJ5bG9jayhwZGV2KSkgewogCQkJaWYgKCFfX3BjaV9yZXNldF9mdW5jdGlvbl9sb2NrZWQocGRldikpCiAJCQkJdmRldi0mZ3Q7bmVlZHNfcmVzZXQgPSBmYWxzZTsKQEAgLTgwMSw3ICYjNDM7ODAxLDYgQEAgdm9pZCB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KQogCQkJcGNpX2Rldl91bmxvY2soYnJpZGdlKTsKIAl9CiAKLW91dF9yZXN0b3JlX3N0YXRlOgogCXBjaV9yZXN0b3JlX3N0YXRlKHBkZXYpOwogb3V0OgogCXBjaV9kaXNhYmxlX2RldmljZShwZGV2KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzNwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byB0aGlzIFZGSU8gUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIHRob3JvdWdobHkuIEZpcnN0IHRoaW5ncyBmaXJzdDogaXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdmZpb19wY2lfY29yZV9kaXNhYmxlYCBmdW5jdGlvbi4gUmlnaHQsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGFjdGlvbiBpcy4KCkkgbmVlZCB0byBxdWlja2x5IGdyYXNwIHRoZSBjb250ZXh0LCB0aGUgY2FsbCBwYXRocywgdGhlIGRlcGVuZGVuY2llcy4uLiBhbGwgb2YgaXQuIExldCYjMzk7cyBmaXJlIHVwIGBncmVwcGVyYCAob3IgaWYgaXQmIzM5O3MgZWFzaWVyLCBhIHF1aWNrIGByZWFkLWZpbGVgKSBhbmQgc2VlIGhvdyBgdmZpb19wY2lfY29yZV9kaXNhYmxlYCBpcyB1c2VkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdmZpby1wY2kgaXMgY29uZmlndXJlZCwgaG93IGl0JiMzOTtzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIHN5c3RlbSwgYW5kIGhvdyB0byByZWFjaCBpdCBpbiBnZW5lcmFsLgoKTGV0JiMzOTtzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gdGhhdCBmdW5jdGlvbiBpbiB0aGUgc291cmNlIGNvZGUuIEkmIzM5O2xsIHJlYWQgYXJvdW5kIGxpbmUgNzkwIGluIGBkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY2AgZm9yIHNvbWUgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGF0IGNvcmUgZnVuY3Rpb24gd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzcwOlx0XHRcdHBjaV9pbmZvKHBkZXYsIFwmIzM0OyVzOiBDb3VsZG4mIzM5O3QgcmVsb2FkIHNhdmVkIHN0YXRlXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4gNzcxOlx0XG4gNzcyOlx0XHRcdGlmICghdmRldi1cdTAwM2VyZXNldF93b3JrcylcbiA3NzM6XHRcdFx0XHRnb3RvIG91dDtcbiA3NzQ6XHRcbiA3NzU6XHRcdFx0cGNpX3NhdmVfc3RhdGUocGRldik7XG4gNzc2Olx0XHR9XG4gNzc3Olx0XG4gNzc4Olx0XHQvKlxuIDc3OTpcdFx0ICogRGlzYWJsZSBJTlR4IGFuZCBNU0ksIHByZXN1bWFibHkgdG8gYXZvaWQgc3B1cmlvdXMgaW50ZXJydXB0c1xuIDc4MDpcdFx0ICogZHVyaW5nIHJlc2V0LiAgU3RvbGVuIGZyb20gcGNpX3Jlc2V0X2Z1bmN0aW9uKClcbiA3ODE6XHRcdCAqL1xuIDc4MjpcdFx0cGNpX3dyaXRlX2NvbmZpZ193b3JkKHBkZXYsIFBDSV9DT01NQU5ELCBQQ0lfQ09NTUFORF9JTlRYX0RJU0FCTEUpO1xuIDc4MzpcdFxuIDc4NDpcdFx0LypcbiA3ODU6XHRcdCAqIFRyeSB0byBnZXQgdGhlIGxvY2tzIG91cnNlbHZlcyB0byBwcmV2ZW50IGEgZGVhZGxvY2suIFRoZVxuIDc4NjpcdFx0ICogc3VjY2VzcyBvZiB0aGlzIGlzIGRlcGVuZGVudCBvbiBiZWluZyBhYmxlIHRvIGxvY2sgdGhlIGRldmljZSxcbiA3ODc6XHRcdCAqIHdoaWNoIGlzIG5vdCBhbHdheXMgcG9zc2libGUuXG4gNzg4Olx0XHQgKiBXZSBjYW4gbm90IHVzZSB0aGUgXCYjMzQ7dHJ5XCYjMzQ7IHJlc2V0IGludGVyZmFjZSBoZXJlLCB3aGljaCB3aWxsXG4gNzg5Olx0XHQgKiBvdmVyd3JpdGUgdGhlIHByZXZpb3VzbHkgcmVzdG9yZWQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cbiA3OTA6XHRcdCAqL1xuIDc5MTpcdFx0aWYgKHZkZXYtXHUwMDNlcmVzZXRfd29ya3MpIHtcbiA3OTI6XHRcdFx0YnJpZGdlID0gcGNpX3Vwc3RyZWFtX2JyaWRnZShwZGV2KTtcbiA3OTM6XHRcdFx0aWYgKGJyaWRnZSlcbiA3OTQ6XHRcdFx0XHRwY2lfZGV2X2xvY2soYnJpZGdlKTtcbiA3OTU6XHRcdFx0aWYgKHBjaV9kZXZfdHJ5bG9jayhwZGV2KSkge1xuIDc5NjpcdFx0XHRcdGlmICghX19wY2lfcmVzZXRfZnVuY3Rpb25fbG9ja2VkKHBkZXYpKVxuIDc5NzpcdFx0XHRcdFx0dmRldi1cdTAwM2VuZWVkc19yZXNldCA9IGZhbHNlO1xuIDc5ODpcdFx0XHRcdHBjaV9kZXZfdW5sb2NrKHBkZXYpO1xuIDc5OTpcdFx0XHR9XG4gODAwOlx0XHRcdGlmIChicmlkZ2UpXG4gODAxOlx0XHRcdFx0cGNpX2Rldl91bmxvY2soYnJpZGdlKTtcbiA4MDI6XHRcdH1cbiA4MDM6XHRcbiA4MDQ6XHRcdHBjaV9yZXN0b3JlX3N0YXRlKHBkZXYpO1xuIDgwNTpcdG91dDpcbiA4MDY6XHRcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcbiA4MDc6XHRcbiA4MDg6XHRcdHZmaW9fcGNpX2Rldl9zZXRfdHJ5X3Jlc2V0KHZkZXYtXHUwMDNldmRldi5kZXZfc2V0KTtcbiA4MDk6XHRcbiA4MTA6XHRcdC8qIFB1dCB0aGUgcG0tcnVudGltZSB1c2FnZSBjb3VudGVyIGFjcXVpcmVkIGR1cmluZyBlbmFibGUgKi9cbiA4MTE6XHRcdGlmICghdmRldi1cdTAwM2VkaXNhYmxlX2lkbGVfZDMpXG4gODEyOlx0XHRcdHBtX3J1bnRpbWVfcHV0KFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiA4MTM6XHR9XG4gODE0Olx0RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9kaXNhYmxlKTtcbiA4MTU6XHRcbiA4MTY6XHR2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuIDgxNzpcdHtcbiA4MTg6XHRcdHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiA9XG4gODE5Olx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSwgdmRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIyOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSBGdW5jdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCBmb3IgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAuIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgdXNlZD8gVGltZSB0byBnbyBvbGQgc2Nob29sLiBJJiMzOTtsbCByZWFjaCBmb3IgYGdyZXBgIGFuZCBzZWFyY2ggdGhlIGNvZGViYXNlLiBBIHF1aWNrIGBncmVwYCBmb3IgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIHNwZWNpZmljIGxvY2F0aW9ucyB3aGVyZSB0aGlzIGNyaXRpY2FsIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQsIGFuZCBoZWxwIG1lIHRyYWNlIGJhY2sgdGhlIGxvZ2ljIGFuZCB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBkaXNhYmxlIHByb2Nlc3MgaXMgdHJpZ2dlcmVkLiBGcm9tIHRoZXJlLCBJIGNhbiBiZWdpbiB0byB1bnJhdmVsIGl0cyByb2xlIGluIHRoZSBsYXJnZXIgdmZpby1wY2kgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fcGNpX2NvcmVfZGlzYWJsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE1MTQ9c3RhdGljIGludCBoaXNpX2FjY192ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1MjgtXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmhpc2lfYWNjX3ZkZXYtXHUwMDNlb3Blbl9tdXRleCk7XG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1Mjk6XHRcdFx0dmZpb19wY2lfY29yZV9kaXNhYmxlKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTMwLVx0XHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTczPXN0YXRpYyBpbnQgbnZncmFjZV9ncHVfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMjIxLWVycm9yX2V4aXQ6XG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoyMjI6XHR2ZmlvX3BjaV9jb3JlX2Rpc2FibGUodmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0yMjMtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYz01OD1zdGF0aWMgaW50IHFhdF92Zl9wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jLTcxLVx0aWYgKHJldCkge1xuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjcyOlx0XHR2ZmlvX3BjaV9jb3JlX2Rpc2FibGUodmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNzMtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jPTEwMz1zdGF0aWMgaW50IHZmaW9fcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xMTctXHRcdFx0cGNpX3dhcm4ocGRldiwgXCYjMzQ7RmFpbGVkIHRvIHNldHVwIEludGVsIElHRCByZWdpb25zXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYzoxMTg6XHRcdFx0dmZpb19wY2lfY29yZV9kaXNhYmxlKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTExOS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTY4MD1FWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2VuYWJsZSk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy02ODEtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo2ODI6dm9pZCB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNjgzLXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MTMtfVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6ODE0OkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfZGlzYWJsZSk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MTUtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz04MTY9dm9pZCB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MzEtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo4MzI6XHR2ZmlvX3BjaV9jb3JlX2Rpc2FibGUodmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MzMtXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmM9MzE2PWludCB2aXJ0aW92Zl9vcGVuX2xlZ2FjeV9pbyhzdHJ1Y3QgdmlydGlvdmZfcGNpX2NvcmVfZGV2aWNlICp2aXJ0dmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYy0zMjEtXHQvKlxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmM6MzIyOlx0ICogVXBvbiBjbG9zZV9kZXZpY2UoKSB0aGUgdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgaXMgY2FsbGVkXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYy0zMjMtXHQgKiBhbmQgd2lsbCBjbG9zZSBhbGwgdGhlIHByZXZpb3VzIG1tYXBzLCBzbyBpdCBzZWVtcyB0aGF0IHRoZVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0yMT1zdGF0aWMgaW50IHZpcnRpb3ZmX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtMzQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MzU6XHRcdHZmaW9fcGNpX2NvcmVfZGlzYWJsZSh2ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0zNi1cdFx0cmV0dXJuIHJldDtcbi0tXG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaD0xOTM9aW50IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldik7XG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaDoxOTQ6dm9pZCB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KTtcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oLTE5NS12b2lkIHZmaW9fcGNpX2NvcmVfZmluaXNoX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xuLS1cbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oPTIzMT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfYWxpZ25lZF9mb3Jfb3JkZXIoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmgtMjQ0LSAqIGZhaWxlZC4gIFRoaXMgc2hhbGwgb25seSBiZSB1c2VkIGFmdGVyIHZmaW9fcGNpX2NvcmVfZW5hYmxlKClcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oOjI0NTogKiBoYXMgc2V0IHVwIHRoZSBCQVIgbWFwcyBhbmQgYmVmb3JlIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpXG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaC0yNDYtICogdGVhcnMgdGhlbSBkb3duLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NjIKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFZGSU8gRGV2aWNlIENsb3N1cmUgJmFtcDsgT3BlbmluZyBGYWlsdXJlcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJlaGF2aW9yIG9mIFZGSU8gd2hlbiBpdCBlbmNvdW50ZXJzIGEgZmFpbHVyZSBkdXJpbmcgZWl0aGVyIGNsb3Npbmcgb3Igb3BlbmluZyBhIGRldmljZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBjb3JlIGhhbmRsaW5nIHdpdGhpbiB0aGUgVkZJTy1QQ0kgZHJpdmVyLiBUbyBnZXQgc3RhcnRlZCwgSSYjMzk7bSBnb2luZyB0byBwaW5wb2ludCB0aGUgYHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlYCBmdW5jdGlvbi4gSSBrbm93IHRoYXQmIzM5O3MgdGhlIGxpa2VseSBlbnRyeSBwb2ludCBmb3IgZGV2aWNlIGNsb3N1cmUgbG9naWMgd2l0aGluIHRoZSBgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNgIGZpbGUuIFRpbWUgdG8gY3JhY2sgb3BlbiB0aGUgc291cmNlIGNvZGUgYW5kIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QhIEkgbmVlZCB0byBkZXRlcm1pbmUgdGhlIGZhaWx1cmUgY29uZGl0aW9ucyBhbmQgdGhlIGVycm9yIHBhdGhzIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDgxNTpcdFxuIDgxNjpcdHZvaWQgdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gODE3Olx0e1xuIDgxODpcdFx0c3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2ID1cbiA4MTk6XHRcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlLCB2ZGV2KTtcbiA4MjA6XHRcbiA4MjE6XHRcdGlmICh2ZGV2LVx1MDAzZXNyaW92X3BmX2NvcmVfZGV2KSB7XG4gODIyOlx0XHRcdG11dGV4X2xvY2soXHUwMDI2dmRldi1cdTAwM2Vzcmlvdl9wZl9jb3JlX2Rldi1cdTAwM2V2Zl90b2tlbi1cdTAwM2Vsb2NrKTtcbiA4MjM6XHRcdFx0V0FSTl9PTighdmRldi1cdTAwM2Vzcmlvdl9wZl9jb3JlX2Rldi1cdTAwM2V2Zl90b2tlbi1cdTAwM2V1c2Vycyk7XG4gODI0Olx0XHRcdHZkZXYtXHUwMDNlc3Jpb3ZfcGZfY29yZV9kZXYtXHUwMDNldmZfdG9rZW4tXHUwMDNldXNlcnMtLTtcbiA4MjU6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZkZXYtXHUwMDNlc3Jpb3ZfcGZfY29yZV9kZXYtXHUwMDNldmZfdG9rZW4tXHUwMDNlbG9jayk7XG4gODI2Olx0XHR9XG4gODI3Olx0I2lmIElTX0VOQUJMRUQoQ09ORklHX0VFSClcbiA4Mjg6XHRcdGVlaF9kZXZfcmVsZWFzZSh2ZGV2LVx1MDAzZXBkZXYpO1xuIDgyOTpcdCNlbmRpZlxuIDgzMDpcdFx0dmZpb19wY2lfZG1hX2J1Zl9jbGVhbnVwKHZkZXYpO1xuIDgzMTpcdFxuIDgzMjpcdFx0dmZpb19wY2lfY29yZV9kaXNhYmxlKHZkZXYpO1xuIDgzMzpcdFxuIDgzNDpcdFx0bXV0ZXhfbG9jayhcdTAwMjZ2ZGV2LVx1MDAzZWlnYXRlKTtcbiA4MzU6XHRcdHZmaW9fcGNpX2V2ZW50ZmRfcmVwbGFjZV9sb2NrZWQodmRldiwgXHUwMDI2dmRldi1cdTAwM2VlcnJfdHJpZ2dlciwgTlVMTCk7XG4gODM2Olx0XHR2ZmlvX3BjaV9ldmVudGZkX3JlcGxhY2VfbG9ja2VkKHZkZXYsIFx1MDAyNnZkZXYtXHUwMDNlcmVxX3RyaWdnZXIsIE5VTEwpO1xuIDgzNzpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZkZXYtXHUwMDNlaWdhdGUpO1xuIDgzODpcdH1cbiA4Mzk6XHRFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSk7XG4gODQwOlx0XG4gODQxOlx0dm9pZCB2ZmlvX3BjaV9jb3JlX2ZpbmlzaF9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuIDg0MjpcdHtcbiA4NDM6XHRcdHZmaW9fcGNpX3Byb2JlX21tYXBzKHZkZXYpO1xuIDg0NDpcdCNpZiBJU19FTkFCTEVEKENPTkZJR19FRUgpXG4gODQ1Olx0XHRlZWhfZGV2X29wZW4odmRldi1cdTAwM2VwZGV2KTtcbiA4NDY6XHQjZW5kaWZcbiA4NDc6XHRcbiA4NDg6XHRcdGlmICh2ZGV2LVx1MDAzZXNyaW92X3BmX2NvcmVfZGV2KSB7XG4gODQ5Olx0XHRcdG11dGV4X2xvY2soXHUwMDI2dmRldi1cdTAwM2Vzcmlvdl9wZl9jb3JlX2Rldi1cdTAwM2V2Zl90b2tlbi1cdTAwM2Vsb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwODo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODkyCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFZGSU8tUENJIEludmVzdGlnYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QgdGhpbmdzIGZpcnN0OiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIFZGSU8tUENJIGlzIGV2ZW4gKmFjY2Vzc2libGUqIHdpdGhpbiB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIFFFTVUgVk0gc2V0dXAuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBIb2xkIG9uLCB0aG91Z2guIERvZXMgYSBzdGFuZGFyZCBRRU1VIFZNIGV2ZW4gaGF2ZSBQQ0kgZGV2aWNlcyByZWFkaWx5IGF2YWlsYWJsZSB0aGF0ICpjb3VsZCogYmUgYm91bmQgdG8gdmZpby1wY2ksIG9yIGRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpmdXp6KiB2ZmlvLXBjaSBpdHNlbGY/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuCgpSaWdodCwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgYXBwcm9hY2ggdGhpcyBzeXN0ZW1hdGljYWxseS4gSSBzaG91bGQgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHN5emthbGxlciYjMzk7cyBjb3ZlcmFnZSByZXBvcnRzLCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kLCBvZiBjb3Vyc2UsIHRoZSBkZXZpY2UgZHJpdmVycy4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGJlc3Qgb3ZlcnZpZXcuCgpXYWl0IGEgc2Vjb25kLiBWRklPLVBDSSBpc24mIzM5O3QgbGltaXRlZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4gSXQgY2FuIGJlIGJvdW5kIHRvICphbnkqIFBDSSBkZXZpY2Ug4oCTIGV2ZW4gdGhlIHZpcnR1YWwgb25lcyBRRU1VIGVtdWxhdGVzIGxpa2UgZTEwMDAgb3IgdmlydGlvLXBjaSwgb3IgdGhvc2UgaGFuZGxlZCB0aHJvdWdoIGR5bmFtaWMgdW5iaW5kaW5nIGFuZCBiaW5kaW5nIHZpYSBzeXNmcyBvciB0aGUgYGRyaXZlcl9vdmVycmlkZWAgbWVjaGFuaXNtIHdpdGhpbiB0aGUgdmZpby1wY2kgZHJpdmVyLiBUaGF0IG9wZW5zIHVwIGEgcmFuZ2Ugb2YgcG9zc2liaWxpdGllcy4KCk5vdywgYSBrZXkgcXVlc3Rpb246IGNhbiB1c2Vyc3BhY2UgYWN0dWFsbHkgb3BlbiBhIFZGSU8gY29udGFpbmVyLCBncm91cCwgb3IgZGV2aWNlIGluIHRoaXMgY29udGV4dD8gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBwb2ludCBmb3IgYSBmdXp6ZXIsIGFuZCB0aGUgb25lIEkgbmVlZCB0byBmb2N1cyBvbi4KCk9rYXksIEkgbmVlZCB0byBzZWUgaWYgc3l6a2FsbGVyIGhhcyBkZXNjcmlwdGlvbnMgZm9yIHZmaW86IHRpbWUgdG8gZXhhbWluZSB0aG9zZS4KCk9uZSBsYXN0IHRoaW5nLCBiZWZvcmUgSSBkaWcgdG9vIGRlZXAsIEkgc2hvdWxkIGNoZWNrIHRoZSBgVkZJT19QQ0lfQ09SRWAgYW5kIGBWRklPX1BDSWAgS2NvbmZpZyBvcHRpb25zIGFuZCBzZWUgaG93IHRoZXkgYXJlIGFjdHVhbGx5IHVzZWQuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgZW5hYmxlZCBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX1BDSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9Mj1tZW51IFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgUENJIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNC1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo1OmNvbmZpZyBWRklPX1BDSV9DT1JFXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTktXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MTA6Y29uZmlnIFZGSU9fUENJX0lOVFhcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0xMS1cdGRlZl9ib29sIHkgaWYgIVMzOTBcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTMtXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MTQ6Y29uZmlnIFZGSU9fUENJXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFZGSU8gc3VwcG9ydCBmb3IgYW55IFBDSSBkZXZpY2VcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9MjM9aWYgVkZJT19QQ0lcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoyNDpjb25maWcgVkZJT19QQ0lfVkdBXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMjUtXHRib29sIFwmIzM0O0dlbmVyaWMgVkZJTyBQQ0kgc3VwcG9ydCBmb3IgVkdBIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMzMtXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MzQ6Y29uZmlnIFZGSU9fUENJX0lHRFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTM1LVx0Ym9vbCBcJiMzNDtHZW5lcmljIFZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIEludGVsIGdyYXBoaWNzIChHVlQtZClcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00Ni1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXCYjMzQ7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTU3LVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjU4OmNvbmZpZyBWRklPX1BDSV9ETUFCVUZcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy01OS1cdGRlZl9ib29sIHkgaWYgVkZJT19QQ0lfQ09SRSBcdTAwMjZcdTAwMjYgUENJX1AyUERNQSBcdTAwMjZcdTAwMjYgRE1BX1NIQVJFRF9CVUZGRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAxOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgVkZJTyBQQ0kgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBWRklPIFBDSSBzZXR1cC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byBgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhhdCBwYXJ0aWN1bGFyIGRyaXZlciBhcmUgZGVmaW5lZCwgdGhlIHRoaW5ncyB0aGF0IGNvbnRyb2wgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCBob3cgdGhlIG1vZHVsZSB3aWxsIGJlaGF2ZS4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBWRklPIFBDSSBkcml2ZXIgaXMgYnVpbHQgYW5kIGNvbmZpZ3VyZWQuIEkmIzM5O20gaG9waW5nIEkgY2FuIGdsZWFuIHdoYXQgSSBuZWVkIHF1aWNrbHkgZnJvbSB0aGVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIFBDSSBkZXZpY2VzXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBWRklPX1BDSV9DT1JFXG4gICA2Olx0XHR0cmlzdGF0ZVxuICAgNzpcdFx0c2VsZWN0IFZGSU9fVklSUUZEXG4gICA4Olx0XHRzZWxlY3QgSVJRX0JZUEFTU19NQU5BR0VSXG4gICA5Olx0XG4gIDEwOlx0Y29uZmlnIFZGSU9fUENJX0lOVFhcbiAgMTE6XHRcdGRlZl9ib29sIHkgaWYgIVMzOTBcbiAgMTI6XHRcdGRlcGVuZHMgb24gVkZJT19QQ0lfQ09SRVxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBWRklPX1BDSVxuICAxNTpcdFx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBWRklPIHN1cHBvcnQgZm9yIGFueSBQQ0kgZGV2aWNlXCYjMzQ7XG4gIDE2Olx0XHRzZWxlY3QgVkZJT19QQ0lfQ09SRVxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBTdXBwb3J0IGZvciB0aGUgZ2VuZXJpYyBQQ0kgVkZJTyBidXMgZHJpdmVyIHdoaWNoIGNhbiBjb25uZWN0IGFueVxuICAxOTpcdFx0ICBQQ0kgZGV2aWNlIHRvIHRoZSBWRklPIGZyYW1ld29yay5cbiAgMjA6XHRcbiAgMjE6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXG4gIDIyOlx0XG4gIDIzOlx0aWYgVkZJT19QQ0lcbiAgMjQ6XHRjb25maWcgVkZJT19QQ0lfVkdBXG4gIDI1Olx0XHRib29sIFwmIzM0O0dlbmVyaWMgVkZJTyBQQ0kgc3VwcG9ydCBmb3IgVkdBIGRldmljZXNcJiMzNDtcbiAgMjY6XHRcdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiBWR0FfQVJCXG4gIDI3Olx0XHRoZWxwXG4gIDI4Olx0XHQgIFN1cHBvcnQgZm9yIFZHQSBleHRlbnNpb24gdG8gVkZJTyBQQ0kuICBUaGlzIGV4cG9zZXMgYW4gYWRkaXRpb25hbFxuICAyOTpcdFx0ICByZWdpb24gb24gVkdBIGRldmljZXMgZm9yIGFjY2Vzc2luZyBsZWdhY3kgVkdBIGFkZHJlc3NlcyB1c2VkIGJ5XG4gIDMwOlx0XHQgIEJJT1MgYW5kIGdlbmVyaWMgdmlkZW8gZHJpdmVycy5cbiAgMzE6XHRcbiAgMzI6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXG4gIDMzOlx0XG4gIDM0Olx0Y29uZmlnIFZGSU9fUENJX0lHRFxuICAzNTpcdFx0Ym9vbCBcJiMzNDtHZW5lcmljIFZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIEludGVsIGdyYXBoaWNzIChHVlQtZClcJiMzNDtcbiAgMzY6XHRcdGRlcGVuZHMgb24gWDg2XG4gIDM3Olx0XHRkZWZhdWx0IHlcbiAgMzg6XHRcdGhlbHBcbiAgMzk6XHRcdCAgU3VwcG9ydCBmb3IgSW50ZWwgSUdEIHNwZWNpZmljIGV4dGVuc2lvbnMgdG8gZW5hYmxlIGRpcmVjdFxuICA0MDpcdFx0ICBhc3NpZ25tZW50IHRvIHZpcnR1YWwgbWFjaGluZXMuICBUaGlzIGluY2x1ZGVzIGV4cG9zaW5nIGFuIElHRFxuICA0MTpcdFx0ICBzcGVjaWZpYyBmaXJtd2FyZSB0YWJsZSBhbmQgcmVhZC1vbmx5IGNvcGllcyBvZiB0aGUgaG9zdCBicmlkZ2VcbiAgNDI6XHRcdCAgYW5kIExQQyBicmlkZ2UgY29uZmlnIHNwYWNlLlxuICA0MzpcdFxuICA0NDpcdFx0ICBUbyBlbmFibGUgSW50ZWwgSUdEIGFzc2lnbm1lbnQgdGhyb3VnaCB2ZmlvLXBjaSwgc2F5IFkuXG4gIDQ1Olx0ZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgwNwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDEwNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVkZJTy1QQ0kgRHJpdmVyIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBjb21taXQgdGhhdCBtb2RpZmllcyB0aGUgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgZnVuY3Rpb24gd2l0aGluIHRoZSBWRklPLVBDSSBkcml2ZXIuIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZXBsYWNlbWVudCBvZiBhIGNvbmRpdGlvbmFsIGBwY2lfZGV2X3RyeWxvY2soYnJpZGdlKWAgd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGBwY2lfZGV2X2xvY2soYnJpZGdlKWAuIFRoZSBvbGQgY29kZSBoYWQgYSBgZ290byBvdXRfcmVzdG9yZV9zdGF0ZWAgaWYgdGhlIGJyaWRnZSBsb2NrIGNvdWxkbiYjMzk7dCBiZSBhY3F1aXJlZCwgYnV0IG5vdyBpdCB1bmNvbmRpdGlvbmFsbHkgYWNxdWlyZXMgdGhlIGxvY2suIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBhIHBvdGVudGlhbGx5IHJpc2t5IGNoYW5nZS4gVW5jb25kaXRpb25hbCBsb2NraW5nIGxpa2UgdGhpcyBjb3VsZCBlYXNpbHkgbGVhZCB0byBsb2NrIGludmVyc2lvbiwgZGVhZGxvY2tzLCBvciBhdCB0aGUgdmVyeSBsZWFzdCwgbG9ja2RlcCB3YXJuaW5ncywgZXNwZWNpYWxseSBkdXJpbmcgZGV2aWNlIGRpc2FibGUgb3IgY2xvc2Ugb3BlcmF0aW9ucyB3aGVyZSBsb2NraW5nIG9yZGVyIGNhbiBiZSBjcml0aWNhbC4gVGhpcyBhbHNvIHBvdGVudGlhbGx5IGFmZmVjdHMgZG93bnN0cmVhbSBkZXZpY2UgcmVzZXRzLgoKVGhlIGNvbW1lbnQgYWJvdmUgdGhlIGNoYW5nZSBzdWdnZXN0cyBhbiBhdHRlbXB0IHRvIHByZXZlbnQgZGVhZGxvY2tzLCBidXQgYXQgd2hhdCBjb3N0PyBUaGlzIGtpbmQgb2YgYmxhbmtldCBsb2NraW5nIGNhbiBiZSBhIHZlcnkgYmx1bnQgaW5zdHJ1bWVudC4gV2UgbmVlZCB0byBiZSBjYXJlZnVsLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGNvZGUgaXMgZXZlbiByZWFjaGFibGUuIFRoZSBjb250ZXh0IGhlcmUgaXMgVkZJTywgc28gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiBUaGUgZG9jdW1lbnRhdGlvbiBzYXlzIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGxpa2UgYC5yZW1vdmVgIGFuZCBgLnNodXRkb3duYCkgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLiBJcyB0aGF0IHdoYXQmIzM5O3MgaGFwcGVuaW5nIGhlcmU/IE5vLCBsZXQmIzM5O3MgZG91YmxlIGNoZWNrLgoKSXQgbG9va3MgbGlrZSBJIHdhcyB3cm9uZy4gTGV0IG1lIHJldmlldyB0aGUgY2FsbCBzaXRlczogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhIFZGSU8gZGV2aWNlIEZEIG9yIFZGSU8gY29udGFpbmVyIGlzIGNsb3NlZCBieSB1c2Vyc3BhY2UgdmlhIGAvZGV2L3ZmaW8vLi4uYCBhbmQgcmVsYXRlZCBJT0NUTHMuIFNvIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgY2xlYW51cCB3aGVuIHVzZXJzcGFjZSBpcyBkb25lIHdpdGggdGhlIGRldmljZS4gVGhpcyBpcyBhIGNyaXRpY2FsIGNvZGUgcGF0aCEgVGhpcyBjaGFuZ2VzIGV2ZXJ5dGhpbmcuCgpPaywgbm93IEkgaGF2ZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nOiBDbG9zaW5nIHRoZSBWRklPIGRldmljZSBpcyB0aGUgcHJpbWFyeSBwYXRoIHRvIGNhbGwgdGhpcyBmdW5jdGlvbi4gVGhpcyBtZWFucyB0aGF0IHRoaXMgdW5jb25kaXRpb25hbCBsb2NraW5nIGNvdWxkIHBvdGVudGlhbGx5IGJsb2NrIHRoZSBkZXZpY2UgY2xvc2UsIHdoaWNoIHdvdWxkIGJlIHJlYWxseSBiYWQuIEl0IGFmZmVjdHMgdGhlIGNvcmUgdXNlciBleHBlcmllbmNlLCBtYWtpbmcgdXNlcnNwYWNlIG9wZXJhdGlvbnMgbGVzcyByZWxpYWJsZS4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGxvY2tpbmcgaGllcmFyY2h5IHRvIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCByaXNrcyBoZXJlIGFuZCB2ZXJpZnkgdGhlcmUgaXNuJiMzOTt0IGEgZGVhZGxvY2sgc2NlbmFyaW8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Nsb3NlX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yOD1zdGF0aWMgaW50IHZmaW9fY2R4X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTczLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6NzQ6c3RhdGljIHZvaWQgdmZpb19jZHhfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtNzUte1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI5MT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2NkeF9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjk1LVx0Lm9wZW5fZGV2aWNlXHQ9IHZmaW9fY2R4X29wZW5fZGV2aWNlLFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6Mjk2Olx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX2NkeF9jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yOTctXHQuaW9jdGxcdFx0PSB2ZmlvX2NkeF9pb2N0bCxcbi0tXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYz05Mj1sb25nIHZmaW9fZGZfaW9jdGxfYmluZF9pb21tdWZkKHN0cnVjdCB2ZmlvX2RldmljZV9maWxlICpkZixcbi0tXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYy0xNTgtXHRpZiAocmV0KVxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmM6MTU5Olx0XHRnb3RvIG91dF9jbG9zZV9kZXZpY2U7XG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYy0xNjAtXG4tLVxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmMtMTY5LVxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmM6MTcwOm91dF9jbG9zZV9kZXZpY2U6XG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYy0xNzEtXHR2ZmlvX2RmX2Nsb3NlKGRmKTtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9Njg9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19yZXNldF9kZXZpY2Uoc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtOTYtXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6OTc6c3RhdGljIHZvaWQgdmZpb19mc2xfbWNfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTk4LXtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NTc1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fZnNsX21jX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTc5LVx0Lm9wZW5fZGV2aWNlXHQ9IHZmaW9fZnNsX21jX29wZW5fZGV2aWNlLFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjU4MDpcdC5jbG9zZV9kZXZpY2VcdD0gdmZpb19mc2xfbWNfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTU4MS1cdC5pb2N0bFx0XHQ9IHZmaW9fZnNsX21jX2lvY3RsLFxuLS1cbmRyaXZlcnMvdmZpby9ncm91cC5jPTE3MD1zdGF0aWMgaW50IHZmaW9fZGZfZ3JvdXBfb3BlbihzdHJ1Y3QgdmZpb19kZXZpY2VfZmlsZSAqZGYpXG4tLVxuZHJpdmVycy92ZmlvL2dyb3VwLmMtMjEyLVx0XHRpZiAocmV0KVxuZHJpdmVycy92ZmlvL2dyb3VwLmM6MjEzOlx0XHRcdGdvdG8gb3V0X2Nsb3NlX2RldmljZTtcbmRyaXZlcnMvdmZpby9ncm91cC5jLTIxNC1cdH1cbi0tXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yMjUtXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYzoyMjY6b3V0X2Nsb3NlX2RldmljZTpcbmRyaXZlcnMvdmZpby9ncm91cC5jLTIyNy1cdHZmaW9fZGZfY2xvc2UoZGYpO1xuLS1cbmRyaXZlcnMvdmZpby9ncm91cC5jPTI1NT1zdGF0aWMgc3RydWN0IGZpbGUgKnZmaW9fZGV2aWNlX29wZW5fZmlsZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSlcbi0tXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yNzYtXHRcdHJldCA9IFBUUl9FUlIoZmlsZXApO1xuZHJpdmVycy92ZmlvL2dyb3VwLmM6Mjc3Olx0XHRnb3RvIGVycl9jbG9zZV9kZXZpY2U7XG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yNzgtXHR9XG4tLVxuZHJpdmVycy92ZmlvL2dyb3VwLmMtMjk0LVxuZHJpdmVycy92ZmlvL2dyb3VwLmM6Mjk1OmVycl9jbG9zZV9kZXZpY2U6XG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yOTYtXHR2ZmlvX2RmX2dyb3VwX2Nsb3NlKGRmKTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE1MTQ9c3RhdGljIGludCBoaXNpX2FjY192ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1NDEtXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1NDI6c3RhdGljIHZvaWQgaGlzaV9hY2NfdmZpb19wY2lfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTQzLXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1NTItXHRtdXRleF91bmxvY2soXHUwMDI2aGlzaV9hY2NfdmRldi1cdTAwM2VvcGVuX211dGV4KTtcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTU1MzpcdHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKGNvcmVfdmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1NTQtfVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTU4MT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBoaXNpX2FjY192ZmlvX3BjaV9taWdybl9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg1LVx0Lm9wZW5fZGV2aWNlID0gaGlzaV9hY2NfdmZpb19wY2lfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1ODY6XHQuY2xvc2VfZGV2aWNlID0gaGlzaV9hY2NfdmZpb19wY2lfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg3LVx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE2MDI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYwNi1cdC5vcGVuX2RldmljZSA9IGhpc2lfYWNjX3ZmaW9fcGNpX29wZW5fZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxNjA3Olx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNjA4LVx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM9MzM1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIGlzbV9wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zMzktXHQub3Blbl9kZXZpY2UgPSBpc21fdmZpb19wY2lfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM6MzQwOlx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTM0MS1cdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYz0xMzIzPXN0YXRpYyBpbnQgbWx4NXZmX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzMzktXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjEzNDA6c3RhdGljIHZvaWQgbWx4NXZmX3BjaV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzNDEte1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTM0NS1cdG1seDV2Zl9jbWRfY2xvc2VfbWlncmF0YWJsZShtdmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjEzNDY6XHR2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZShjb3JlX3ZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzQ3LX1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jPTEzODY9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgbWx4NXZmX3BjaV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzkwLVx0Lm9wZW5fZGV2aWNlID0gbWx4NXZmX3BjaV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM6MTM5MTpcdC5jbG9zZV9kZXZpY2UgPSBtbHg1dmZfcGNpX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTM5Mi1cdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTczPXN0YXRpYyBpbnQgbnZncmFjZV9ncHVfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMjI1LVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6MjI2OnN0YXRpYyB2b2lkIG52Z3JhY2VfZ3B1X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTIyNy17XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMjUyLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6MjUzOlx0dmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UoY29yZV92ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTI1NC19XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwNjgtXHQub3Blbl9kZXZpY2VcdD0gbnZncmFjZV9ncHVfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxMDY5Olx0LmNsb3NlX2RldmljZVx0PSBudmdyYWNlX2dwdV9jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xMDcwLVx0LmlvY3RsXHRcdD0gbnZncmFjZV9ncHVfaW9jdGwsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfY29yZV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA5My1cdC5vcGVuX2RldmljZVx0PSBudmdyYWNlX2dwdV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjEwOTQ6XHQuY2xvc2VfZGV2aWNlXHQ9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA5NS1cdC5pb2N0bFx0XHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYz0xNTk9c3RhdGljIGludCBwZHNfdmZpb19vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xNzYtXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jOjE3NzpzdGF0aWMgdm9pZCBwZHNfdmZpb19jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xNzgte1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMTg3LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBkc192ZmlvLVx1MDAzZXN0YXRlX211dGV4KTtcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM6MTg4Olx0dmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UodmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jLTE4OS19XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYz0xOTE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgcGRzX3ZmaW9fb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMTk1LVx0Lm9wZW5fZGV2aWNlID0gcGRzX3ZmaW9fb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jOjE5NjpcdC5jbG9zZV9kZXZpY2UgPSBwZHNfdmZpb19jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jLTE5Ny1cdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jPTkxPXN0YXRpYyB2b2lkIHFhdF92Zl9kaXNhYmxlX2ZkcyhzdHJ1Y3QgcWF0X3ZmX2NvcmVfZGV2aWNlICpxYXRfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtMTA1LVxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjEwNjpzdGF0aWMgdm9pZCBxYXRfdmZfcGNpX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy0xMDcte1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy0xMTItXHRxYXRfdmZfZGlzYWJsZV9mZHMocWF0X3ZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjExMzpcdHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKGNvcmVfdmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtMTE0LX1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmM9NjA0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHFhdF92Zl9wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy02MDgtXHQub3Blbl9kZXZpY2UgPSBxYXRfdmZfcGNpX29wZW5fZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjYwOTpcdC5jbG9zZV9kZXZpY2UgPSBxYXRfdmZfcGNpX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy02MTAtXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz0xNDk9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTMtXHQub3Blbl9kZXZpY2VcdD0gdmZpb19wY2lfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM6MTU0Olx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTUtXHQuaW9jdGxcdFx0PSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTU5MD1pbnQgdmZpb19wY2lfY29yZV9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTY2OC1vdXRfZnJlZV96ZGV2OlxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NjY5Olx0dmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2UodmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy02NzAtb3V0X2ZyZWVfc3RhdGU6XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NjgyPXZvaWQgdmZpb19wY2lfY29yZV9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy03NjAtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo3NjE6XHR2ZmlvX3BjaV96ZGV2X2Nsb3NlX2RldmljZSh2ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTc2Mi1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz04MTQ9RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9kaXNhYmxlKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTgxNS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjgxNjp2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtODE3LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MzgtfVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6ODM5OkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTg0MC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaD05ND1pbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg6OTU6dm9pZCB2ZmlvX3BjaV96ZGV2X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtOTYtaW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9lcnIoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UsIHUzMiBmbGFncyxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaD0xMDU9c3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtMTA5LVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg6MTEwOnN0YXRpYyBpbmxpbmUgdm9pZCB2ZmlvX3BjaV96ZGV2X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaC0xMTEte31cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYz0xODQ9aW50IHZmaW9fcGNpX3pkZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jLTIwNi1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jOjIwNzp2b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jLTIwOC17XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmM9MzE2PWludCB2aXJ0aW92Zl9vcGVuX2xlZ2FjeV9pbyhzdHJ1Y3QgdmlydGlvdmZfcGNpX2NvcmVfZGV2aWNlICp2aXJ0dmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYy0zMjEtXHQvKlxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmM6MzIyOlx0ICogVXBvbiBjbG9zZV9kZXZpY2UoKSB0aGUgdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgaXMgY2FsbGVkXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYy0zMjMtXHQgKiBhbmQgd2lsbCBjbG9zZSBhbGwgdGhlIHByZXZpb3VzIG1tYXBzLCBzbyBpdCBzZWVtcyB0aGF0IHRoZVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0yMT1zdGF0aWMgaW50IHZpcnRpb3ZmX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtNDQtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6NDU6c3RhdGljIHZvaWQgdmlydGlvdmZfcGNpX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy00Ni17XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTUwLVx0dmlydGlvdmZfY2xvc2VfbWlncmF0aW9uKHZpcnR2ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzo1MTpcdHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKGNvcmVfdmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtNTItfVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz04ND1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2aXJ0aW92Zl92ZmlvX3BjaV9sbV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTg4LVx0Lm9wZW5fZGV2aWNlID0gdmlydGlvdmZfcGNpX29wZW5fZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjg5Olx0LmNsb3NlX2RldmljZSA9IHZpcnRpb3ZmX3BjaV9jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtOTAtXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0xMDY9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmlydGlvdmZfdmZpb19wY2lfdHJhbl9sbV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTExMC1cdC5vcGVuX2RldmljZSA9IHZpcnRpb3ZmX3BjaV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzoxMTE6XHQuY2xvc2VfZGV2aWNlID0gdmlydGlvdmZfcGNpX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMTItXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0xMjg9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmlydGlvdmZfdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMzItXHQub3Blbl9kZXZpY2UgPSB2aXJ0aW92Zl9wY2lfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MTMzOlx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTEzNC1cdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM9MTQ2PXN0YXRpYyBpbnQgeGVfdmZpb19wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtMTYzLVxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM6MTY0OnN0YXRpYyB2b2lkIHhlX3ZmaW9fcGNpX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE2NS17XG4tLVxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtMTcxLVx0eGVfdmZpb19wY2lfc3RhdGVfbXV0ZXhfdW5sb2NrKHhlX3ZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM6MTcyOlx0dmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UoY29yZV92ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE3My19XG4tLVxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM9NTIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHhlX3ZmaW9fcGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYy01MjYtXHQub3Blbl9kZXZpY2UgPSB4ZV92ZmlvX3BjaV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jOjUyNzpcdC5jbG9zZV9kZXZpY2UgPSB4ZV92ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYy01MjgtXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19hbWJhX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTE1LVx0Lm9wZW5fZGV2aWNlXHQ9IHZmaW9fcGxhdGZvcm1fb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MTE2Olx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0xMTctXHQuaW9jdGxcdFx0PSB2ZmlvX3BsYXRmb3JtX2lvY3RsLFxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM9OTc9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19wbGF0Zm9ybV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy0xMDEtXHQub3Blbl9kZXZpY2VcdD0gdmZpb19wbGF0Zm9ybV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTAyOlx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMTAzLVx0LmlvY3RsXHRcdD0gdmZpb19wbGF0Zm9ybV9pb2N0bCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYz0yMDI9c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX2NhbGxfcmVzZXQoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIxNi1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIxNzp2b2lkIHZmaW9fcGxhdGZvcm1fY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjE4LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMzQtfVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjM1OkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fY2xvc2VfZGV2aWNlKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIzNi1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9wcml2YXRlLmg9ODQ9aW50IHZmaW9fcGxhdGZvcm1fb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oOjg1OnZvaWQgdmZpb19wbGF0Zm9ybV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oLTg2LWxvbmcgdmZpb19wbGF0Zm9ybV9pb2N0bChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19tYWluLmM9NTA3PXZvaWQgdmZpb19kZXZpY2VfcHV0X2t2bShzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSlcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19tYWluLmMtNTI1LVxuZHJpdmVycy92ZmlvL3ZmaW9fbWFpbi5jOjUyNjovKiB0cnVlIGlmIHRoZSB2ZmlvX2RldmljZSBoYXMgb3Blbl9kZXZpY2UoKSBjYWxsZWQgYnV0IG5vdCBjbG9zZV9kZXZpY2UoKSAqL1xuZHJpdmVycy92ZmlvL3ZmaW9fbWFpbi5jLTUyNy1zdGF0aWMgYm9vbCB2ZmlvX2Fzc2VydF9kZXZpY2Vfb3BlbihzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSlcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19tYWluLmM9NTgyPXN0YXRpYyB2b2lkIHZmaW9fZGZfZGV2aWNlX2xhc3RfY2xvc2Uoc3RydWN0IHZmaW9fZGV2aWNlX2ZpbGUgKmRmKVxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX21haW4uYy01ODgtXG5kcml2ZXJzL3ZmaW8vdmZpb19tYWluLmM6NTg5Olx0aWYgKGRldmljZS1cdTAwM2VvcHMtXHUwMDNlY2xvc2VfZGV2aWNlKVxuZHJpdmVycy92ZmlvL3ZmaW9fbWFpbi5jOjU5MDpcdFx0ZGV2aWNlLVx1MDAzZW9wcy1cdTAwM2VjbG9zZV9kZXZpY2UoZGV2aWNlKTtcbmRyaXZlcnMvdmZpby92ZmlvX21haW4uYy01OTEtXHRpZiAoaW9tbXVmZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcyOTAKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA4NjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogRnV6emluZyBQb3RlbnRpYWwgLSBIaWdoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IHRoZSBjaGFuZ2VzIGFyb3VuZCBgdmZpb19wY2lfY29yZV9kaXNhYmxlYCwgaXMgd29ydGggZnV6emluZy4gVGhlIHBhdGNoIGlzIHRvdWNoZWQgYnkgYGNsb3NlX2RldmljZWAgKHdoZW4gdGhlIGRldmljZSBGRCBpcyBjbG9zZWQgaW4gdXNlcnNwYWNlKSBvciB3aGVuIG9wZW5pbmcgZmFpbHMuCgpGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgVkZJTy9WRklPX1BDSSBpcyBldmVuIGEgdmlhYmxlIHRhcmdldC4gQ2FuIHN5emthbGxlciBpbnRlcmFjdCB3aXRoIHRoZXNlIGRldmljZXM/IFllcywgYWJzb2x1dGVseS4gV2UgY2FuIGFjY2VzcyBWRklPIGRldmljZXMgdGhyb3VnaCBgL2Rldi92ZmlvLypgLCBgL2Rldi92ZmlvL2RldmljZXMvdmZpbypgLCBvciBgL2Rldi9pb21tdWZkYCwgYW5kIHN0YW5kYXJkIFFFTVUgVk1zIG1ha2UgdGhpcyBlYXN5IHdpdGggdmlydHVhbCBQQ0kgZGV2aWNlcy4gR29vZCwgdGhhdCYjMzk7cyBhIHBvc2l0aXZlIHN0YXJ0LgoKVGhlIHBhdGNoJiMzOTtzIGFjdHVhbCBtb2RpZmljYXRpb24gb2YgdGhlIGxvY2tpbmcgYmVoYXZpb3Igb2YgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgaXMgdGhlIGNvcmUuIEl0IHN3aXRjaGVzIGZyb20gYSBgdHJ5bG9ja2AgYXBwcm9hY2ggdG8gYSBndWFyYW50ZWVkIGBsb2NrYCB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgYnJpZGdlIGRldmljZSwgd2hpY2ggaXMgYSBzdWJ0bGUsIHlldCBwb3RlbnRpYWxseSBpbXBvcnRhbnQgY2hhbmdlIGluIHN5bmNocm9uaXphdGlvbi4KCk5vdywgbGV0JiMzOTtzIGNvbnN1bHQgdGhlIGNyaXRlcmlhLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIGJlaGF2aW9yLCB3aGljaCBmYWxscyB1bmRlciB0aGUgJiMzNDtDb3JlIFN1YnN5c3RlbXMmIzM0OyBjYXRlZ29yeS4gVGhpcyBpcyBhIHZlcnkgc3Ryb25nIHBvc2l0aXZlLiBUaGUgZmFjdCB0aGF0IHRoZSBjaGFuZ2VzIHJlc3RydWN0dXJlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzIGFsc28gbWFrZSB0aGUgcGF0Y2ggaW50ZXJlc3RpbmcuCgpUbyBiZSBzdXJlLCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgbmVnYXRpdmUgY3JpdGVyaWEuIFRoaXMgY29kZSBpcyAqbm90KiB2ZW5kb3Itc3BlY2lmaWMgb3IgdGllZCB0byBoYXJkd2FyZSB0aGF0JiMzOTtzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2VkIGZ1bmN0aW9uIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGlzIGluIHRoZSBgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNgIGFuZCBpcyBnZW5lcmljIFZGSU8gUENJIGNvcmUgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYnkgUUVNVSwgbm90IGEgc3BlY2lhbCBkcml2ZXIgcmVxdWlyaW5nIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlLiBUaGlzIGlzIGdlbmVyaWMgUENJIGRldmljZXMgbWFuYWdlZCBieSBgdmZpby1wY2lgICh3aGljaCBjYW4gYmUgYW55IFBDSSBkZXZpY2UgaW4gUUVNVSwgZS5nLiB2aXJ0aW8tcGNpLCBldGMuKS4gVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGV4ZWN1dGVkIGR1cmluZyB0aGUgbm9ybWFsIGRldmljZSBsaWZlY3ljbGUsIGVpdGhlciBieSBjbG9zaW5nIHRoZSBkZXZpY2UsIGZkIGNsb3NlIG9yIHJlbGVhc2UsIG9yIGVycm9yIGhhbmRsaW5nLiBTbywgaXQmIzM5O3Mgbm90IGEgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrIHRyaWdnZXJlZCBvbmx5IGJ5IFBDSSBob3QtdW5wbHVnLgoKVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBwYXJ0aWN1bGFybHkgdGVsbGluZzogSSBzZWUgdGhhdCBgdmZpb19wY2lfY29yZV9kaXNhYmxlYCBpdHNlbGYgaXMgZGlyZWN0bHkgbW9kaWZpZWQuIGB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZWAgYW5kIGB2ZmlvX3BjaV9vcGVuX2RldmljZWAgYXJlIGFsc28gcmVsZXZhbnQgYmVjYXVzZSB0aGV5IGNhbGwgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgZGlyZWN0bHksIGluZGljYXRpbmcgYSBkaXJlY3QgZW50cnkgcG9pbnQuIFRoaXMgY29uZmlybXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIHRoZSBmb2N1cyBvZiB0aGVzZSBjaGFuZ2VzIGFuZCB3aWxsIGJlIHBhcnQgb2YgZnV6emluZy4KCkkmIzM5O2xsIGNoZWNrIGB2ZmlvX3BjaV9jb3JlLmNgIGFyb3VuZCBgdmZpb19wY2lfY29yZV9kaXNhYmxlYCBmb3IgYW55IGFkZGl0aW9uYWwgY29udGV4dCBvciBvdGhlciBpbnRlcmVzdGluZyBwYXRocy4gSG93ZXZlciwgYmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIEkgaGF2ZSBub3csIHRoaXMgaXMgYSBkZWZpbml0ZSAmIzM0O2dvJiMzNDsgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc4MDpcdFx0ICogZHVyaW5nIHJlc2V0LiAgU3RvbGVuIGZyb20gcGNpX3Jlc2V0X2Z1bmN0aW9uKClcbiA3ODE6XHRcdCAqL1xuIDc4MjpcdFx0cGNpX3dyaXRlX2NvbmZpZ193b3JkKHBkZXYsIFBDSV9DT01NQU5ELCBQQ0lfQ09NTUFORF9JTlRYX0RJU0FCTEUpO1xuIDc4MzpcdFxuIDc4NDpcdFx0LypcbiA3ODU6XHRcdCAqIFRyeSB0byBnZXQgdGhlIGxvY2tzIG91cnNlbHZlcyB0byBwcmV2ZW50IGEgZGVhZGxvY2suIFRoZVxuIDc4NjpcdFx0ICogc3VjY2VzcyBvZiB0aGlzIGlzIGRlcGVuZGVudCBvbiBiZWluZyBhYmxlIHRvIGxvY2sgdGhlIGRldmljZSxcbiA3ODc6XHRcdCAqIHdoaWNoIGlzIG5vdCBhbHdheXMgcG9zc2libGUuXG4gNzg4Olx0XHQgKiBXZSBjYW4gbm90IHVzZSB0aGUgXCYjMzQ7dHJ5XCYjMzQ7IHJlc2V0IGludGVyZmFjZSBoZXJlLCB3aGljaCB3aWxsXG4gNzg5Olx0XHQgKiBvdmVyd3JpdGUgdGhlIHByZXZpb3VzbHkgcmVzdG9yZWQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cbiA3OTA6XHRcdCAqL1xuIDc5MTpcdFx0aWYgKHZkZXYtXHUwMDNlcmVzZXRfd29ya3MpIHtcbiA3OTI6XHRcdFx0YnJpZGdlID0gcGNpX3Vwc3RyZWFtX2JyaWRnZShwZGV2KTtcbiA3OTM6XHRcdFx0aWYgKGJyaWRnZSlcbiA3OTQ6XHRcdFx0XHRwY2lfZGV2X2xvY2soYnJpZGdlKTtcbiA3OTU6XHRcdFx0aWYgKHBjaV9kZXZfdHJ5bG9jayhwZGV2KSkge1xuIDc5NjpcdFx0XHRcdGlmICghX19wY2lfcmVzZXRfZnVuY3Rpb25fbG9ja2VkKHBkZXYpKVxuIDc5NzpcdFx0XHRcdFx0dmRldi1cdTAwM2VuZWVkc19yZXNldCA9IGZhbHNlO1xuIDc5ODpcdFx0XHRcdHBjaV9kZXZfdW5sb2NrKHBkZXYpO1xuIDc5OTpcdFx0XHR9XG4gODAwOlx0XHRcdGlmIChicmlkZ2UpXG4gODAxOlx0XHRcdFx0cGNpX2Rldl91bmxvY2soYnJpZGdlKTtcbiA4MDI6XHRcdH1cbiA4MDM6XHRcbiA4MDQ6XHRcdHBjaV9yZXN0b3JlX3N0YXRlKHBkZXYpO1xuIDgwNTpcdG91dDpcbiA4MDY6XHRcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcbiA4MDc6XHRcbiA4MDg6XHRcdHZmaW9fcGNpX2Rldl9zZXRfdHJ5X3Jlc2V0KHZkZXYtXHUwMDNldmRldi5kZXZfc2V0KTtcbiA4MDk6XHRcbiA4MTA6XHRcdC8qIFB1dCB0aGUgcG0tcnVudGltZSB1c2FnZSBjb3VudGVyIGFjcXVpcmVkIGR1cmluZyBlbmFibGUgKi9cbiA4MTE6XHRcdGlmICghdmRldi1cdTAwM2VkaXNhYmxlX2lkbGVfZDMpXG4gODEyOlx0XHRcdHBtX3J1bnRpbWVfcHV0KFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiA4MTM6XHR9XG4gODE0Olx0RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9kaXNhYmxlKTtcbiA4MTU6XHRcbiA4MTY6XHR2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuIDgxNzpcdHtcbiA4MTg6XHRcdHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiA9XG4gODE5Olx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSwgdmRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NDg1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqS2NvbmZpZyBhbmQgTWFrZWZpbGVzOiBUaGUgRm91bmRhdGlvbioqCgpBbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCBteSBkdWNrcyBpbiBhIHJvdy4gRmlyc3QgdGhpbmdzIGZpcnN0OiBsZXQmIzM5O3MgdmVyaWZ5IHRoZSBLY29uZmlnIG9wdGlvbnMgdGhhdCAqdGhpcyogc3BlY2lmaWMgY29kZSBkZXBlbmRzIG9uLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGVuc3VyZSB0aGUgbmVjZXNzYXJ5IGZlYXR1cmVzIGFyZSBlbmFibGVkIGFuZCBjb3JyZWN0bHkgY29uZmlndXJlZCBpbiB0aGUga2VybmVsIGJ1aWxkLiBJIGRvbiYjMzk7dCB3YW50IHRvIHdhc3RlIHRpbWUgY2hhc2luZyBkb3duIGJ1aWxkIGVycm9ycyBsYXRlciBiZWNhdXNlIGEgZnVuZGFtZW50YWwgY29tcG9uZW50IGlzIG1pc3Npbmcgb3IgZGlzYWJsZWQuIEdvdHRhIGdldCB0aGUgZ3JvdW5kd29yayBzb2xpZC4KClRoZW4sIEkmIzM5O2xsIHN3aW5nIG92ZXIgdG8gdGhlIGBkcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBtYWdpYyBoYXBwZW5zLCB3aGVyZSB0aGUgYnVpbGQgcHJvY2VzcyBpcyBvcmNoZXN0cmF0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgY29kZSBpcyBpbnRlZ3JhdGVkLCB3aGF0IGRlcGVuZGVuY2llcyBpdCBwdWxscyBpbiwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lhbCBidWlsZCBmbGFncyBvciBjb25maWd1cmF0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gVGhlIE1ha2VmaWxlIHdpbGwgc2hvdyBtZSB0aGUgYnVpbGQgcnVsZXMsIG9iamVjdCBmaWxlcywgYW5kIGxpa2VseSwgaG93IHRoaXMgYWxsIGZpdHMgaW50byB0aGUgbGFyZ2VyIHZmaW8tcGNpIHBpY3R1cmUuIFRoaXMgZ2l2ZXMgYSBjbGVhcmVyIHBpY3R1cmUgb2Ygd2hldGhlciBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIGFyZSBtaXNzaW5nIGFuZCwgZnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gaW52ZXN0aWdhdGUgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0XG4gICAzOlx0dmZpby1wY2ktY29yZS15IDo9IHZmaW9fcGNpX2NvcmUubyB2ZmlvX3BjaV9pbnRycy5vIHZmaW9fcGNpX3Jkd3IubyB2ZmlvX3BjaV9jb25maWcub1xuICAgNDpcdHZmaW8tcGNpLWNvcmUtJChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pICYjNDM7PSB2ZmlvX3BjaV96ZGV2Lm9cbiAgIDU6XHR2ZmlvLXBjaS1jb3JlLSQoQ09ORklHX1ZGSU9fUENJX0RNQUJVRikgJiM0Mzs9IHZmaW9fcGNpX2RtYWJ1Zi5vXG4gICA2Olx0b2JqLSQoQ09ORklHX1ZGSU9fUENJX0NPUkUpICYjNDM7PSB2ZmlvLXBjaS1jb3JlLm9cbiAgIDc6XHRcbiAgIDg6XHR2ZmlvLXBjaS15IDo9IHZmaW9fcGNpLm9cbiAgIDk6XHR2ZmlvLXBjaS0kKENPTkZJR19WRklPX1BDSV9JR0QpICYjNDM7PSB2ZmlvX3BjaV9pZ2Qub1xuICAxMDpcdG9iai0kKENPTkZJR19WRklPX1BDSSkgJiM0Mzs9IHZmaW8tcGNpLm9cbiAgMTE6XHRcbiAgMTI6XHRvYmotJChDT05GSUdfTUxYNV9WRklPX1BDSSkgICAgICAgICAgICYjNDM7PSBtbHg1L1xuICAxMzpcdFxuICAxNDpcdG9iai0kKENPTkZJR19JU01fVkZJT19QQ0kpICAgICAgICAgICAmIzQzOz0gaXNtL1xuICAxNTpcdFxuICAxNjpcdG9iai0kKENPTkZJR19ISVNJX0FDQ19WRklPX1BDSSkgJiM0Mzs9IGhpc2lsaWNvbi9cbiAgMTc6XHRcbiAgMTg6XHRvYmotJChDT05GSUdfUERTX1ZGSU9fUENJKSAmIzQzOz0gcGRzL1xuICAxOTpcdFxuICAyMDpcdG9iai0kKENPTkZJR19WSVJUSU9fVkZJT19QQ0kpICYjNDM7PSB2aXJ0aW8vXG4gIDIxOlx0XG4gIDIyOlx0b2JqLSQoQ09ORklHX05WR1JBQ0VfR1BVX1ZGSU9fUENJKSAmIzQzOz0gbnZncmFjZS1ncHUvXG4gIDIzOlx0XG4gIDI0Olx0b2JqLSQoQ09ORklHX1FBVF9WRklPX1BDSSkgJiM0Mzs9IHFhdC9cbiAgMjU6XHRcbiAgMjY6XHRvYmotJChDT05GSUdfWEVfVkZJT19QQ0kpICYjNDM7PSB4ZS9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzMDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQ6CgoqKkV4YW1pbmluZyBWRklPIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVkZJTy4gV2hlcmUgZG8gSSBzdGFydD8gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBsb29rIGZvciB0aG9zZSB3b3VsZCBiZSB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhlIGRyaXZlciYjMzk7cyBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgYGRyaXZlcnMvdmZpby9LY29uZmlnYC4gVGhhdCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludHMgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGUgVkZJTyBmZWF0dXJlcy4gSSYjMzk7bGwgbmVlZCB0byByZXZpZXcgdGhvc2Ugc2V0dGluZ3MgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uIGxhbmRzY2FwZS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnVjb25maWcgVkZJT1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBOb24tUHJpdmlsZWdlZCB1c2Vyc3BhY2UgZHJpdmVyIGZyYW1ld29ya1wmIzM0O1xuICAgNDpcdFx0c2VsZWN0IElPTU1VX0FQSVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBJT01NVUZEIHx8ICFJT01NVUZEXG4gICA2Olx0XHRzZWxlY3QgSU5URVJWQUxfVFJFRVxuICAgNzpcdFx0c2VsZWN0IFZGSU9fR1JPVVAgaWYgU1BBUFJfVENFX0lPTU1VIHx8IElPTU1VRkQ9blxuICAgODpcdFx0c2VsZWN0IFZGSU9fREVWSUNFX0NERVYgaWYgIVZGSU9fR1JPVVBcbiAgIDk6XHRcdHNlbGVjdCBWRklPX0NPTlRBSU5FUiBpZiBJT01NVUZEPW5cbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgVkZJTyBwcm92aWRlcyBhIGZyYW1ld29yayBmb3Igc2VjdXJlIHVzZXJzcGFjZSBkZXZpY2UgZHJpdmVycy5cbiAgMTI6XHRcdCAgU2VlIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLnJzdCBmb3IgbW9yZSBkZXRhaWxzLlxuICAxMzpcdFxuICAxNDpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiAgMTU6XHRcbiAgMTY6XHRpZiBWRklPXG4gIDE3Olx0Y29uZmlnIFZGSU9fREVWSUNFX0NERVZcbiAgMTg6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgdGhlIFZGSU8gY2RldiAvZGV2L3ZmaW8vZGV2aWNlcy92ZmlvWFwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiBJT01NVUZEIFx1MDAyNlx1MDAyNiAhU1BBUFJfVENFX0lPTU1VXG4gIDIwOlx0XHRkZWZhdWx0ICFWRklPX0dST1VQXG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgIFRoZSBWRklPIGRldmljZSBjZGV2IGlzIGFub3RoZXIgd2F5IGZvciB1c2Vyc3BhY2UgdG8gZ2V0IGRldmljZVxuICAyMzpcdFx0ICBhY2Nlc3MuIFVzZXJzcGFjZSBnZXRzIGRldmljZSBmZCBieSBvcGVuaW5nIGRldmljZSBjZGV2IHVuZGVyXG4gIDI0Olx0XHQgIC9kZXYvdmZpby9kZXZpY2VzL3ZmaW9YLCBhbmQgdGhlbiBiaW5kIHRoZSBkZXZpY2UgZmQgd2l0aCBhbiBpb21tdWZkXG4gIDI1Olx0XHQgIHRvIHNldCB1cCBzZWN1cmUgRE1BIGNvbnRleHQgZm9yIGRldmljZSBhY2Nlc3MuXG4gIDI2Olx0XG4gIDI3Olx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxuICAyODpcdFxuICAyOTpcdGNvbmZpZyBWRklPX0dST1VQXG4gIDMwOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBWRklPIGdyb3VwIC9kZXYvdmZpby8kZ3JvdXBfaWRcJiMzNDtcbiAgMzE6XHRcdGRlZmF1bHQgeVxuICAzMjpcdFx0aGVscFxuICAzMzpcdFx0ICAgVkZJTyBncm91cCBzdXBwb3J0IHByb3ZpZGVzIHRoZSB0cmFkaXRpb25hbCBtb2RlbCBmb3IgYWNjZXNzaW5nXG4gIDM0Olx0XHQgICBkZXZpY2VzIHRocm91Z2ggVkZJTyBhbmQgaXMgdXNlZCBieSB0aGUgbWFqb3JpdHkgb2YgdXNlcnNwYWNlXG4gIDM1Olx0XHQgICBhcHBsaWNhdGlvbnMgYW5kIGRyaXZlcnMgbWFraW5nIHVzZSBvZiBWRklPLlxuICAzNjpcdFxuICAzNzpcdFx0ICAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IFkuXG4gIDM4Olx0XG4gIDM5Olx0Y29uZmlnIFZGSU9fQ09OVEFJTkVSXG4gIDQwOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBWRklPIGNvbnRhaW5lciAvZGV2L3ZmaW8vdmZpb1wmIzM0O1xuICA0MTpcdFx0c2VsZWN0IFZGSU9fSU9NTVVfVFlQRTEgaWYgTU1VIFx1MDAyNlx1MDAyNiAoWDg2IHx8IFMzOTAgfHwgQVJNIHx8IEFSTTY0KVxuICA0MjpcdFx0ZGVwZW5kcyBvbiBWRklPX0dST1VQXG4gIDQzOlx0XHRkZWZhdWx0IHlcbiAgNDQ6XHRcdGhlbHBcbiAgNDU6XHRcdCAgVGhlIFZGSU8gY29udGFpbmVyIGlzIHRoZSBjbGFzc2ljIGludGVyZmFjZSB0byBWRklPIGZvciBlc3RhYmxpc2hpbmdcbiAgNDY6XHRcdCAgSU9NTVUgbWFwcGluZ3MuIElmIE4gaXMgc2VsZWN0ZWQgaGVyZSB0aGVuIElPTU1VRkQgbXVzdCBiZSB1c2VkIHRvXG4gIDQ3Olx0XHQgIG1hbmFnZSB0aGUgbWFwcGluZ3MuXG4gIDQ4Olx0XG4gIDQ5Olx0XHQgIFVubGVzcyB0ZXN0aW5nIElPTU1VRkQgc2F5IFkgaGVyZS5cbiAgNTA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEyNjMKCQkJCQkJCW91dHB1dDogMTgzCgkJCQkJCQl0aG91Z2h0czogNjUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZGSU8gUENJIExvY2tpbmcgTG9naWMgUmV2aWV3KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWRlZCB0byBjb25maXJtIHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb25zLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBgUENJYCBlbmFibGVzIFZGSU8gc3VwcG9ydCwgYFZGSU9gIGlzIHRoZSB0b3AtbGV2ZWwgbWVudSBvcHRpb24sIGBWRklPX1BDSWAgcHJvdmlkZXMgZ2VuZXJpYyBWRklPIHN1cHBvcnQgZm9yIGFueSBQQ0kgZGV2aWNlIGFuZCBzZWxlY3RzIGBWRklPX1BDSV9DT1JFYCwgYW5kIGBWRklPX1BDSV9DT1JFYCBpcyBjb21waWxlZCB3aGVuIGBWRklPX1BDSWAgaXMgc2VsZWN0ZWQuIFNvLCBgVkZJT2AsIGBWRklPX1BDSWAsIGFuZCBgUENJYCBhcmUgdGhlIG9uZXMgdG8gZm9jdXMgb24uCgpUaGVuLCBJIGxvb2tlZCBhdCB0aGUgYGRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBjb25maXJtaW5nIHRoYXQgYFZGSU9fUENJYCBhbmQgYFZGSU9gIGFyZSBrZXkgYW5kIGRlcGVuZCBvbiBgUENJYC4KCk5leHQsIEkgZm9jdXNlZCBvbiByZWxldmFudCBzeW1ib2xzOiBzcGVjaWZpY2FsbHkgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAsIGB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZWAsIGB2ZmlvX3BjaV9vcGVuX2RldmljZWAsIGFuZCBhbHNvIGRvdWJsZS1jaGVja2VkIGB2ZmlvX3BjaV9jb3JlX2VuYWJsZWAsIHdoaWNoIGFyZSBhbGwgZm91bmQgaW4gYHZmaW9fcGNpX2NvcmUuY2AuIFRoaXMgZ2F2ZSBtZSBhIGdvb2QgZ3Jhc3Agb2YgdGhlIGNvbnRyb2wgcG9pbnRzLgoKSSByZXZpZXdlZCBgdmZpb19wY2lfY29yZV9lbmFibGVgIGFuZCBgdmZpb19wY2lfY29yZV9kaXNhYmxlYCwgYXMgdGhleSYjMzk7cmUgdGhlIGNvcmUgbGlmZWN5Y2xlIGZ1bmN0aW9ucyBtYW5hZ2luZyB0aGUgc3RhdGUgYW5kIGxvY2tzIG9mIFBDSSBkZXZpY2VzIHdpdGhpbiBWRklPLiBOb3csIHRoZSBwYXRjaCBmb2N1c2VzIG9uIGNoYW5naW5nIGxvY2tpbmcgbG9naWMgaW4gYHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpYC4gSXQgcmVwbGFjZXMgYSB0cnkgbG9jayBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBibG9ja2luZyBsb2NrLiBUaGF0IG1lYW5zIHRoZSBwYXRjaCBhbHRlcnMgc3luY2hyb25pemF0aW9uIGJlaGF2aW9yIGR1cmluZyB0ZWFyZG93biwgd2hpY2ggY2FuIGxlYWQgdG8gbG9jayBvcmRlciBpc3N1ZXMgYW5kIHBvdGVudGlhbCBkZWFkbG9ja3MuIFRoaXMgaXMgc2lnbmlmaWNhbnQsIGVzcGVjaWFsbHkgaW4gUUVNVSBlbnZpcm9ubWVudHMgd2l0aCBQQ0kgYW5kIFZGSU8gc3VwcG9ydC4KCkJhc2VkIG9uIGFsbCBvZiB0aGlzLCB0aGUgcGF0Y2ggZGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9uIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBJJiMzOTt2ZSBvdXRsaW5lZCB0aGUgYFJlYXNvbmluZ2AgY2xlYXJseS4gQW5kIEkmIzM5O3ZlIGRvdWJsZSBjaGVja2VkIHRoZSBgRm9jdXNTeW1ib2xzYCBhbmQgdGhlIGBFbmFibGVDb25maWdzYC4gSXQmIzM5O3MgYWxsIHZlcmlmaWVkLCBzbyBJJiMzOTttIGdvb2QgdG8gcHJvY2VlZCB3aXRoIHNldHRpbmcgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQQ0kmIzM0OywKICAgICYjMzQ7VkZJTyYjMzQ7LAogICAgJiMzNDtWRklPX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfZGlzYWJsZSYjMzQ7LAogICAgJiMzNDt2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSYjMzQ7LAogICAgJiMzNDt2ZmlvX3BjaV9jb3JlX2VuYWJsZSYjMzQ7LAogICAgJiMzNDt2ZmlvX3BjaV9vcGVuX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBsb2dpYyBpbiB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoKSBieSByZXBsYWNpbmcgYSB0cnlsb2NrIG9uIHRoZSB1cHN0cmVhbSBicmlkZ2Ugd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGJsb2NraW5nIHBjaV9kZXZfbG9jayhicmlkZ2UpLiBUaGlzIGFsdGVycyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBiZWhhdmlvciBpbiB0aGUgVkZJTyBQQ0kgdGVhcmRvd24vZGlzYWJsZSBwYXRoIHdoZW4gZGV2aWNlIGluc3RhbmNlcyBhcmUgY2xvc2VkIG9yIGRpc2FibGVkLCB3aGljaCBjYW4gaW50cm9kdWNlIGRlYWRsb2NrIG9yIGxvY2tpbmcgaW52YXJpYW50IGlzc3Vlcy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZGSU8gUENJIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtWRklPJiMzNDssCiAgICAmIzM0O1ZGSU9fUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZpb19wY2lfY29yZV9kaXNhYmxlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfZW5hYmxlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX29wZW5fZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGxvZ2ljIGluIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpIGJ5IHJlcGxhY2luZyBhIHRyeWxvY2sgb24gdGhlIHVwc3RyZWFtIGJyaWRnZSB3aXRoIGFuIHVuY29uZGl0aW9uYWwgYmxvY2tpbmcgcGNpX2Rldl9sb2NrKGJyaWRnZSkuIFRoaXMgYWx0ZXJzIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIGJlaGF2aW9yIGluIHRoZSBWRklPIFBDSSB0ZWFyZG93bi9kaXNhYmxlIHBhdGggd2hlbiBkZXZpY2UgaW5zdGFuY2VzIGFyZSBjbG9zZWQgb3IgZGlzYWJsZWQsIHdoaWNoIGNhbiBpbnRyb2R1Y2UgZGVhZGxvY2sgb3IgbG9ja2luZyBpbnZhcmlhbnQgaXNzdWVzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdpdGggVkZJTyBQQ0kgc3VwcG9ydC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwODo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRldmljZSBsb2NraW5nIGJlaGF2aW9yIGluIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpIGJ5IHJlcGxhY2luZyBhIHRyeWxvY2sgKHBjaV9kZXZfdHJ5bG9jaykgb24gdGhlIHVwc3RyZWFtIGJyaWRnZSB3aXRoIGFuIHVuY29uZGl0aW9uYWwgbG9jayAocGNpX2Rldl9sb2NrKSBhbmQgcmVtb3ZpbmcgYW4gdW51c2VkIGdvdG8gbGFiZWwuIFRoaXMgY2hhbmdlIGV4Y2x1c2l2ZWx5IGFmZmVjdHMgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgYW5kIGRldmljZSByZXNldCBmbG93LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIGFsbG9jYXRlLCBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcywgbm9yIGRvZXMgaXQgY29weSBkYXRhIHRvIHVzZXIgc3BhY2Ugb3IgYWx0ZXIgbG9naWMgZGVhbGluZyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIHJlZ3Jlc3Npb25zIChzdWNoIGFzIGRlYWRsb2NrcyBvciBsb2NrIG9yZGVyIGludmVyc2lvbnMpIGFyZSBkZXRlY3RhYmxlIGJ5IExPQ0tERVAvS0FTQU4gcmF0aGVyIHRoYW4gS01TQU4uIERlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZiY2E0YTliOGRkOThlZWY0MzgzM2VmYzQ2ZjVlZWI3YzFmZTA2ODUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDA4OjU1OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwppbmRleCAzNjJjMzc1YTA1Nzk5Li44OTY2YTViZWE0MDYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwpAQCAtNzkwLDggJiM0Mzs3OTAsOCBAQCB2b2lkIHZmaW9fcGNpX2NvcmVfZGlzYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpCiAJICovCiAJaWYgKHZkZXYtJmd0O3Jlc2V0X3dvcmtzKSB7CiAJCWJyaWRnZSA9IHBjaV91cHN0cmVhbV9icmlkZ2UocGRldik7Ci0JCWlmIChicmlkZ2UgJmFtcDsmYW1wOyAhcGNpX2Rldl90cnlsb2NrKGJyaWRnZSkpCi0JCQlnb3RvIG91dF9yZXN0b3JlX3N0YXRlOwomIzQzOwkJaWYgKGJyaWRnZSkKJiM0MzsJCQlwY2lfZGV2X2xvY2soYnJpZGdlKTsKIAkJaWYgKHBjaV9kZXZfdHJ5bG9jayhwZGV2KSkgewogCQkJaWYgKCFfX3BjaV9yZXNldF9mdW5jdGlvbl9sb2NrZWQocGRldikpCiAJCQkJdmRldi0mZ3Q7bmVlZHNfcmVzZXQgPSBmYWxzZTsKQEAgLTgwMSw3ICYjNDM7ODAxLDYgQEAgdm9pZCB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KQogCQkJcGNpX2Rldl91bmxvY2soYnJpZGdlKTsKIAl9CiAKLW91dF9yZXN0b3JlX3N0YXRlOgogCXBjaV9yZXN0b3JlX3N0YXRlKHBkZXYpOwogb3V0OgogCXBjaV9kaXNhYmxlX2RldmljZShwZGV2KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSB2ZmlvLXBjaSBDb3JlIERpc2FibGUgUGF0Y2gqKgoKT2theSwgc28gdGhlIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCBzZWVtcyB0byBiZSBjZW50cmFsaXplZCwgdGhhbmtmdWxseS4gSXQmIzM5O3MgYWxsIGNvbnRhaW5lZCB3aXRoaW4gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gTXkgZmlyc3Qgc3RlcCwgYXMgYWx3YXlzLCBpcyBnb2luZyB0byBiZSB0byBkZWVwbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhcm91bmQgdGhlIGZ1bmN0aW9uIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgLiBJIG5lZWQgdG8gc2VlICp3aHkqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgdG91Y2hlZC4gSXMgaXQgYmVpbmcgbW9kaWZpZWQgZGlyZWN0bHk/IElzIGNvZGUgYXJvdW5kIGl0IGJlaW5nIGFsdGVyZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaXMgY3J1Y2lhbCBmb3IgZ3Jhc3BpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLCBlc3BlY2lhbGx5IGluIGEgZHJpdmVyIGFzIGNvbXBsZXggYXMgVkZJTy4KClRvIGRpdmUgaW4gZWZmaWNpZW50bHksIEkmIzM5O2xsIGxldmVyYWdlIG15IHRvb2xpbmcuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB1c2UgYHJlYWQtZmlsZWAgdG8gemVybyBpbiBvbiB0aGUgYXJlYSBhcm91bmQgbGluZSA3OTAgaW4gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYGRpc2FibGVgIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBkcml2ZXIgZmxvdy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGNhbGxzLCBkZWZpbml0aW9ucywgYW5kIGxpa2VseSBzb21lIGVycm9yIGhhbmRsaW5nIG9yIHN0YXRlIG1hbmFnZW1lbnQgYXJvdW5kIHRoYXQgbGluZS4gVGhhdCYjMzk7bGwgYmUgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBwaWVjaW5nIHRvZ2V0aGVyIHRoZSBmdW5jdGlvbmFsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzcwOlx0XHRcdHBjaV9pbmZvKHBkZXYsIFwmIzM0OyVzOiBDb3VsZG4mIzM5O3QgcmVsb2FkIHNhdmVkIHN0YXRlXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4gNzcxOlx0XG4gNzcyOlx0XHRcdGlmICghdmRldi1cdTAwM2VyZXNldF93b3JrcylcbiA3NzM6XHRcdFx0XHRnb3RvIG91dDtcbiA3NzQ6XHRcbiA3NzU6XHRcdFx0cGNpX3NhdmVfc3RhdGUocGRldik7XG4gNzc2Olx0XHR9XG4gNzc3Olx0XG4gNzc4Olx0XHQvKlxuIDc3OTpcdFx0ICogRGlzYWJsZSBJTlR4IGFuZCBNU0ksIHByZXN1bWFibHkgdG8gYXZvaWQgc3B1cmlvdXMgaW50ZXJydXB0c1xuIDc4MDpcdFx0ICogZHVyaW5nIHJlc2V0LiAgU3RvbGVuIGZyb20gcGNpX3Jlc2V0X2Z1bmN0aW9uKClcbiA3ODE6XHRcdCAqL1xuIDc4MjpcdFx0cGNpX3dyaXRlX2NvbmZpZ193b3JkKHBkZXYsIFBDSV9DT01NQU5ELCBQQ0lfQ09NTUFORF9JTlRYX0RJU0FCTEUpO1xuIDc4MzpcdFxuIDc4NDpcdFx0LypcbiA3ODU6XHRcdCAqIFRyeSB0byBnZXQgdGhlIGxvY2tzIG91cnNlbHZlcyB0byBwcmV2ZW50IGEgZGVhZGxvY2suIFRoZVxuIDc4NjpcdFx0ICogc3VjY2VzcyBvZiB0aGlzIGlzIGRlcGVuZGVudCBvbiBiZWluZyBhYmxlIHRvIGxvY2sgdGhlIGRldmljZSxcbiA3ODc6XHRcdCAqIHdoaWNoIGlzIG5vdCBhbHdheXMgcG9zc2libGUuXG4gNzg4Olx0XHQgKiBXZSBjYW4gbm90IHVzZSB0aGUgXCYjMzQ7dHJ5XCYjMzQ7IHJlc2V0IGludGVyZmFjZSBoZXJlLCB3aGljaCB3aWxsXG4gNzg5Olx0XHQgKiBvdmVyd3JpdGUgdGhlIHByZXZpb3VzbHkgcmVzdG9yZWQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cbiA3OTA6XHRcdCAqL1xuIDc5MTpcdFx0aWYgKHZkZXYtXHUwMDNlcmVzZXRfd29ya3MpIHtcbiA3OTI6XHRcdFx0YnJpZGdlID0gcGNpX3Vwc3RyZWFtX2JyaWRnZShwZGV2KTtcbiA3OTM6XHRcdFx0aWYgKGJyaWRnZSlcbiA3OTQ6XHRcdFx0XHRwY2lfZGV2X2xvY2soYnJpZGdlKTtcbiA3OTU6XHRcdFx0aWYgKHBjaV9kZXZfdHJ5bG9jayhwZGV2KSkge1xuIDc5NjpcdFx0XHRcdGlmICghX19wY2lfcmVzZXRfZnVuY3Rpb25fbG9ja2VkKHBkZXYpKVxuIDc5NzpcdFx0XHRcdFx0dmRldi1cdTAwM2VuZWVkc19yZXNldCA9IGZhbHNlO1xuIDc5ODpcdFx0XHRcdHBjaV9kZXZfdW5sb2NrKHBkZXYpO1xuIDc5OTpcdFx0XHR9XG4gODAwOlx0XHRcdGlmIChicmlkZ2UpXG4gODAxOlx0XHRcdFx0cGNpX2Rldl91bmxvY2soYnJpZGdlKTtcbiA4MDI6XHRcdH1cbiA4MDM6XHRcbiA4MDQ6XHRcdHBjaV9yZXN0b3JlX3N0YXRlKHBkZXYpO1xuIDgwNTpcdG91dDpcbiA4MDY6XHRcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcbiA4MDc6XHRcbiA4MDg6XHRcdHZmaW9fcGNpX2Rldl9zZXRfdHJ5X3Jlc2V0KHZkZXYtXHUwMDNldmRldi5kZXZfc2V0KTtcbiA4MDk6XHRcbiA4MTA6XHRcdC8qIFB1dCB0aGUgcG0tcnVudGltZSB1c2FnZSBjb3VudGVyIGFjcXVpcmVkIGR1cmluZyBlbmFibGUgKi9cbiA4MTE6XHRcdGlmICghdmRldi1cdTAwM2VkaXNhYmxlX2lkbGVfZDMpXG4gODEyOlx0XHRcdHBtX3J1bnRpbWVfcHV0KFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiA4MTM6XHR9XG4gODE0Olx0RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9kaXNhYmxlKTtcbiA4MTU6XHRcbiA4MTY6XHR2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuIDgxNzpcdHtcbiA4MTg6XHRcdHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiA9XG4gODE5Olx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSwgdmRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MjkKCQkJCQkJCW91dHB1dDogMTYwCgkJCQkJCQl0aG91Z2h0czogNDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9ja2luZyBDaGFuZ2UgaW4gYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgbG9va3MgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBzeW5jaHJvbml6YXRpb24gY2hhbmdlIHdpdGhpbiB0aGUgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgd2UmIzM5O3JlIHRyYW5zaXRpb25pbmcgZnJvbSBgcGNpX2Rldl90cnlsb2NrKGJyaWRnZSlgIHRvIGBwY2lfZGV2X2xvY2soYnJpZGdlKWAgd2hlbiByZXNldHRpbmcgYSBkZXZpY2UuIFRoaXMgY2hhbmdlIG1vZGlmaWVzIHRoZSBsb2NraW5nIGJlaGF2aW9yIGFyb3VuZCB0aGUgdXBzdHJlYW0gUENJIGJyaWRnZSBkdXJpbmcgYSBkZXZpY2UgZGlzYWJsZS4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IHNlZW1zIHRoZSBvbGQgaW1wbGVtZW50YXRpb24gYXR0ZW1wdGVkIGEgbm9uLWJsb2NraW5nIGxvY2sgKGB0cnlsb2NrYCkgb24gdGhlIHVwc3RyZWFtIGJyaWRnZSBiZWZvcmUgcHJvY2VlZGluZywgcG90ZW50aWFsbHkgc2tpcHBpbmcgdGhlIHJlc2V0IGlmIHRoZSBsb2NrIGNvdWxkbiYjMzk7dCBiZSBpbW1lZGlhdGVseSBhY3F1aXJlZC4gTm93LCBpdCB1bmNvbmRpdGlvbmFsbHkgdGFrZXMgdGhlIGxvY2sgKGBsb2NrYCkgb24gdGhlIGJyaWRnZSBpZiB0aGUgYnJpZGdlIGV4aXN0cy4gVGhlIGBvdXRfcmVzdG9yZV9zdGF0ZWAgbGFiZWwgaGFzIGFsc28gYmVlbiByZW1vdmVkLCBhcyB0aGUgYHRyeWxvY2tgIGZhaWx1cmUgYnJhbmNoIGlzIG5vIGxvbmdlciBwcmVzZW50LgoKR2l2ZW4gdGhpcywgSSYjMzk7bSBjbGFzc2lmeWluZyB0aGlzIGFzIGEgc3luY2hyb25pemF0aW9uIGNoYW5nZSwgZGlyZWN0bHkgaW1wYWN0aW5nIGRldmljZSByZXNldCBiZWhhdmlvciB3aXRoaW4gYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAuIExPQ0tERVAgc2hvdWxkIGJlIHN1ZmZpY2llbnQgaGVyZSB0byBhZGRyZXNzIHBvdGVudGlhbCBkZWFkbG9jayBhbmQgbG9jayBvcmRlcmluZyBpc3N1ZXMsIHdoaWNoIGlzIHByZWNpc2VseSB0aGUga2luZCBvZiBwcm9ibGVtIGl0IHdhcyBkZXNpZ25lZCBmb3IuCgpOb3csIEkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBLTVNBTiBjb25jZXJucy4gSSYjMzk7bGwgZ28gdGhyb3VnaCB0aGUgc3RhbmRhcmQgY3JpdGVyaWEuIFRoZXJlIGFyZSBubyBrZXJuZWwgc3RydWN0dXJlcyBiZWluZyBleHBvc2VkIHRvIHVzZXJzcGFjZSB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzLCBubyBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRlcGVuZHMgb24gdW5pbml0aWFsaXplZCBkYXRhLCBubyBuZXcgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IG1pZ2h0IGxlYWQgdG8gdW5pbml0aWFsaXplZCByZWFkcywgYW5kIG5vIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNrcyBvciBsZW5ndGggY2FsY3VsYXRpb25zIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBTbywgYmFzZWQgb24gbXkgcmV2aWV3LCBLTVNBTiBpcyBub3QgbmVlZGVkIGhlcmUuIEtBU0FOL0xPQ0tERVAgd291bGQgYmUgdGhlIG1vcmUgYXBwcm9wcmlhdGUgdG9vbHMgdG8gdXNlLCBmb2N1c2luZyBvbiBzeW5jaHJvbml6YXRpb24gYW5kIGRldmljZSBzdGF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGV2aWNlIGxvY2tpbmcgYmVoYXZpb3IgaW4gdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgYnkgcmVwbGFjaW5nIGEgdHJ5bG9jayAocGNpX2Rldl90cnlsb2NrKSBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBsb2NrIChwY2lfZGV2X2xvY2spIGFuZCByZW1vdmluZyBhbiB1bnVzZWQgZ290byBsYWJlbC4gVGhpcyBjaGFuZ2UgZXhjbHVzaXZlbHkgYWZmZWN0cyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBhbmQgZGV2aWNlIHJlc2V0IGZsb3cuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgYWxsb2NhdGUsIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBub3IgZG9lcyBpdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSBvciBhbHRlciBsb2dpYyBkZWFsaW5nIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIGxvY2sgb3JkZXIgaW52ZXJzaW9ucykgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUC9LQVNBTiByYXRoZXIgdGhhbiBLTVNBTi4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGV2aWNlIGxvY2tpbmcgYmVoYXZpb3IgaW4gdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgYnkgcmVwbGFjaW5nIGEgdHJ5bG9jayAocGNpX2Rldl90cnlsb2NrKSBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBsb2NrIChwY2lfZGV2X2xvY2spIGFuZCByZW1vdmluZyBhbiB1bnVzZWQgZ290byBsYWJlbC4gVGhpcyBjaGFuZ2UgZXhjbHVzaXZlbHkgYWZmZWN0cyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBhbmQgZGV2aWNlIHJlc2V0IGZsb3cuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgYWxsb2NhdGUsIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBub3IgZG9lcyBpdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSBvciBhbHRlciBsb2dpYyBkZWFsaW5nIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIGxvY2sgb3JkZXIgaW52ZXJzaW9ucykgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUC9LQVNBTiByYXRoZXIgdGhhbiBLTVNBTi4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NToyMi45MTY0MDE3NjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjAyMzMxMTA1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQ0lcIixcbiAgICBcIlZGSU9cIixcbiAgICBcIlZGSU9fUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19wY2lfY29yZV9kaXNhYmxlXCIsXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZVwiLFxuICAgIFwidmZpb19wY2lfY29yZV9lbmFibGVcIixcbiAgICBcInZmaW9fcGNpX29wZW5fZGV2aWNlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkZXZpY2UgbG9ja2luZyBiZWhhdmlvciBpbiB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoKSBieSByZXBsYWNpbmcgYSB0cnlsb2NrIChwY2lfZGV2X3RyeWxvY2spIG9uIHRoZSB1cHN0cmVhbSBicmlkZ2Ugd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGxvY2sgKHBjaV9kZXZfbG9jaykgYW5kIHJlbW92aW5nIGFuIHVudXNlZCBnb3RvIGxhYmVsLiBUaGlzIGNoYW5nZSBleGNsdXNpdmVseSBhZmZlY3RzIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIGFuZCBkZXZpY2UgcmVzZXQgZmxvdy4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBhbGxvY2F0ZSwgb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMsIG5vciBkb2VzIGl0IGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlIG9yIGFsdGVyIGxvZ2ljIGRlYWxpbmcgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCByZWdyZXNzaW9ucyAoc3VjaCBhcyBkZWFkbG9ja3Mgb3IgbG9jayBvcmRlciBpbnZlcnNpb25zKSBhcmUgZGV0ZWN0YWJsZSBieSBMT0NLREVQL0tBU0FOIHJhdGhlciB0aGFuIEtNU0FOLiBEZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgbG9naWMgaW4gdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgYnkgcmVwbGFjaW5nIGEgdHJ5bG9jayBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBibG9ja2luZyBwY2lfZGV2X2xvY2soYnJpZGdlKS4gVGhpcyBhbHRlcnMgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgYmVoYXZpb3IgaW4gdGhlIFZGSU8gUENJIHRlYXJkb3duL2Rpc2FibGUgcGF0aCB3aGVuIGRldmljZSBpbnN0YW5jZXMgYXJlIGNsb3NlZCBvciBkaXNhYmxlZCwgd2hpY2ggY2FuIGludHJvZHVjZSBkZWFkbG9jayBvciBsb2NraW5nIGludmFyaWFudCBpc3N1ZXMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2l0aCBWRklPIFBDSSBzdXBwb3J0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NToyMi45MTY0MTIzOTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODY2MzE4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZiY2E0YTliOGRkOThlZWY0MzgzM2VmYzQ2ZjVlZWI3YzFmZTA2ODVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAwODo1NToyMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXFxuaW5kZXggMzYyYzM3NWEwNTc5OS4uODk2NmE1YmVhNDA2MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXFxuQEAgLTc5MCw4ICs3OTAsOCBAQCB2b2lkIHZmaW9fcGNpX2NvcmVfZGlzYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuIFxcdCAqL1xcbiBcXHRpZiAodmRldi1cXHUwMDNlcmVzZXRfd29ya3MpIHtcXG4gXFx0XFx0YnJpZGdlID0gcGNpX3Vwc3RyZWFtX2JyaWRnZShwZGV2KTtcXG4tXFx0XFx0aWYgKGJyaWRnZSBcXHUwMDI2XFx1MDAyNiAhcGNpX2Rldl90cnlsb2NrKGJyaWRnZSkpXFxuLVxcdFxcdFxcdGdvdG8gb3V0X3Jlc3RvcmVfc3RhdGU7XFxuK1xcdFxcdGlmIChicmlkZ2UpXFxuK1xcdFxcdFxcdHBjaV9kZXZfbG9jayhicmlkZ2UpO1xcbiBcXHRcXHRpZiAocGNpX2Rldl90cnlsb2NrKHBkZXYpKSB7XFxuIFxcdFxcdFxcdGlmICghX19wY2lfcmVzZXRfZnVuY3Rpb25fbG9ja2VkKHBkZXYpKVxcbiBcXHRcXHRcXHRcXHR2ZGV2LVxcdTAwM2VuZWVkc19yZXNldCA9IGZhbHNlO1xcbkBAIC04MDEsNyArODAxLDYgQEAgdm9pZCB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxcbiBcXHRcXHRcXHRwY2lfZGV2X3VubG9jayhicmlkZ2UpO1xcbiBcXHR9XFxuIFxcbi1vdXRfcmVzdG9yZV9zdGF0ZTpcXG4gXFx0cGNpX3Jlc3RvcmVfc3RhdGUocGRldik7XFxuIG91dDpcXG4gXFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NToyMy4zMzU3MjYzNjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ2OTc5NTk0MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBDSVwiLFxuICAgIFwiVkZJT1wiLFxuICAgIFwiVkZJT19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2Rpc2FibGVcIixcbiAgICBcInZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2VuYWJsZVwiLFxuICAgIFwidmZpb19wY2lfb3Blbl9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBsb2dpYyBpbiB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoKSBieSByZXBsYWNpbmcgYSB0cnlsb2NrIG9uIHRoZSB1cHN0cmVhbSBicmlkZ2Ugd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGJsb2NraW5nIHBjaV9kZXZfbG9jayhicmlkZ2UpLiBUaGlzIGFsdGVycyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBiZWhhdmlvciBpbiB0aGUgVkZJTyBQQ0kgdGVhcmRvd24vZGlzYWJsZSBwYXRoIHdoZW4gZGV2aWNlIGluc3RhbmNlcyBhcmUgY2xvc2VkIG9yIGRpc2FibGVkLCB3aGljaCBjYW4gaW50cm9kdWNlIGRlYWRsb2NrIG9yIGxvY2tpbmcgaW52YXJpYW50IGlzc3Vlcy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZGSU8gUENJIHN1cHBvcnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZmJjYTRhOWI4ZGQ5OGVlZjQzODMzZWZjNDZmNWVlYjdjMWZlMDY4NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMDg6NTU6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5pbmRleCAzNjJjMzc1YTA1Nzk5Li44OTY2YTViZWE0MDYzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5AQCAtNzkwLDggKzc5MCw4IEBAIHZvaWQgdmZpb19wY2lfY29yZV9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbiBcdCAqL1xuIFx0aWYgKHZkZXYtXHUwMDNlcmVzZXRfd29ya3MpIHtcbiBcdFx0YnJpZGdlID0gcGNpX3Vwc3RyZWFtX2JyaWRnZShwZGV2KTtcbi1cdFx0aWYgKGJyaWRnZSBcdTAwMjZcdTAwMjYgIXBjaV9kZXZfdHJ5bG9jayhicmlkZ2UpKVxuLVx0XHRcdGdvdG8gb3V0X3Jlc3RvcmVfc3RhdGU7XG4rXHRcdGlmIChicmlkZ2UpXG4rXHRcdFx0cGNpX2Rldl9sb2NrKGJyaWRnZSk7XG4gXHRcdGlmIChwY2lfZGV2X3RyeWxvY2socGRldikpIHtcbiBcdFx0XHRpZiAoIV9fcGNpX3Jlc2V0X2Z1bmN0aW9uX2xvY2tlZChwZGV2KSlcbiBcdFx0XHRcdHZkZXYtXHUwMDNlbmVlZHNfcmVzZXQgPSBmYWxzZTtcbkBAIC04MDEsNyArODAxLDYgQEAgdm9pZCB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuIFx0XHRcdHBjaV9kZXZfdW5sb2NrKGJyaWRnZSk7XG4gXHR9XG4gXG4tb3V0X3Jlc3RvcmVfc3RhdGU6XG4gXHRwY2lfcmVzdG9yZV9zdGF0ZShwZGV2KTtcbiBvdXQ6XG4gXHRwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NToyMy4zMzU3Mjc2NjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2OTY2MDk5NTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoaXMgVkZJTyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIHRob3JvdWdobHkuIEZpcnN0IHRoaW5ncyBmaXJzdDogaXQncyB0b3VjaGluZyBgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGZ1bmN0aW9uLiBSaWdodCwgc28gdGhhdCdzIHdoZXJlIHRoZSBhY3Rpb24gaXMuXG5cbkkgbmVlZCB0byBxdWlja2x5IGdyYXNwIHRoZSBjb250ZXh0LCB0aGUgY2FsbCBwYXRocywgdGhlIGRlcGVuZGVuY2llcy4uLiBhbGwgb2YgaXQuIExldCdzIGZpcmUgdXAgYGdyZXBwZXJgIChvciBpZiBpdCdzIGVhc2llciwgYSBxdWljayBgcmVhZC1maWxlYCkgYW5kIHNlZSBob3cgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgaXMgdXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHZmaW8tcGNpIGlzIGNvbmZpZ3VyZWQsIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIHN5c3RlbSwgYW5kIGhvdyB0byByZWFjaCBpdCBpbiBnZW5lcmFsLlxuXG5MZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIHRoYXQgZnVuY3Rpb24gaW4gdGhlIHNvdXJjZSBjb2RlLiBJJ2xsIHJlYWQgYXJvdW5kIGxpbmUgNzkwIGluIGBkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY2AgZm9yIHNvbWUgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGF0IGNvcmUgZnVuY3Rpb24gd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzcsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NTozMC4zMDE4MjkyMTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzcwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzcwOlxcdFxcdFxcdHBjaV9pbmZvKHBkZXYsIFxcXCIlczogQ291bGRuJ3QgcmVsb2FkIHNhdmVkIHN0YXRlXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuIDc3MTpcXHRcXG4gNzcyOlxcdFxcdFxcdGlmICghdmRldi1cXHUwMDNlcmVzZXRfd29ya3MpXFxuIDc3MzpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gNzc0OlxcdFxcbiA3NzU6XFx0XFx0XFx0cGNpX3NhdmVfc3RhdGUocGRldik7XFxuIDc3NjpcXHRcXHR9XFxuIDc3NzpcXHRcXG4gNzc4OlxcdFxcdC8qXFxuIDc3OTpcXHRcXHQgKiBEaXNhYmxlIElOVHggYW5kIE1TSSwgcHJlc3VtYWJseSB0byBhdm9pZCBzcHVyaW91cyBpbnRlcnJ1cHRzXFxuIDc4MDpcXHRcXHQgKiBkdXJpbmcgcmVzZXQuICBTdG9sZW4gZnJvbSBwY2lfcmVzZXRfZnVuY3Rpb24oKVxcbiA3ODE6XFx0XFx0ICovXFxuIDc4MjpcXHRcXHRwY2lfd3JpdGVfY29uZmlnX3dvcmQocGRldiwgUENJX0NPTU1BTkQsIFBDSV9DT01NQU5EX0lOVFhfRElTQUJMRSk7XFxuIDc4MzpcXHRcXG4gNzg0OlxcdFxcdC8qXFxuIDc4NTpcXHRcXHQgKiBUcnkgdG8gZ2V0IHRoZSBsb2NrcyBvdXJzZWx2ZXMgdG8gcHJldmVudCBhIGRlYWRsb2NrLiBUaGVcXG4gNzg2OlxcdFxcdCAqIHN1Y2Nlc3Mgb2YgdGhpcyBpcyBkZXBlbmRlbnQgb24gYmVpbmcgYWJsZSB0byBsb2NrIHRoZSBkZXZpY2UsXFxuIDc4NzpcXHRcXHQgKiB3aGljaCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlLlxcbiA3ODg6XFx0XFx0ICogV2UgY2FuIG5vdCB1c2UgdGhlIFxcXCJ0cnlcXFwiIHJlc2V0IGludGVyZmFjZSBoZXJlLCB3aGljaCB3aWxsXFxuIDc4OTpcXHRcXHQgKiBvdmVyd3JpdGUgdGhlIHByZXZpb3VzbHkgcmVzdG9yZWQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cXG4gNzkwOlxcdFxcdCAqL1xcbiA3OTE6XFx0XFx0aWYgKHZkZXYtXFx1MDAzZXJlc2V0X3dvcmtzKSB7XFxuIDc5MjpcXHRcXHRcXHRicmlkZ2UgPSBwY2lfdXBzdHJlYW1fYnJpZGdlKHBkZXYpO1xcbiA3OTM6XFx0XFx0XFx0aWYgKGJyaWRnZSlcXG4gNzk0OlxcdFxcdFxcdFxcdHBjaV9kZXZfbG9jayhicmlkZ2UpO1xcbiA3OTU6XFx0XFx0XFx0aWYgKHBjaV9kZXZfdHJ5bG9jayhwZGV2KSkge1xcbiA3OTY6XFx0XFx0XFx0XFx0aWYgKCFfX3BjaV9yZXNldF9mdW5jdGlvbl9sb2NrZWQocGRldikpXFxuIDc5NzpcXHRcXHRcXHRcXHRcXHR2ZGV2LVxcdTAwM2VuZWVkc19yZXNldCA9IGZhbHNlO1xcbiA3OTg6XFx0XFx0XFx0XFx0cGNpX2Rldl91bmxvY2socGRldik7XFxuIDc5OTpcXHRcXHRcXHR9XFxuIDgwMDpcXHRcXHRcXHRpZiAoYnJpZGdlKVxcbiA4MDE6XFx0XFx0XFx0XFx0cGNpX2Rldl91bmxvY2soYnJpZGdlKTtcXG4gODAyOlxcdFxcdH1cXG4gODAzOlxcdFxcbiA4MDQ6XFx0XFx0cGNpX3Jlc3RvcmVfc3RhdGUocGRldik7XFxuIDgwNTpcXHRvdXQ6XFxuIDgwNjpcXHRcXHRwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7XFxuIDgwNzpcXHRcXG4gODA4OlxcdFxcdHZmaW9fcGNpX2Rldl9zZXRfdHJ5X3Jlc2V0KHZkZXYtXFx1MDAzZXZkZXYuZGV2X3NldCk7XFxuIDgwOTpcXHRcXG4gODEwOlxcdFxcdC8qIFB1dCB0aGUgcG0tcnVudGltZSB1c2FnZSBjb3VudGVyIGFjcXVpcmVkIGR1cmluZyBlbmFibGUgKi9cXG4gODExOlxcdFxcdGlmICghdmRldi1cXHUwMDNlZGlzYWJsZV9pZGxlX2QzKVxcbiA4MTI6XFx0XFx0XFx0cG1fcnVudGltZV9wdXQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuIDgxMzpcXHR9XFxuIDgxNDpcXHRFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2Rpc2FibGUpO1xcbiA4MTU6XFx0XFxuIDgxNjpcXHR2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbiA4MTc6XFx0e1xcbiA4MTg6XFx0XFx0c3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2ID1cXG4gODE5OlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSwgdmRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU1OjMwLjMwMjAxNjgzMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyOTIyNzU1ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgdmZpb19wY2lfY29yZV9kaXNhYmxlIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggZm9yIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgLiBXaGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIHVzZWQ/IFRpbWUgdG8gZ28gb2xkIHNjaG9vbC4gSSdsbCByZWFjaCBmb3IgYGdyZXBgIGFuZCBzZWFyY2ggdGhlIGNvZGViYXNlLiBBIHF1aWNrIGBncmVwYCBmb3IgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIHNwZWNpZmljIGxvY2F0aW9ucyB3aGVyZSB0aGlzIGNyaXRpY2FsIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQsIGFuZCBoZWxwIG1lIHRyYWNlIGJhY2sgdGhlIGxvZ2ljIGFuZCB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBkaXNhYmxlIHByb2Nlc3MgaXMgdHJpZ2dlcmVkLiBGcm9tIHRoZXJlLCBJIGNhbiBiZWdpbiB0byB1bnJhdmVsIGl0cyByb2xlIGluIHRoZSBsYXJnZXIgdmZpby1wY2kgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjI4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NTozMi41OTQyOTQ4ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwMDc2MjcwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX3BjaV9jb3JlX2Rpc2FibGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNTE0PXN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1MjgtXFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZoaXNpX2FjY192ZGV2LVxcdTAwM2VvcGVuX211dGV4KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1Mjk6XFx0XFx0XFx0dmZpb19wY2lfY29yZV9kaXNhYmxlKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTUzMC1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTczPXN0YXRpYyBpbnQgbnZncmFjZV9ncHVfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0yMjEtZXJyb3JfZXhpdDpcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoyMjI6XFx0dmZpb19wY2lfY29yZV9kaXNhYmxlKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTIyMy1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jPTU4PXN0YXRpYyBpbnQgcWF0X3ZmX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy03MS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjcyOlxcdFxcdHZmaW9fcGNpX2NvcmVfZGlzYWJsZSh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNzMtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz0xMDM9c3RhdGljIGludCB2ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xMTctXFx0XFx0XFx0cGNpX3dhcm4ocGRldiwgXFxcIkZhaWxlZCB0byBzZXR1cCBJbnRlbCBJR0QgcmVnaW9uc1xcXFxuXFxcIik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jOjExODpcXHRcXHRcXHR2ZmlvX3BjaV9jb3JlX2Rpc2FibGUodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTExOS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NjgwPUVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfZW5hYmxlKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy02ODEtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NjgyOnZvaWQgdmZpb19wY2lfY29yZV9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy02ODMte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtODEzLX1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo4MTQ6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9kaXNhYmxlKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MTUtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9ODE2PXZvaWQgdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MzEtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6ODMyOlxcdHZmaW9fcGNpX2NvcmVfZGlzYWJsZSh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MzMtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYz0zMTY9aW50IHZpcnRpb3ZmX29wZW5fbGVnYWN5X2lvKHN0cnVjdCB2aXJ0aW92Zl9wY2lfY29yZV9kZXZpY2UgKnZpcnR2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmMtMzIxLVxcdC8qXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmM6MzIyOlxcdCAqIFVwb24gY2xvc2VfZGV2aWNlKCkgdGhlIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpIGlzIGNhbGxlZFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jLTMyMy1cXHQgKiBhbmQgd2lsbCBjbG9zZSBhbGwgdGhlIHByZXZpb3VzIG1tYXBzLCBzbyBpdCBzZWVtcyB0aGF0IHRoZVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTIxPXN0YXRpYyBpbnQgdmlydGlvdmZfcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTM0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MzU6XFx0XFx0dmZpb19wY2lfY29yZV9kaXNhYmxlKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0zNi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmg9MTkzPWludCB2ZmlvX3BjaV9jb3JlX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oOjE5NDp2b2lkIHZmaW9fcGNpX2NvcmVfZGlzYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oLTE5NS12b2lkIHZmaW9fcGNpX2NvcmVfZmluaXNoX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xcbi0tXFxuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmg9MjMxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19hbGlnbmVkX2Zvcl9vcmRlcihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oLTI0NC0gKiBmYWlsZWQuICBUaGlzIHNoYWxsIG9ubHkgYmUgdXNlZCBhZnRlciB2ZmlvX3BjaV9jb3JlX2VuYWJsZSgpXFxuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmg6MjQ1OiAqIGhhcyBzZXQgdXAgdGhlIEJBUiBtYXBzIGFuZCBiZWZvcmUgdmZpb19wY2lfY29yZV9kaXNhYmxlKClcXG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaC0yNDYtICogdGVhcnMgdGhlbSBkb3duLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NTozNC4xOTUwNjYyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg0OTYwOTU2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFZGSU8gRGV2aWNlIENsb3N1cmUgXHUwMDI2IE9wZW5pbmcgRmFpbHVyZXMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmVoYXZpb3Igb2YgVkZJTyB3aGVuIGl0IGVuY291bnRlcnMgYSBmYWlsdXJlIGR1cmluZyBlaXRoZXIgY2xvc2luZyBvciBvcGVuaW5nIGEgZGV2aWNlLiBTcGVjaWZpY2FsbHksIEknbSBmb2N1c2luZyBvbiB0aGUgY29yZSBoYW5kbGluZyB3aXRoaW4gdGhlIFZGSU8tUENJIGRyaXZlci4gVG8gZ2V0IHN0YXJ0ZWQsIEknbSBnb2luZyB0byBwaW5wb2ludCB0aGUgYHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlYCBmdW5jdGlvbi4gSSBrbm93IHRoYXQncyB0aGUgbGlrZWx5IGVudHJ5IHBvaW50IGZvciBkZXZpY2UgY2xvc3VyZSBsb2dpYyB3aXRoaW4gdGhlIGBkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY2AgZmlsZS4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBzb3VyY2UgY29kZSBhbmQgc2VlIHdoYXQgd2UndmUgZ290ISBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBmYWlsdXJlIGNvbmRpdGlvbnMgYW5kIHRoZSBlcnJvciBwYXRocyB3aXRoaW4gdGhpcyBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk2MiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU1OjM2LjA0NDY3NzgzMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MTUsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4MTU6XFx0XFxuIDgxNjpcXHR2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbiA4MTc6XFx0e1xcbiA4MTg6XFx0XFx0c3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2ID1cXG4gODE5OlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSwgdmRldik7XFxuIDgyMDpcXHRcXG4gODIxOlxcdFxcdGlmICh2ZGV2LVxcdTAwM2Vzcmlvdl9wZl9jb3JlX2Rldikge1xcbiA4MjI6XFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dmRldi1cXHUwMDNlc3Jpb3ZfcGZfY29yZV9kZXYtXFx1MDAzZXZmX3Rva2VuLVxcdTAwM2Vsb2NrKTtcXG4gODIzOlxcdFxcdFxcdFdBUk5fT04oIXZkZXYtXFx1MDAzZXNyaW92X3BmX2NvcmVfZGV2LVxcdTAwM2V2Zl90b2tlbi1cXHUwMDNldXNlcnMpO1xcbiA4MjQ6XFx0XFx0XFx0dmRldi1cXHUwMDNlc3Jpb3ZfcGZfY29yZV9kZXYtXFx1MDAzZXZmX3Rva2VuLVxcdTAwM2V1c2Vycy0tO1xcbiA4MjU6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2ZGV2LVxcdTAwM2Vzcmlvdl9wZl9jb3JlX2Rldi1cXHUwMDNldmZfdG9rZW4tXFx1MDAzZWxvY2spO1xcbiA4MjY6XFx0XFx0fVxcbiA4Mjc6XFx0I2lmIElTX0VOQUJMRUQoQ09ORklHX0VFSClcXG4gODI4OlxcdFxcdGVlaF9kZXZfcmVsZWFzZSh2ZGV2LVxcdTAwM2VwZGV2KTtcXG4gODI5OlxcdCNlbmRpZlxcbiA4MzA6XFx0XFx0dmZpb19wY2lfZG1hX2J1Zl9jbGVhbnVwKHZkZXYpO1xcbiA4MzE6XFx0XFxuIDgzMjpcXHRcXHR2ZmlvX3BjaV9jb3JlX2Rpc2FibGUodmRldik7XFxuIDgzMzpcXHRcXG4gODM0OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnZkZXYtXFx1MDAzZWlnYXRlKTtcXG4gODM1OlxcdFxcdHZmaW9fcGNpX2V2ZW50ZmRfcmVwbGFjZV9sb2NrZWQodmRldiwgXFx1MDAyNnZkZXYtXFx1MDAzZWVycl90cmlnZ2VyLCBOVUxMKTtcXG4gODM2OlxcdFxcdHZmaW9fcGNpX2V2ZW50ZmRfcmVwbGFjZV9sb2NrZWQodmRldiwgXFx1MDAyNnZkZXYtXFx1MDAzZXJlcV90cmlnZ2VyLCBOVUxMKTtcXG4gODM3OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dmRldi1cXHUwMDNlaWdhdGUpO1xcbiA4Mzg6XFx0fVxcbiA4Mzk6XFx0RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UpO1xcbiA4NDA6XFx0XFxuIDg0MTpcXHR2b2lkIHZmaW9fcGNpX2NvcmVfZmluaXNoX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuIDg0MjpcXHR7XFxuIDg0MzpcXHRcXHR2ZmlvX3BjaV9wcm9iZV9tbWFwcyh2ZGV2KTtcXG4gODQ0OlxcdCNpZiBJU19FTkFCTEVEKENPTkZJR19FRUgpXFxuIDg0NTpcXHRcXHRlZWhfZGV2X29wZW4odmRldi1cXHUwMDNlcGRldik7XFxuIDg0NjpcXHQjZW5kaWZcXG4gODQ3OlxcdFxcbiA4NDg6XFx0XFx0aWYgKHZkZXYtXFx1MDAzZXNyaW92X3BmX2NvcmVfZGV2KSB7XFxuIDg0OTpcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ2ZGV2LVxcdTAwM2Vzcmlvdl9wZl9jb3JlX2Rldi1cXHUwMDNldmZfdG9rZW4tXFx1MDAzZWxvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NTozNi4wNDQ4MjE3NjFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTE0NDQyNDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFZGSU8tUENJIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0IHRoaW5ncyBmaXJzdDogSSBuZWVkIHRvIGRldGVybWluZSBpZiBWRklPLVBDSSBpcyBldmVuICphY2Nlc3NpYmxlKiB3aXRoaW4gdGhlIHN0YW5kYXJkIHN5emthbGxlciBRRU1VIFZNIHNldHVwLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBIb2xkIG9uLCB0aG91Z2guIERvZXMgYSBzdGFuZGFyZCBRRU1VIFZNIGV2ZW4gaGF2ZSBQQ0kgZGV2aWNlcyByZWFkaWx5IGF2YWlsYWJsZSB0aGF0ICpjb3VsZCogYmUgYm91bmQgdG8gdmZpby1wY2ksIG9yIGRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpmdXp6KiB2ZmlvLXBjaSBpdHNlbGY/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuXG5cblJpZ2h0LCBsZXQncyBzdGVwIGJhY2sgYW5kIGFwcHJvYWNoIHRoaXMgc3lzdGVtYXRpY2FsbHkuIEkgc2hvdWxkIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBzeXprYWxsZXIncyBjb3ZlcmFnZSByZXBvcnRzLCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kLCBvZiBjb3Vyc2UsIHRoZSBkZXZpY2UgZHJpdmVycy4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGJlc3Qgb3ZlcnZpZXcuXG5cbldhaXQgYSBzZWNvbmQuIFZGSU8tUENJIGlzbid0IGxpbWl0ZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUuIEl0IGNhbiBiZSBib3VuZCB0byAqYW55KiBQQ0kgZGV2aWNlIOKAkyBldmVuIHRoZSB2aXJ0dWFsIG9uZXMgUUVNVSBlbXVsYXRlcyBsaWtlIGUxMDAwIG9yIHZpcnRpby1wY2ksIG9yIHRob3NlIGhhbmRsZWQgdGhyb3VnaCBkeW5hbWljIHVuYmluZGluZyBhbmQgYmluZGluZyB2aWEgc3lzZnMgb3IgdGhlIGBkcml2ZXJfb3ZlcnJpZGVgIG1lY2hhbmlzbSB3aXRoaW4gdGhlIHZmaW8tcGNpIGRyaXZlci4gVGhhdCBvcGVucyB1cCBhIHJhbmdlIG9mIHBvc3NpYmlsaXRpZXMuXG5cbk5vdywgYSBrZXkgcXVlc3Rpb246IGNhbiB1c2Vyc3BhY2UgYWN0dWFsbHkgb3BlbiBhIFZGSU8gY29udGFpbmVyLCBncm91cCwgb3IgZGV2aWNlIGluIHRoaXMgY29udGV4dD8gVGhhdCdzIHRoZSBjcnVjaWFsIHBvaW50IGZvciBhIGZ1enplciwgYW5kIHRoZSBvbmUgSSBuZWVkIHRvIGZvY3VzIG9uLlxuXG5Pa2F5LCBJIG5lZWQgdG8gc2VlIGlmIHN5emthbGxlciBoYXMgZGVzY3JpcHRpb25zIGZvciB2ZmlvOiB0aW1lIHRvIGV4YW1pbmUgdGhvc2UuXG5cbk9uZSBsYXN0IHRoaW5nLCBiZWZvcmUgSSBkaWcgdG9vIGRlZXAsIEkgc2hvdWxkIGNoZWNrIHRoZSBgVkZJT19QQ0lfQ09SRWAgYW5kIGBWRklPX1BDSWAgS2NvbmZpZyBvcHRpb25zIGFuZCBzZWUgaG93IHRoZXkgYXJlIGFjdHVhbGx5IHVzZWQuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBwaWN0dXJlIG9mIHdoYXQncyBlbmFibGVkIGFuZCBob3cgaXQncyBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODkyLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDg6NTU6MzkuMTU5MjY3NjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODM5NDA5NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZGSU9fUENJXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz0yPW1lbnUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgUENJIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNC1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6NTpjb25maWcgVkZJT19QQ0lfQ09SRVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy02LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctOS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MTA6Y29uZmlnIFZGSU9fUENJX0lOVFhcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTEtXFx0ZGVmX2Jvb2wgeSBpZiAhUzM5MFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTEzLVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoxNDpjb25maWcgVkZJT19QQ0lcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgVkZJTyBzdXBwb3J0IGZvciBhbnkgUENJIGRldmljZVxcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz0yMz1pZiBWRklPX1BDSVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoyNDpjb25maWcgVkZJT19QQ0lfVkdBXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIkdlbmVyaWMgVkZJTyBQQ0kgc3VwcG9ydCBmb3IgVkdBIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMzMtXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjM0OmNvbmZpZyBWRklPX1BDSV9JR0RcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMzUtXFx0Ym9vbCBcXFwiR2VuZXJpYyBWRklPIFBDSSBleHRlbnNpb25zIGZvciBJbnRlbCBncmFwaGljcyAoR1ZULWQpXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnPTQ1PWVuZGlmXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ2LVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiVkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTU3LVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo1ODpjb25maWcgVkZJT19QQ0lfRE1BQlVGXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTU5LVxcdGRlZl9ib29sIHkgaWYgVkZJT19QQ0lfQ09SRSBcXHUwMDI2XFx1MDAyNiBQQ0lfUDJQRE1BIFxcdTAwMjZcXHUwMDI2IERNQV9TSEFSRURfQlVGRkVSXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU1OjQwLjg0MzI0Mzg0MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzM3MTE3OTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIFZGSU8gUENJIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBWRklPIFBDSSBzZXR1cC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byBgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IHBhcnRpY3VsYXIgZHJpdmVyIGFyZSBkZWZpbmVkLCB0aGUgdGhpbmdzIHRoYXQgY29udHJvbCB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW5kIGhvdyB0aGUgbW9kdWxlIHdpbGwgYmVoYXZlLiBJdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgVkZJTyBQQ0kgZHJpdmVyIGlzIGJ1aWx0IGFuZCBjb25maWd1cmVkLiBJJ20gaG9waW5nIEkgY2FuIGdsZWFuIHdoYXQgSSBuZWVkIHF1aWNrbHkgZnJvbSB0aGVyZS4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDE5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDg6NTU6NDIuNTgwMzY0MDA0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0bWVudSBcXFwiVkZJTyBzdXBwb3J0IGZvciBQQ0kgZGV2aWNlc1xcXCJcXG4gICAzOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBWRklPX1BDSV9DT1JFXFxuICAgNjpcXHRcXHR0cmlzdGF0ZVxcbiAgIDc6XFx0XFx0c2VsZWN0IFZGSU9fVklSUUZEXFxuICAgODpcXHRcXHRzZWxlY3QgSVJRX0JZUEFTU19NQU5BR0VSXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBWRklPX1BDSV9JTlRYXFxuICAxMTpcXHRcXHRkZWZfYm9vbCB5IGlmICFTMzkwXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIFZGSU9fUENJX0NPUkVcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIFZGSU9fUENJXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBWRklPIHN1cHBvcnQgZm9yIGFueSBQQ0kgZGV2aWNlXFxcIlxcbiAgMTY6XFx0XFx0c2VsZWN0IFZGSU9fUENJX0NPUkVcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIGdlbmVyaWMgUENJIFZGSU8gYnVzIGRyaXZlciB3aGljaCBjYW4gY29ubmVjdCBhbnlcXG4gIDE5OlxcdFxcdCAgUENJIGRldmljZSB0byB0aGUgVkZJTyBmcmFtZXdvcmsuXFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDIyOlxcdFxcbiAgMjM6XFx0aWYgVkZJT19QQ0lcXG4gIDI0OlxcdGNvbmZpZyBWRklPX1BDSV9WR0FcXG4gIDI1OlxcdFxcdGJvb2wgXFxcIkdlbmVyaWMgVkZJTyBQQ0kgc3VwcG9ydCBmb3IgVkdBIGRldmljZXNcXFwiXFxuICAyNjpcXHRcXHRkZXBlbmRzIG9uIFg4NiBcXHUwMDI2XFx1MDAyNiBWR0FfQVJCXFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIFN1cHBvcnQgZm9yIFZHQSBleHRlbnNpb24gdG8gVkZJTyBQQ0kuICBUaGlzIGV4cG9zZXMgYW4gYWRkaXRpb25hbFxcbiAgMjk6XFx0XFx0ICByZWdpb24gb24gVkdBIGRldmljZXMgZm9yIGFjY2Vzc2luZyBsZWdhY3kgVkdBIGFkZHJlc3NlcyB1c2VkIGJ5XFxuICAzMDpcXHRcXHQgIEJJT1MgYW5kIGdlbmVyaWMgdmlkZW8gZHJpdmVycy5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0ICBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRjb25maWcgVkZJT19QQ0lfSUdEXFxuICAzNTpcXHRcXHRib29sIFxcXCJHZW5lcmljIFZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIEludGVsIGdyYXBoaWNzIChHVlQtZClcXFwiXFxuICAzNjpcXHRcXHRkZXBlbmRzIG9uIFg4NlxcbiAgMzc6XFx0XFx0ZGVmYXVsdCB5XFxuICAzODpcXHRcXHRoZWxwXFxuICAzOTpcXHRcXHQgIFN1cHBvcnQgZm9yIEludGVsIElHRCBzcGVjaWZpYyBleHRlbnNpb25zIHRvIGVuYWJsZSBkaXJlY3RcXG4gIDQwOlxcdFxcdCAgYXNzaWdubWVudCB0byB2aXJ0dWFsIG1hY2hpbmVzLiAgVGhpcyBpbmNsdWRlcyBleHBvc2luZyBhbiBJR0RcXG4gIDQxOlxcdFxcdCAgc3BlY2lmaWMgZmlybXdhcmUgdGFibGUgYW5kIHJlYWQtb25seSBjb3BpZXMgb2YgdGhlIGhvc3QgYnJpZGdlXFxuICA0MjpcXHRcXHQgIGFuZCBMUEMgYnJpZGdlIGNvbmZpZyBzcGFjZS5cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0ICBUbyBlbmFibGUgSW50ZWwgSUdEIGFzc2lnbm1lbnQgdGhyb3VnaCB2ZmlvLXBjaSwgc2F5IFkuXFxuICA0NTpcXHRlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NTo0Mi41ODA0MjU2NzRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjU1OTkyNjAwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBWRklPLVBDSSBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBjb21taXQgdGhhdCBtb2RpZmllcyB0aGUgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgZnVuY3Rpb24gd2l0aGluIHRoZSBWRklPLVBDSSBkcml2ZXIuIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZXBsYWNlbWVudCBvZiBhIGNvbmRpdGlvbmFsIGBwY2lfZGV2X3RyeWxvY2soYnJpZGdlKWAgd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGBwY2lfZGV2X2xvY2soYnJpZGdlKWAuIFRoZSBvbGQgY29kZSBoYWQgYSBgZ290byBvdXRfcmVzdG9yZV9zdGF0ZWAgaWYgdGhlIGJyaWRnZSBsb2NrIGNvdWxkbid0IGJlIGFjcXVpcmVkLCBidXQgbm93IGl0IHVuY29uZGl0aW9uYWxseSBhY3F1aXJlcyB0aGUgbG9jay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgcG90ZW50aWFsbHkgcmlza3kgY2hhbmdlLiBVbmNvbmRpdGlvbmFsIGxvY2tpbmcgbGlrZSB0aGlzIGNvdWxkIGVhc2lseSBsZWFkIHRvIGxvY2sgaW52ZXJzaW9uLCBkZWFkbG9ja3MsIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCBsb2NrZGVwIHdhcm5pbmdzLCBlc3BlY2lhbGx5IGR1cmluZyBkZXZpY2UgZGlzYWJsZSBvciBjbG9zZSBvcGVyYXRpb25zIHdoZXJlIGxvY2tpbmcgb3JkZXIgY2FuIGJlIGNyaXRpY2FsLiBUaGlzIGFsc28gcG90ZW50aWFsbHkgYWZmZWN0cyBkb3duc3RyZWFtIGRldmljZSByZXNldHMuXG5cblRoZSBjb21tZW50IGFib3ZlIHRoZSBjaGFuZ2Ugc3VnZ2VzdHMgYW4gYXR0ZW1wdCB0byBwcmV2ZW50IGRlYWRsb2NrcywgYnV0IGF0IHdoYXQgY29zdD8gVGhpcyBraW5kIG9mIGJsYW5rZXQgbG9ja2luZyBjYW4gYmUgYSB2ZXJ5IGJsdW50IGluc3RydW1lbnQuIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGNvZGUgaXMgZXZlbiByZWFjaGFibGUuIFRoZSBjb250ZXh0IGhlcmUgaXMgVkZJTywgc28gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiBUaGUgZG9jdW1lbnRhdGlvbiBzYXlzIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGxpa2UgYC5yZW1vdmVgIGFuZCBgLnNodXRkb3duYCkgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLiBJcyB0aGF0IHdoYXQncyBoYXBwZW5pbmcgaGVyZT8gTm8sIGxldCdzIGRvdWJsZSBjaGVjay5cblxuSXQgbG9va3MgbGlrZSBJIHdhcyB3cm9uZy4gTGV0IG1lIHJldmlldyB0aGUgY2FsbCBzaXRlczogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhIFZGSU8gZGV2aWNlIEZEIG9yIFZGSU8gY29udGFpbmVyIGlzIGNsb3NlZCBieSB1c2Vyc3BhY2UgdmlhIGAvZGV2L3ZmaW8vLi4uYCBhbmQgcmVsYXRlZCBJT0NUTHMuIFNvIGl0J3MgY2FsbGVkIGR1cmluZyBjbGVhbnVwIHdoZW4gdXNlcnNwYWNlIGlzIGRvbmUgd2l0aCB0aGUgZGV2aWNlLiBUaGlzIGlzIGEgY3JpdGljYWwgY29kZSBwYXRoISBUaGlzIGNoYW5nZXMgZXZlcnl0aGluZy5cblxuT2ssIG5vdyBJIGhhdmUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZzogQ2xvc2luZyB0aGUgVkZJTyBkZXZpY2UgaXMgdGhlIHByaW1hcnkgcGF0aCB0byBjYWxsIHRoaXMgZnVuY3Rpb24uIFRoaXMgbWVhbnMgdGhhdCB0aGlzIHVuY29uZGl0aW9uYWwgbG9ja2luZyBjb3VsZCBwb3RlbnRpYWxseSBibG9jayB0aGUgZGV2aWNlIGNsb3NlLCB3aGljaCB3b3VsZCBiZSByZWFsbHkgYmFkLiBJdCBhZmZlY3RzIHRoZSBjb3JlIHVzZXIgZXhwZXJpZW5jZSwgbWFraW5nIHVzZXJzcGFjZSBvcGVyYXRpb25zIGxlc3MgcmVsaWFibGUuIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGxvY2tpbmcgaGllcmFyY2h5IHRvIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCByaXNrcyBoZXJlIGFuZCB2ZXJpZnkgdGhlcmUgaXNuJ3QgYSBkZWFkbG9jayBzY2VuYXJpby5cblxuXG4iLCJJbnB1dFRva2VucyI6ODgwNywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NTo0OS4xNDAzNTM5NzFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTE2NTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNsb3NlX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9Mjg9c3RhdGljIGludCB2ZmlvX2NkeF9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTczLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjc0OnN0YXRpYyB2b2lkIHZmaW9fY2R4X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy03NS17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yOTE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19jZHhfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjk1LVxcdC5vcGVuX2RldmljZVxcdD0gdmZpb19jZHhfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6Mjk2OlxcdC5jbG9zZV9kZXZpY2VcXHQ9IHZmaW9fY2R4X2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yOTctXFx0LmlvY3RsXFx0XFx0PSB2ZmlvX2NkeF9pb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmZpby9kZXZpY2VfY2Rldi5jPTkyPWxvbmcgdmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmQoc3RydWN0IHZmaW9fZGV2aWNlX2ZpbGUgKmRmLFxcbi0tXFxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmMtMTU4LVxcdGlmIChyZXQpXFxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmM6MTU5OlxcdFxcdGdvdG8gb3V0X2Nsb3NlX2RldmljZTtcXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYy0xNjAtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYy0xNjktXFxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmM6MTcwOm91dF9jbG9zZV9kZXZpY2U6XFxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmMtMTcxLVxcdHZmaW9fZGZfY2xvc2UoZGYpO1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTY4PXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfcmVzZXRfZGV2aWNlKHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtOTYtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjk3OnN0YXRpYyB2b2lkIHZmaW9fZnNsX21jX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtOTgte1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTU3NT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2ZzbF9tY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTc5LVxcdC5vcGVuX2RldmljZVxcdD0gdmZpb19mc2xfbWNfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjU4MDpcXHQuY2xvc2VfZGV2aWNlXFx0PSB2ZmlvX2ZzbF9tY19jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTU4MS1cXHQuaW9jdGxcXHRcXHQ9IHZmaW9fZnNsX21jX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL2dyb3VwLmM9MTcwPXN0YXRpYyBpbnQgdmZpb19kZl9ncm91cF9vcGVuKHN0cnVjdCB2ZmlvX2RldmljZV9maWxlICpkZilcXG4tLVxcbmRyaXZlcnMvdmZpby9ncm91cC5jLTIxMi1cXHRcXHRpZiAocmV0KVxcbmRyaXZlcnMvdmZpby9ncm91cC5jOjIxMzpcXHRcXHRcXHRnb3RvIG91dF9jbG9zZV9kZXZpY2U7XFxuZHJpdmVycy92ZmlvL2dyb3VwLmMtMjE0LVxcdH1cXG4tLVxcbmRyaXZlcnMvdmZpby9ncm91cC5jLTIyNS1cXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYzoyMjY6b3V0X2Nsb3NlX2RldmljZTpcXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yMjctXFx0dmZpb19kZl9jbG9zZShkZik7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYz0yNTU9c3RhdGljIHN0cnVjdCBmaWxlICp2ZmlvX2RldmljZV9vcGVuX2ZpbGUoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yNzYtXFx0XFx0cmV0ID0gUFRSX0VSUihmaWxlcCk7XFxuZHJpdmVycy92ZmlvL2dyb3VwLmM6Mjc3OlxcdFxcdGdvdG8gZXJyX2Nsb3NlX2RldmljZTtcXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yNzgtXFx0fVxcbi0tXFxuZHJpdmVycy92ZmlvL2dyb3VwLmMtMjk0LVxcbmRyaXZlcnMvdmZpby9ncm91cC5jOjI5NTplcnJfY2xvc2VfZGV2aWNlOlxcbmRyaXZlcnMvdmZpby9ncm91cC5jLTI5Ni1cXHR2ZmlvX2RmX2dyb3VwX2Nsb3NlKGRmKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTUxND1zdGF0aWMgaW50IGhpc2lfYWNjX3ZmaW9fcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTQxLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTU0MjpzdGF0aWMgdm9pZCBoaXNpX2FjY192ZmlvX3BjaV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTQzLXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU1Mi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmhpc2lfYWNjX3ZkZXYtXFx1MDAzZW9wZW5fbXV0ZXgpO1xcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTU1MzpcXHR2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZShjb3JlX3ZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU1NC19XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE1ODE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfbWlncm5fb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg1LVxcdC5vcGVuX2RldmljZSA9IGhpc2lfYWNjX3ZmaW9fcGNpX29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTU4NjpcXHQuY2xvc2VfZGV2aWNlID0gaGlzaV9hY2NfdmZpb19wY2lfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU4Ny1cXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNjAyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIGhpc2lfYWNjX3ZmaW9fcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYwNi1cXHQub3Blbl9kZXZpY2UgPSBoaXNpX2FjY192ZmlvX3BjaV9vcGVuX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE2MDc6XFx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYwOC1cXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jPTMzNT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBpc21fcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zMzktXFx0Lm9wZW5fZGV2aWNlID0gaXNtX3ZmaW9fcGNpX29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYzozNDA6XFx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zNDEtXFx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM9MTMyMz1zdGF0aWMgaW50IG1seDV2Zl9wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzMzktXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYzoxMzQwOnN0YXRpYyB2b2lkIG1seDV2Zl9wY2lfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTM0MS17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzNDUtXFx0bWx4NXZmX2NtZF9jbG9zZV9taWdyYXRhYmxlKG12ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjEzNDY6XFx0dmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UoY29yZV92ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzNDctfVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYz0xMzg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG1seDV2Zl9wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzkwLVxcdC5vcGVuX2RldmljZSA9IG1seDV2Zl9wY2lfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYzoxMzkxOlxcdC5jbG9zZV9kZXZpY2UgPSBtbHg1dmZfcGNpX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzOTItXFx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jPTE3Mz1zdGF0aWMgaW50IG52Z3JhY2VfZ3B1X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMjI1LVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjIyNjpzdGF0aWMgdm9pZCBudmdyYWNlX2dwdV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMjI3LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTI1Mi1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoyNTM6XFx0dmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UoY29yZV92ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0yNTQtfVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA2OC1cXHQub3Blbl9kZXZpY2VcXHQ9IG52Z3JhY2VfZ3B1X29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjEwNjk6XFx0LmNsb3NlX2RldmljZVxcdD0gbnZncmFjZV9ncHVfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwNzAtXFx0LmlvY3RsXFx0XFx0PSBudmdyYWNlX2dwdV9pb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jPTEwODk9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgbnZncmFjZV9ncHVfcGNpX2NvcmVfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA5My1cXHQub3Blbl9kZXZpY2VcXHQ9IG52Z3JhY2VfZ3B1X29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjEwOTQ6XFx0LmNsb3NlX2RldmljZVxcdD0gdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA5NS1cXHQuaW9jdGxcXHRcXHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jPTE1OT1zdGF0aWMgaW50IHBkc192ZmlvX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMTc2LVxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM6MTc3OnN0YXRpYyB2b2lkIHBkc192ZmlvX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xNzgte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xODctXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwZHNfdmZpby1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM6MTg4OlxcdHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMTg5LX1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM9MTkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHBkc192ZmlvX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMTk1LVxcdC5vcGVuX2RldmljZSA9IHBkc192ZmlvX29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM6MTk2OlxcdC5jbG9zZV9kZXZpY2UgPSBwZHNfdmZpb19jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xOTctXFx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYz05MT1zdGF0aWMgdm9pZCBxYXRfdmZfZGlzYWJsZV9mZHMoc3RydWN0IHFhdF92Zl9jb3JlX2RldmljZSAqcWF0X3ZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtMTA1LVxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYzoxMDY6c3RhdGljIHZvaWQgcWF0X3ZmX3BjaV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jLTEwNy17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtMTEyLVxcdHFhdF92Zl9kaXNhYmxlX2ZkcyhxYXRfdmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjExMzpcXHR2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZShjb3JlX3ZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy0xMTQtfVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jPTYwND1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBxYXRfdmZfcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy02MDgtXFx0Lm9wZW5fZGV2aWNlID0gcWF0X3ZmX3BjaV9vcGVuX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmM6NjA5OlxcdC5jbG9zZV9kZXZpY2UgPSBxYXRfdmZfcGNpX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNjEwLVxcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM9MTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTMtXFx0Lm9wZW5fZGV2aWNlXFx0PSB2ZmlvX3BjaV9vcGVuX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM6MTU0OlxcdC5jbG9zZV9kZXZpY2VcXHQ9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTUtXFx0LmlvY3RsXFx0XFx0PSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTkwPWludCB2ZmlvX3BjaV9jb3JlX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy02Njgtb3V0X2ZyZWVfemRldjpcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo2Njk6XFx0dmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2UodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNjcwLW91dF9mcmVlX3N0YXRlOlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NjgyPXZvaWQgdmZpb19wY2lfY29yZV9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTc2MC1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo3NjE6XFx0dmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2UodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNzYyLVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9ODE0PUVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfZGlzYWJsZSk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtODE1LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjgxNjp2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTgxNy17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MzgtfVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjgzOTpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtODQwLVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg9OTQ9aW50IHZmaW9fcGNpX3pkZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaDo5NTp2b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtOTYtaW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9lcnIoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UsIHUzMiBmbGFncyxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oPTEwNT1zdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV96ZGV2X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oLTEwOS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaDoxMTA6c3RhdGljIGlubGluZSB2b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaC0xMTEte31cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jPTE4ND1pbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYy0yMDYtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmM6MjA3OnZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jLTIwOC17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYz0zMTY9aW50IHZpcnRpb3ZmX29wZW5fbGVnYWN5X2lvKHN0cnVjdCB2aXJ0aW92Zl9wY2lfY29yZV9kZXZpY2UgKnZpcnR2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmMtMzIxLVxcdC8qXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmM6MzIyOlxcdCAqIFVwb24gY2xvc2VfZGV2aWNlKCkgdGhlIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpIGlzIGNhbGxlZFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jLTMyMy1cXHQgKiBhbmQgd2lsbCBjbG9zZSBhbGwgdGhlIHByZXZpb3VzIG1tYXBzLCBzbyBpdCBzZWVtcyB0aGF0IHRoZVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTIxPXN0YXRpYyBpbnQgdmlydGlvdmZfcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTQ0LVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzo0NTpzdGF0aWMgdm9pZCB2aXJ0aW92Zl9wY2lfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy00Ni17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtNTAtXFx0dmlydGlvdmZfY2xvc2VfbWlncmF0aW9uKHZpcnR2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6NTE6XFx0dmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UoY29yZV92ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtNTItfVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX2xtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy04OC1cXHQub3Blbl9kZXZpY2UgPSB2aXJ0aW92Zl9wY2lfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjg5OlxcdC5jbG9zZV9kZXZpY2UgPSB2aXJ0aW92Zl9wY2lfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy05MC1cXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTEwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2aXJ0aW92Zl92ZmlvX3BjaV90cmFuX2xtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMTAtXFx0Lm9wZW5fZGV2aWNlID0gdmlydGlvdmZfcGNpX29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzoxMTE6XFx0LmNsb3NlX2RldmljZSA9IHZpcnRpb3ZmX3BjaV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTExMi1cXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTEyOD1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2aXJ0aW92Zl92ZmlvX3BjaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtMTMyLVxcdC5vcGVuX2RldmljZSA9IHZpcnRpb3ZmX3BjaV9vcGVuX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MTMzOlxcdC5jbG9zZV9kZXZpY2UgPSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtMTM0LVxcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz0xNDY9c3RhdGljIGludCB4ZV92ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE2My1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYzoxNjQ6c3RhdGljIHZvaWQgeGVfdmZpb19wY2lfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE2NS17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYy0xNzEtXFx0eGVfdmZpb19wY2lfc3RhdGVfbXV0ZXhfdW5sb2NrKHhlX3ZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jOjE3MjpcXHR2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZShjb3JlX3ZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE3My19XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz01MjI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgeGVfdmZpb19wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTI2LVxcdC5vcGVuX2RldmljZSA9IHhlX3ZmaW9fcGNpX29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jOjUyNzpcXHQuY2xvc2VfZGV2aWNlID0geGVfdmZpb19wY2lfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTUyOC1cXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2FtYmFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTExNS1cXHQub3Blbl9kZXZpY2VcXHQ9IHZmaW9fcGxhdGZvcm1fb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjExNjpcXHQuY2xvc2VfZGV2aWNlXFx0PSB2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTE3LVxcdC5pb2N0bFxcdFxcdD0gdmZpb19wbGF0Zm9ybV9pb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM9OTc9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19wbGF0Zm9ybV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEwMS1cXHQub3Blbl9kZXZpY2VcXHQ9IHZmaW9fcGxhdGZvcm1fb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDI6XFx0LmNsb3NlX2RldmljZVxcdD0gdmZpb19wbGF0Zm9ybV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy0xMDMtXFx0LmlvY3RsXFx0XFx0PSB2ZmlvX3BsYXRmb3JtX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM9MjAyPXN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9jYWxsX3Jlc2V0KHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIxNi1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyMTc6dm9pZCB2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMTgte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjM0LX1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyMzU6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9jbG9zZV9kZXZpY2UpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIzNi1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaD04ND1pbnQgdmZpb19wbGF0Zm9ybV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oOjg1OnZvaWQgdmZpb19wbGF0Zm9ybV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaC04Ni1sb25nIHZmaW9fcGxhdGZvcm1faW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19tYWluLmM9NTA3PXZvaWQgdmZpb19kZXZpY2VfcHV0X2t2bShzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX21haW4uYy01MjUtXFxuZHJpdmVycy92ZmlvL3ZmaW9fbWFpbi5jOjUyNjovKiB0cnVlIGlmIHRoZSB2ZmlvX2RldmljZSBoYXMgb3Blbl9kZXZpY2UoKSBjYWxsZWQgYnV0IG5vdCBjbG9zZV9kZXZpY2UoKSAqL1xcbmRyaXZlcnMvdmZpby92ZmlvX21haW4uYy01Mjctc3RhdGljIGJvb2wgdmZpb19hc3NlcnRfZGV2aWNlX29wZW4oc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19tYWluLmM9NTgyPXN0YXRpYyB2b2lkIHZmaW9fZGZfZGV2aWNlX2xhc3RfY2xvc2Uoc3RydWN0IHZmaW9fZGV2aWNlX2ZpbGUgKmRmKVxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9fbWFpbi5jLTU4OC1cXG5kcml2ZXJzL3ZmaW8vdmZpb19tYWluLmM6NTg5OlxcdGlmIChkZXZpY2UtXFx1MDAzZW9wcy1cXHUwMDNlY2xvc2VfZGV2aWNlKVxcbmRyaXZlcnMvdmZpby92ZmlvX21haW4uYzo1OTA6XFx0XFx0ZGV2aWNlLVxcdTAwM2VvcHMtXFx1MDAzZWNsb3NlX2RldmljZShkZXZpY2UpO1xcbmRyaXZlcnMvdmZpby92ZmlvX21haW4uYy01OTEtXFx0aWYgKGlvbW11ZmQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU1OjQ5LjE4ODQ3NDUzN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MzA5NTI0NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IEZ1enppbmcgUG90ZW50aWFsIC0gSGlnaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoLCBzcGVjaWZpY2FsbHkgdGhlIGNoYW5nZXMgYXJvdW5kIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgLCBpcyB3b3J0aCBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgdG91Y2hlZCBieSBgY2xvc2VfZGV2aWNlYCAod2hlbiB0aGUgZGV2aWNlIEZEIGlzIGNsb3NlZCBpbiB1c2Vyc3BhY2UpIG9yIHdoZW4gb3BlbmluZyBmYWlscy5cblxuRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIFZGSU8vVkZJT19QQ0kgaXMgZXZlbiBhIHZpYWJsZSB0YXJnZXQuIENhbiBzeXprYWxsZXIgaW50ZXJhY3Qgd2l0aCB0aGVzZSBkZXZpY2VzPyBZZXMsIGFic29sdXRlbHkuIFdlIGNhbiBhY2Nlc3MgVkZJTyBkZXZpY2VzIHRocm91Z2ggYC9kZXYvdmZpby8qYCwgYC9kZXYvdmZpby9kZXZpY2VzL3ZmaW8qYCwgb3IgYC9kZXYvaW9tbXVmZGAsIGFuZCBzdGFuZGFyZCBRRU1VIFZNcyBtYWtlIHRoaXMgZWFzeSB3aXRoIHZpcnR1YWwgUENJIGRldmljZXMuIEdvb2QsIHRoYXQncyBhIHBvc2l0aXZlIHN0YXJ0LlxuXG5UaGUgcGF0Y2gncyBhY3R1YWwgbW9kaWZpY2F0aW9uIG9mIHRoZSBsb2NraW5nIGJlaGF2aW9yIG9mIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGlzIHRoZSBjb3JlLiBJdCBzd2l0Y2hlcyBmcm9tIGEgYHRyeWxvY2tgIGFwcHJvYWNoIHRvIGEgZ3VhcmFudGVlZCBgbG9ja2Agd2hlbiBkZWFsaW5nIHdpdGggdGhlIGJyaWRnZSBkZXZpY2UsIHdoaWNoIGlzIGEgc3VidGxlLCB5ZXQgcG90ZW50aWFsbHkgaW1wb3J0YW50IGNoYW5nZSBpbiBzeW5jaHJvbml6YXRpb24uXG5cbk5vdywgbGV0J3MgY29uc3VsdCB0aGUgY3JpdGVyaWEuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgYmVoYXZpb3IsIHdoaWNoIGZhbGxzIHVuZGVyIHRoZSBcIkNvcmUgU3Vic3lzdGVtc1wiIGNhdGVnb3J5LiBUaGlzIGlzIGEgdmVyeSBzdHJvbmcgcG9zaXRpdmUuIFRoZSBmYWN0IHRoYXQgdGhlIGNoYW5nZXMgcmVzdHJ1Y3R1cmUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MgYWxzbyBtYWtlIHRoZSBwYXRjaCBpbnRlcmVzdGluZy5cblxuVG8gYmUgc3VyZSwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGVyZSBhcmUgYW55IG5lZ2F0aXZlIGNyaXRlcmlhLiBUaGlzIGNvZGUgaXMgKm5vdCogdmVuZG9yLXNwZWNpZmljIG9yIHRpZWQgdG8gaGFyZHdhcmUgdGhhdCdzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2VkIGZ1bmN0aW9uIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGlzIGluIHRoZSBgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNgIGFuZCBpcyBnZW5lcmljIFZGSU8gUENJIGNvcmUgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYnkgUUVNVSwgbm90IGEgc3BlY2lhbCBkcml2ZXIgcmVxdWlyaW5nIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlLiBUaGlzIGlzIGdlbmVyaWMgUENJIGRldmljZXMgbWFuYWdlZCBieSBgdmZpby1wY2lgICh3aGljaCBjYW4gYmUgYW55IFBDSSBkZXZpY2UgaW4gUUVNVSwgZS5nLiB2aXJ0aW8tcGNpLCBldGMuKS4gVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGV4ZWN1dGVkIGR1cmluZyB0aGUgbm9ybWFsIGRldmljZSBsaWZlY3ljbGUsIGVpdGhlciBieSBjbG9zaW5nIHRoZSBkZXZpY2UsIGZkIGNsb3NlIG9yIHJlbGVhc2UsIG9yIGVycm9yIGhhbmRsaW5nLiBTbywgaXQncyBub3QgYSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2sgdHJpZ2dlcmVkIG9ubHkgYnkgUENJIGhvdC11bnBsdWcuXG5cblRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgcGFydGljdWxhcmx5IHRlbGxpbmc6IEkgc2VlIHRoYXQgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgaXRzZWxmIGlzIGRpcmVjdGx5IG1vZGlmaWVkLiBgdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2VgIGFuZCBgdmZpb19wY2lfb3Blbl9kZXZpY2VgIGFyZSBhbHNvIHJlbGV2YW50IGJlY2F1c2UgdGhleSBjYWxsIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGRpcmVjdGx5LCBpbmRpY2F0aW5nIGEgZGlyZWN0IGVudHJ5IHBvaW50LiBUaGlzIGNvbmZpcm1zIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSB0aGUgZm9jdXMgb2YgdGhlc2UgY2hhbmdlcyBhbmQgd2lsbCBiZSBwYXJ0IG9mIGZ1enppbmcuXG5cbkknbGwgY2hlY2sgYHZmaW9fcGNpX2NvcmUuY2AgYXJvdW5kIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGZvciBhbnkgYWRkaXRpb25hbCBjb250ZXh0IG9yIG90aGVyIGludGVyZXN0aW5nIHBhdGhzLiBIb3dldmVyLCBiYXNlZCBvbiB0aGUgaW5mb3JtYXRpb24gSSBoYXZlIG5vdywgdGhpcyBpcyBhIGRlZmluaXRlIFwiZ29cIiBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyOTAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDg6NTU6NTUuNDk4MDAxNTQxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3ODAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3ODA6XFx0XFx0ICogZHVyaW5nIHJlc2V0LiAgU3RvbGVuIGZyb20gcGNpX3Jlc2V0X2Z1bmN0aW9uKClcXG4gNzgxOlxcdFxcdCAqL1xcbiA3ODI6XFx0XFx0cGNpX3dyaXRlX2NvbmZpZ193b3JkKHBkZXYsIFBDSV9DT01NQU5ELCBQQ0lfQ09NTUFORF9JTlRYX0RJU0FCTEUpO1xcbiA3ODM6XFx0XFxuIDc4NDpcXHRcXHQvKlxcbiA3ODU6XFx0XFx0ICogVHJ5IHRvIGdldCB0aGUgbG9ja3Mgb3Vyc2VsdmVzIHRvIHByZXZlbnQgYSBkZWFkbG9jay4gVGhlXFxuIDc4NjpcXHRcXHQgKiBzdWNjZXNzIG9mIHRoaXMgaXMgZGVwZW5kZW50IG9uIGJlaW5nIGFibGUgdG8gbG9jayB0aGUgZGV2aWNlLFxcbiA3ODc6XFx0XFx0ICogd2hpY2ggaXMgbm90IGFsd2F5cyBwb3NzaWJsZS5cXG4gNzg4OlxcdFxcdCAqIFdlIGNhbiBub3QgdXNlIHRoZSBcXFwidHJ5XFxcIiByZXNldCBpbnRlcmZhY2UgaGVyZSwgd2hpY2ggd2lsbFxcbiA3ODk6XFx0XFx0ICogb3ZlcndyaXRlIHRoZSBwcmV2aW91c2x5IHJlc3RvcmVkIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uXFxuIDc5MDpcXHRcXHQgKi9cXG4gNzkxOlxcdFxcdGlmICh2ZGV2LVxcdTAwM2VyZXNldF93b3Jrcykge1xcbiA3OTI6XFx0XFx0XFx0YnJpZGdlID0gcGNpX3Vwc3RyZWFtX2JyaWRnZShwZGV2KTtcXG4gNzkzOlxcdFxcdFxcdGlmIChicmlkZ2UpXFxuIDc5NDpcXHRcXHRcXHRcXHRwY2lfZGV2X2xvY2soYnJpZGdlKTtcXG4gNzk1OlxcdFxcdFxcdGlmIChwY2lfZGV2X3RyeWxvY2socGRldikpIHtcXG4gNzk2OlxcdFxcdFxcdFxcdGlmICghX19wY2lfcmVzZXRfZnVuY3Rpb25fbG9ja2VkKHBkZXYpKVxcbiA3OTc6XFx0XFx0XFx0XFx0XFx0dmRldi1cXHUwMDNlbmVlZHNfcmVzZXQgPSBmYWxzZTtcXG4gNzk4OlxcdFxcdFxcdFxcdHBjaV9kZXZfdW5sb2NrKHBkZXYpO1xcbiA3OTk6XFx0XFx0XFx0fVxcbiA4MDA6XFx0XFx0XFx0aWYgKGJyaWRnZSlcXG4gODAxOlxcdFxcdFxcdFxcdHBjaV9kZXZfdW5sb2NrKGJyaWRnZSk7XFxuIDgwMjpcXHRcXHR9XFxuIDgwMzpcXHRcXG4gODA0OlxcdFxcdHBjaV9yZXN0b3JlX3N0YXRlKHBkZXYpO1xcbiA4MDU6XFx0b3V0OlxcbiA4MDY6XFx0XFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xcbiA4MDc6XFx0XFxuIDgwODpcXHRcXHR2ZmlvX3BjaV9kZXZfc2V0X3RyeV9yZXNldCh2ZGV2LVxcdTAwM2V2ZGV2LmRldl9zZXQpO1xcbiA4MDk6XFx0XFxuIDgxMDpcXHRcXHQvKiBQdXQgdGhlIHBtLXJ1bnRpbWUgdXNhZ2UgY291bnRlciBhY3F1aXJlZCBkdXJpbmcgZW5hYmxlICovXFxuIDgxMTpcXHRcXHRpZiAoIXZkZXYtXFx1MDAzZWRpc2FibGVfaWRsZV9kMylcXG4gODEyOlxcdFxcdFxcdHBtX3J1bnRpbWVfcHV0KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbiA4MTM6XFx0fVxcbiA4MTQ6XFx0RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9kaXNhYmxlKTtcXG4gODE1OlxcdFxcbiA4MTY6XFx0dm9pZCB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4gODE3OlxcdHtcXG4gODE4OlxcdFxcdHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiA9XFxuIDgxOTpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UsIHZkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NTo1NS40OTgxNzM3NzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYzODQ5MDQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqS2NvbmZpZyBhbmQgTWFrZWZpbGVzOiBUaGUgRm91bmRhdGlvbioqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgbXkgZHVja3MgaW4gYSByb3cuIEZpcnN0IHRoaW5ncyBmaXJzdDogbGV0J3MgdmVyaWZ5IHRoZSBLY29uZmlnIG9wdGlvbnMgdGhhdCAqdGhpcyogc3BlY2lmaWMgY29kZSBkZXBlbmRzIG9uLiBJdCdzIGNydWNpYWwgdG8gZW5zdXJlIHRoZSBuZWNlc3NhcnkgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYW5kIGNvcnJlY3RseSBjb25maWd1cmVkIGluIHRoZSBrZXJuZWwgYnVpbGQuIEkgZG9uJ3Qgd2FudCB0byB3YXN0ZSB0aW1lIGNoYXNpbmcgZG93biBidWlsZCBlcnJvcnMgbGF0ZXIgYmVjYXVzZSBhIGZ1bmRhbWVudGFsIGNvbXBvbmVudCBpcyBtaXNzaW5nIG9yIGRpc2FibGVkLiBHb3R0YSBnZXQgdGhlIGdyb3VuZHdvcmsgc29saWQuXG5cblRoZW4sIEknbGwgc3dpbmcgb3ZlciB0byB0aGUgYGRyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgbWFnaWMgaGFwcGVucywgd2hlcmUgdGhlIGJ1aWxkIHByb2Nlc3MgaXMgb3JjaGVzdHJhdGVkLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgY29kZSBpcyBpbnRlZ3JhdGVkLCB3aGF0IGRlcGVuZGVuY2llcyBpdCBwdWxscyBpbiwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lhbCBidWlsZCBmbGFncyBvciBjb25maWd1cmF0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gVGhlIE1ha2VmaWxlIHdpbGwgc2hvdyBtZSB0aGUgYnVpbGQgcnVsZXMsIG9iamVjdCBmaWxlcywgYW5kIGxpa2VseSwgaG93IHRoaXMgYWxsIGZpdHMgaW50byB0aGUgbGFyZ2VyIHZmaW8tcGNpIHBpY3R1cmUuIFRoaXMgZ2l2ZXMgYSBjbGVhcmVyIHBpY3R1cmUgb2Ygd2hldGhlciBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIGFyZSBtaXNzaW5nIGFuZCwgZnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gaW52ZXN0aWdhdGUgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0ODUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU1OjU4LjEzNjY2Njg2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdFxcbiAgIDM6XFx0dmZpby1wY2ktY29yZS15IDo9IHZmaW9fcGNpX2NvcmUubyB2ZmlvX3BjaV9pbnRycy5vIHZmaW9fcGNpX3Jkd3IubyB2ZmlvX3BjaV9jb25maWcub1xcbiAgIDQ6XFx0dmZpby1wY2ktY29yZS0kKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkgKz0gdmZpb19wY2lfemRldi5vXFxuICAgNTpcXHR2ZmlvLXBjaS1jb3JlLSQoQ09ORklHX1ZGSU9fUENJX0RNQUJVRikgKz0gdmZpb19wY2lfZG1hYnVmLm9cXG4gICA2OlxcdG9iai0kKENPTkZJR19WRklPX1BDSV9DT1JFKSArPSB2ZmlvLXBjaS1jb3JlLm9cXG4gICA3OlxcdFxcbiAgIDg6XFx0dmZpby1wY2kteSA6PSB2ZmlvX3BjaS5vXFxuICAgOTpcXHR2ZmlvLXBjaS0kKENPTkZJR19WRklPX1BDSV9JR0QpICs9IHZmaW9fcGNpX2lnZC5vXFxuICAxMDpcXHRvYmotJChDT05GSUdfVkZJT19QQ0kpICs9IHZmaW8tcGNpLm9cXG4gIDExOlxcdFxcbiAgMTI6XFx0b2JqLSQoQ09ORklHX01MWDVfVkZJT19QQ0kpICAgICAgICAgICArPSBtbHg1L1xcbiAgMTM6XFx0XFxuICAxNDpcXHRvYmotJChDT05GSUdfSVNNX1ZGSU9fUENJKSAgICAgICAgICAgKz0gaXNtL1xcbiAgMTU6XFx0XFxuICAxNjpcXHRvYmotJChDT05GSUdfSElTSV9BQ0NfVkZJT19QQ0kpICs9IGhpc2lsaWNvbi9cXG4gIDE3OlxcdFxcbiAgMTg6XFx0b2JqLSQoQ09ORklHX1BEU19WRklPX1BDSSkgKz0gcGRzL1xcbiAgMTk6XFx0XFxuICAyMDpcXHRvYmotJChDT05GSUdfVklSVElPX1ZGSU9fUENJKSArPSB2aXJ0aW8vXFxuICAyMTpcXHRcXG4gIDIyOlxcdG9iai0kKENPTkZJR19OVkdSQUNFX0dQVV9WRklPX1BDSSkgKz0gbnZncmFjZS1ncHUvXFxuICAyMzpcXHRcXG4gIDI0OlxcdG9iai0kKENPTkZJR19RQVRfVkZJT19QQ0kpICs9IHFhdC9cXG4gIDI1OlxcdFxcbiAgMjY6XFx0b2JqLSQoQ09ORklHX1hFX1ZGSU9fUENJKSArPSB4ZS9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDg6NTU6NTguMTM2NzI3NjkxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ3NzAxMTU3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQ6XG5cbioqRXhhbWluaW5nIFZGSU8gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIHRvcC1sZXZlbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFZGSU8uIFdoZXJlIGRvIEkgc3RhcnQ/IFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gbG9vayBmb3IgdGhvc2Ugd291bGQgYmUgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBkcml2ZXIncyBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgYGRyaXZlcnMvdmZpby9LY29uZmlnYC4gVGhhdCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludHMgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGUgVkZJTyBmZWF0dXJlcy4gSSdsbCBuZWVkIHRvIHJldmlldyB0aG9zZSBzZXR0aW5ncyB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBMZXQncyBkaWcgaW4gYW5kIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzMDksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU2OjAyLjkwNjg0NjE4MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0bWVudWNvbmZpZyBWRklPXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiVkZJTyBOb24tUHJpdmlsZWdlZCB1c2Vyc3BhY2UgZHJpdmVyIGZyYW1ld29ya1xcXCJcXG4gICA0OlxcdFxcdHNlbGVjdCBJT01NVV9BUElcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gSU9NTVVGRCB8fCAhSU9NTVVGRFxcbiAgIDY6XFx0XFx0c2VsZWN0IElOVEVSVkFMX1RSRUVcXG4gICA3OlxcdFxcdHNlbGVjdCBWRklPX0dST1VQIGlmIFNQQVBSX1RDRV9JT01NVSB8fCBJT01NVUZEPW5cXG4gICA4OlxcdFxcdHNlbGVjdCBWRklPX0RFVklDRV9DREVWIGlmICFWRklPX0dST1VQXFxuICAgOTpcXHRcXHRzZWxlY3QgVkZJT19DT05UQUlORVIgaWYgSU9NTVVGRD1uXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFZGSU8gcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIHNlY3VyZSB1c2Vyc3BhY2UgZGV2aWNlIGRyaXZlcnMuXFxuICAxMjpcXHRcXHQgIFNlZSBEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby5yc3QgZm9yIG1vcmUgZGV0YWlscy5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0ICBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRpZiBWRklPXFxuICAxNzpcXHRjb25maWcgVkZJT19ERVZJQ0VfQ0RFVlxcbiAgMTg6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgdGhlIFZGSU8gY2RldiAvZGV2L3ZmaW8vZGV2aWNlcy92ZmlvWFxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gSU9NTVVGRCBcXHUwMDI2XFx1MDAyNiAhU1BBUFJfVENFX0lPTU1VXFxuICAyMDpcXHRcXHRkZWZhdWx0ICFWRklPX0dST1VQXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIFRoZSBWRklPIGRldmljZSBjZGV2IGlzIGFub3RoZXIgd2F5IGZvciB1c2Vyc3BhY2UgdG8gZ2V0IGRldmljZVxcbiAgMjM6XFx0XFx0ICBhY2Nlc3MuIFVzZXJzcGFjZSBnZXRzIGRldmljZSBmZCBieSBvcGVuaW5nIGRldmljZSBjZGV2IHVuZGVyXFxuICAyNDpcXHRcXHQgIC9kZXYvdmZpby9kZXZpY2VzL3ZmaW9YLCBhbmQgdGhlbiBiaW5kIHRoZSBkZXZpY2UgZmQgd2l0aCBhbiBpb21tdWZkXFxuICAyNTpcXHRcXHQgIHRvIHNldCB1cCBzZWN1cmUgRE1BIGNvbnRleHQgZm9yIGRldmljZSBhY2Nlc3MuXFxuICAyNjpcXHRcXG4gIDI3OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIFZGSU9fR1JPVVBcXG4gIDMwOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBWRklPIGdyb3VwIC9kZXYvdmZpby8kZ3JvdXBfaWRcXFwiXFxuICAzMTpcXHRcXHRkZWZhdWx0IHlcXG4gIDMyOlxcdFxcdGhlbHBcXG4gIDMzOlxcdFxcdCAgIFZGSU8gZ3JvdXAgc3VwcG9ydCBwcm92aWRlcyB0aGUgdHJhZGl0aW9uYWwgbW9kZWwgZm9yIGFjY2Vzc2luZ1xcbiAgMzQ6XFx0XFx0ICAgZGV2aWNlcyB0aHJvdWdoIFZGSU8gYW5kIGlzIHVzZWQgYnkgdGhlIG1ham9yaXR5IG9mIHVzZXJzcGFjZVxcbiAgMzU6XFx0XFx0ICAgYXBwbGljYXRpb25zIGFuZCBkcml2ZXJzIG1ha2luZyB1c2Ugb2YgVkZJTy5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgWS5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0Y29uZmlnIFZGSU9fQ09OVEFJTkVSXFxuICA0MDpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciB0aGUgVkZJTyBjb250YWluZXIgL2Rldi92ZmlvL3ZmaW9cXFwiXFxuICA0MTpcXHRcXHRzZWxlY3QgVkZJT19JT01NVV9UWVBFMSBpZiBNTVUgXFx1MDAyNlxcdTAwMjYgKFg4NiB8fCBTMzkwIHx8IEFSTSB8fCBBUk02NClcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gVkZJT19HUk9VUFxcbiAgNDM6XFx0XFx0ZGVmYXVsdCB5XFxuICA0NDpcXHRcXHRoZWxwXFxuICA0NTpcXHRcXHQgIFRoZSBWRklPIGNvbnRhaW5lciBpcyB0aGUgY2xhc3NpYyBpbnRlcmZhY2UgdG8gVkZJTyBmb3IgZXN0YWJsaXNoaW5nXFxuICA0NjpcXHRcXHQgIElPTU1VIG1hcHBpbmdzLiBJZiBOIGlzIHNlbGVjdGVkIGhlcmUgdGhlbiBJT01NVUZEIG11c3QgYmUgdXNlZCB0b1xcbiAgNDc6XFx0XFx0ICBtYW5hZ2UgdGhlIG1hcHBpbmdzLlxcbiAgNDg6XFx0XFxuICA0OTpcXHRcXHQgIFVubGVzcyB0ZXN0aW5nIElPTU1VRkQgc2F5IFkgaGVyZS5cXG4gIDUwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NjowMi45MDY5MTU5NTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzMzNDk5NDAyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWRklPIFBDSSBMb2NraW5nIExvZ2ljIFJldmlldyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZGVkIHRvIGNvbmZpcm0gdGhlIG5lY2Vzc2FyeSBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYFBDSWAgZW5hYmxlcyBWRklPIHN1cHBvcnQsIGBWRklPYCBpcyB0aGUgdG9wLWxldmVsIG1lbnUgb3B0aW9uLCBgVkZJT19QQ0lgIHByb3ZpZGVzIGdlbmVyaWMgVkZJTyBzdXBwb3J0IGZvciBhbnkgUENJIGRldmljZSBhbmQgc2VsZWN0cyBgVkZJT19QQ0lfQ09SRWAsIGFuZCBgVkZJT19QQ0lfQ09SRWAgaXMgY29tcGlsZWQgd2hlbiBgVkZJT19QQ0lgIGlzIHNlbGVjdGVkLiBTbywgYFZGSU9gLCBgVkZJT19QQ0lgLCBhbmQgYFBDSWAgYXJlIHRoZSBvbmVzIHRvIGZvY3VzIG9uLlxuXG5UaGVuLCBJIGxvb2tlZCBhdCB0aGUgYGRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBjb25maXJtaW5nIHRoYXQgYFZGSU9fUENJYCBhbmQgYFZGSU9gIGFyZSBrZXkgYW5kIGRlcGVuZCBvbiBgUENJYC5cblxuTmV4dCwgSSBmb2N1c2VkIG9uIHJlbGV2YW50IHN5bWJvbHM6IHNwZWNpZmljYWxseSBgdmZpb19wY2lfY29yZV9kaXNhYmxlYCwgYHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlYCwgYHZmaW9fcGNpX29wZW5fZGV2aWNlYCwgYW5kIGFsc28gZG91YmxlLWNoZWNrZWQgYHZmaW9fcGNpX2NvcmVfZW5hYmxlYCwgd2hpY2ggYXJlIGFsbCBmb3VuZCBpbiBgdmZpb19wY2lfY29yZS5jYC4gVGhpcyBnYXZlIG1lIGEgZ29vZCBncmFzcCBvZiB0aGUgY29udHJvbCBwb2ludHMuXG5cbkkgcmV2aWV3ZWQgYHZmaW9fcGNpX2NvcmVfZW5hYmxlYCBhbmQgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAsIGFzIHRoZXkncmUgdGhlIGNvcmUgbGlmZWN5Y2xlIGZ1bmN0aW9ucyBtYW5hZ2luZyB0aGUgc3RhdGUgYW5kIGxvY2tzIG9mIFBDSSBkZXZpY2VzIHdpdGhpbiBWRklPLiBOb3csIHRoZSBwYXRjaCBmb2N1c2VzIG9uIGNoYW5naW5nIGxvY2tpbmcgbG9naWMgaW4gYHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpYC4gSXQgcmVwbGFjZXMgYSB0cnkgbG9jayBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBibG9ja2luZyBsb2NrLiBUaGF0IG1lYW5zIHRoZSBwYXRjaCBhbHRlcnMgc3luY2hyb25pemF0aW9uIGJlaGF2aW9yIGR1cmluZyB0ZWFyZG93biwgd2hpY2ggY2FuIGxlYWQgdG8gbG9jayBvcmRlciBpc3N1ZXMgYW5kIHBvdGVudGlhbCBkZWFkbG9ja3MuIFRoaXMgaXMgc2lnbmlmaWNhbnQsIGVzcGVjaWFsbHkgaW4gUUVNVSBlbnZpcm9ubWVudHMgd2l0aCBQQ0kgYW5kIFZGSU8gc3VwcG9ydC5cblxuQmFzZWQgb24gYWxsIG9mIHRoaXMsIHRoZSBwYXRjaCBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1enppbmcsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb24gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gSSd2ZSBvdXRsaW5lZCB0aGUgYFJlYXNvbmluZ2AgY2xlYXJseS4gQW5kIEkndmUgZG91YmxlIGNoZWNrZWQgdGhlIGBGb2N1c1N5bWJvbHNgIGFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgLiBJdCdzIGFsbCB2ZXJpZmllZCwgc28gSSdtIGdvb2QgdG8gcHJvY2VlZCB3aXRoIHNldHRpbmcgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjYzLCJPdXRwdXRUb2tlbnMiOjE4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU2OjEwLjI0MTkxMzM4MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNDAzODMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQ0lcIixcbiAgICBcIlZGSU9cIixcbiAgICBcIlZGSU9fUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19wY2lfY29yZV9kaXNhYmxlXCIsXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZVwiLFxuICAgIFwidmZpb19wY2lfY29yZV9lbmFibGVcIixcbiAgICBcInZmaW9fcGNpX29wZW5fZGV2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgbG9naWMgaW4gdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgYnkgcmVwbGFjaW5nIGEgdHJ5bG9jayBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBibG9ja2luZyBwY2lfZGV2X2xvY2soYnJpZGdlKS4gVGhpcyBhbHRlcnMgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgYmVoYXZpb3IgaW4gdGhlIFZGSU8gUENJIHRlYXJkb3duL2Rpc2FibGUgcGF0aCB3aGVuIGRldmljZSBpbnN0YW5jZXMgYXJlIGNsb3NlZCBvciBkaXNhYmxlZCwgd2hpY2ggY2FuIGludHJvZHVjZSBkZWFkbG9jayBvciBsb2NraW5nIGludmFyaWFudCBpc3N1ZXMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2l0aCBWRklPIFBDSSBzdXBwb3J0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBDSVwiLFxuICAgIFwiVkZJT1wiLFxuICAgIFwiVkZJT19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2Rpc2FibGVcIixcbiAgICBcInZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2VuYWJsZVwiLFxuICAgIFwidmZpb19wY2lfb3Blbl9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBsb2dpYyBpbiB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoKSBieSByZXBsYWNpbmcgYSB0cnlsb2NrIG9uIHRoZSB1cHN0cmVhbSBicmlkZ2Ugd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGJsb2NraW5nIHBjaV9kZXZfbG9jayhicmlkZ2UpLiBUaGlzIGFsdGVycyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBiZWhhdmlvciBpbiB0aGUgVkZJTyBQQ0kgdGVhcmRvd24vZGlzYWJsZSBwYXRoIHdoZW4gZGV2aWNlIGluc3RhbmNlcyBhcmUgY2xvc2VkIG9yIGRpc2FibGVkLCB3aGljaCBjYW4gaW50cm9kdWNlIGRlYWRsb2NrIG9yIGxvY2tpbmcgaW52YXJpYW50IGlzc3Vlcy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZGSU8gUENJIHN1cHBvcnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU2OjEwLjMxNTMyNTc4M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2MjQzNzc0MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NjoxMC4zMTU3OTg0OTNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNDYyMzg5OTk3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZGV2aWNlIGxvY2tpbmcgYmVoYXZpb3IgaW4gdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgYnkgcmVwbGFjaW5nIGEgdHJ5bG9jayAocGNpX2Rldl90cnlsb2NrKSBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBsb2NrIChwY2lfZGV2X2xvY2spIGFuZCByZW1vdmluZyBhbiB1bnVzZWQgZ290byBsYWJlbC4gVGhpcyBjaGFuZ2UgZXhjbHVzaXZlbHkgYWZmZWN0cyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBhbmQgZGV2aWNlIHJlc2V0IGZsb3cuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgYWxsb2NhdGUsIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBub3IgZG9lcyBpdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSBvciBhbHRlciBsb2dpYyBkZWFsaW5nIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIGxvY2sgb3JkZXIgaW52ZXJzaW9ucykgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUC9LQVNBTiByYXRoZXIgdGhhbiBLTVNBTi4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZiY2E0YTliOGRkOThlZWY0MzgzM2VmYzQ2ZjVlZWI3YzFmZTA2ODVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDA4OjU1OjIyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xuaW5kZXggMzYyYzM3NWEwNTc5OS4uODk2NmE1YmVhNDA2MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG4rKysgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xuQEAgLTc5MCw4ICs3OTAsOCBAQCB2b2lkIHZmaW9fcGNpX2NvcmVfZGlzYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG4gXHQgKi9cbiBcdGlmICh2ZGV2LVx1MDAzZXJlc2V0X3dvcmtzKSB7XG4gXHRcdGJyaWRnZSA9IHBjaV91cHN0cmVhbV9icmlkZ2UocGRldik7XG4tXHRcdGlmIChicmlkZ2UgXHUwMDI2XHUwMDI2ICFwY2lfZGV2X3RyeWxvY2soYnJpZGdlKSlcbi1cdFx0XHRnb3RvIG91dF9yZXN0b3JlX3N0YXRlO1xuK1x0XHRpZiAoYnJpZGdlKVxuK1x0XHRcdHBjaV9kZXZfbG9jayhicmlkZ2UpO1xuIFx0XHRpZiAocGNpX2Rldl90cnlsb2NrKHBkZXYpKSB7XG4gXHRcdFx0aWYgKCFfX3BjaV9yZXNldF9mdW5jdGlvbl9sb2NrZWQocGRldikpXG4gXHRcdFx0XHR2ZGV2LVx1MDAzZW5lZWRzX3Jlc2V0ID0gZmFsc2U7XG5AQCAtODAxLDcgKzgwMSw2IEBAIHZvaWQgdmZpb19wY2lfY29yZV9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbiBcdFx0XHRwY2lfZGV2X3VubG9jayhicmlkZ2UpO1xuIFx0fVxuIFxuLW91dF9yZXN0b3JlX3N0YXRlOlxuIFx0cGNpX3Jlc3RvcmVfc3RhdGUocGRldik7XG4gb3V0OlxuIFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDg6NTY6MTAuMzE1Nzk5NTYzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwMjUxNDYzMDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSB2ZmlvLXBjaSBDb3JlIERpc2FibGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgcGF0Y2ggSSdtIGxvb2tpbmcgYXQgc2VlbXMgdG8gYmUgY2VudHJhbGl6ZWQsIHRoYW5rZnVsbHkuIEl0J3MgYWxsIGNvbnRhaW5lZCB3aXRoaW4gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gTXkgZmlyc3Qgc3RlcCwgYXMgYWx3YXlzLCBpcyBnb2luZyB0byBiZSB0byBkZWVwbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhcm91bmQgdGhlIGZ1bmN0aW9uIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgLiBJIG5lZWQgdG8gc2VlICp3aHkqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgdG91Y2hlZC4gSXMgaXQgYmVpbmcgbW9kaWZpZWQgZGlyZWN0bHk/IElzIGNvZGUgYXJvdW5kIGl0IGJlaW5nIGFsdGVyZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaXMgY3J1Y2lhbCBmb3IgZ3Jhc3BpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLCBlc3BlY2lhbGx5IGluIGEgZHJpdmVyIGFzIGNvbXBsZXggYXMgVkZJTy5cblxuVG8gZGl2ZSBpbiBlZmZpY2llbnRseSwgSSdsbCBsZXZlcmFnZSBteSB0b29saW5nLiBJJ20gZ29pbmcgdG8gcXVpY2tseSB1c2UgYHJlYWQtZmlsZWAgdG8gemVybyBpbiBvbiB0aGUgYXJlYSBhcm91bmQgbGluZSA3OTAgaW4gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYGRpc2FibGVgIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBkcml2ZXIgZmxvdy4gSSdtIGV4cGVjdGluZyB0byBzZWUgY2FsbHMsIGRlZmluaXRpb25zLCBhbmQgbGlrZWx5IHNvbWUgZXJyb3IgaGFuZGxpbmcgb3Igc3RhdGUgbWFuYWdlbWVudCBhcm91bmQgdGhhdCBsaW5lLiBUaGF0J2xsIGJlIHRoZSBzdGFydGluZyBwb2ludCBmb3IgcGllY2luZyB0b2dldGhlciB0aGUgZnVuY3Rpb25hbCBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDksIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU2OjMwLjU2NzI2NTE4N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzM4MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzcwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzcwOlxcdFxcdFxcdHBjaV9pbmZvKHBkZXYsIFxcXCIlczogQ291bGRuJ3QgcmVsb2FkIHNhdmVkIHN0YXRlXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuIDc3MTpcXHRcXG4gNzcyOlxcdFxcdFxcdGlmICghdmRldi1cXHUwMDNlcmVzZXRfd29ya3MpXFxuIDc3MzpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gNzc0OlxcdFxcbiA3NzU6XFx0XFx0XFx0cGNpX3NhdmVfc3RhdGUocGRldik7XFxuIDc3NjpcXHRcXHR9XFxuIDc3NzpcXHRcXG4gNzc4OlxcdFxcdC8qXFxuIDc3OTpcXHRcXHQgKiBEaXNhYmxlIElOVHggYW5kIE1TSSwgcHJlc3VtYWJseSB0byBhdm9pZCBzcHVyaW91cyBpbnRlcnJ1cHRzXFxuIDc4MDpcXHRcXHQgKiBkdXJpbmcgcmVzZXQuICBTdG9sZW4gZnJvbSBwY2lfcmVzZXRfZnVuY3Rpb24oKVxcbiA3ODE6XFx0XFx0ICovXFxuIDc4MjpcXHRcXHRwY2lfd3JpdGVfY29uZmlnX3dvcmQocGRldiwgUENJX0NPTU1BTkQsIFBDSV9DT01NQU5EX0lOVFhfRElTQUJMRSk7XFxuIDc4MzpcXHRcXG4gNzg0OlxcdFxcdC8qXFxuIDc4NTpcXHRcXHQgKiBUcnkgdG8gZ2V0IHRoZSBsb2NrcyBvdXJzZWx2ZXMgdG8gcHJldmVudCBhIGRlYWRsb2NrLiBUaGVcXG4gNzg2OlxcdFxcdCAqIHN1Y2Nlc3Mgb2YgdGhpcyBpcyBkZXBlbmRlbnQgb24gYmVpbmcgYWJsZSB0byBsb2NrIHRoZSBkZXZpY2UsXFxuIDc4NzpcXHRcXHQgKiB3aGljaCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlLlxcbiA3ODg6XFx0XFx0ICogV2UgY2FuIG5vdCB1c2UgdGhlIFxcXCJ0cnlcXFwiIHJlc2V0IGludGVyZmFjZSBoZXJlLCB3aGljaCB3aWxsXFxuIDc4OTpcXHRcXHQgKiBvdmVyd3JpdGUgdGhlIHByZXZpb3VzbHkgcmVzdG9yZWQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cXG4gNzkwOlxcdFxcdCAqL1xcbiA3OTE6XFx0XFx0aWYgKHZkZXYtXFx1MDAzZXJlc2V0X3dvcmtzKSB7XFxuIDc5MjpcXHRcXHRcXHRicmlkZ2UgPSBwY2lfdXBzdHJlYW1fYnJpZGdlKHBkZXYpO1xcbiA3OTM6XFx0XFx0XFx0aWYgKGJyaWRnZSlcXG4gNzk0OlxcdFxcdFxcdFxcdHBjaV9kZXZfbG9jayhicmlkZ2UpO1xcbiA3OTU6XFx0XFx0XFx0aWYgKHBjaV9kZXZfdHJ5bG9jayhwZGV2KSkge1xcbiA3OTY6XFx0XFx0XFx0XFx0aWYgKCFfX3BjaV9yZXNldF9mdW5jdGlvbl9sb2NrZWQocGRldikpXFxuIDc5NzpcXHRcXHRcXHRcXHRcXHR2ZGV2LVxcdTAwM2VuZWVkc19yZXNldCA9IGZhbHNlO1xcbiA3OTg6XFx0XFx0XFx0XFx0cGNpX2Rldl91bmxvY2socGRldik7XFxuIDc5OTpcXHRcXHRcXHR9XFxuIDgwMDpcXHRcXHRcXHRpZiAoYnJpZGdlKVxcbiA4MDE6XFx0XFx0XFx0XFx0cGNpX2Rldl91bmxvY2soYnJpZGdlKTtcXG4gODAyOlxcdFxcdH1cXG4gODAzOlxcdFxcbiA4MDQ6XFx0XFx0cGNpX3Jlc3RvcmVfc3RhdGUocGRldik7XFxuIDgwNTpcXHRvdXQ6XFxuIDgwNjpcXHRcXHRwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7XFxuIDgwNzpcXHRcXG4gODA4OlxcdFxcdHZmaW9fcGNpX2Rldl9zZXRfdHJ5X3Jlc2V0KHZkZXYtXFx1MDAzZXZkZXYuZGV2X3NldCk7XFxuIDgwOTpcXHRcXG4gODEwOlxcdFxcdC8qIFB1dCB0aGUgcG0tcnVudGltZSB1c2FnZSBjb3VudGVyIGFjcXVpcmVkIGR1cmluZyBlbmFibGUgKi9cXG4gODExOlxcdFxcdGlmICghdmRldi1cXHUwMDNlZGlzYWJsZV9pZGxlX2QzKVxcbiA4MTI6XFx0XFx0XFx0cG1fcnVudGltZV9wdXQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuIDgxMzpcXHR9XFxuIDgxNDpcXHRFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2Rpc2FibGUpO1xcbiA4MTU6XFx0XFxuIDgxNjpcXHR2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbiA4MTc6XFx0e1xcbiA4MTg6XFx0XFx0c3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2ID1cXG4gODE5OlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSwgdmRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU2OjMwLjU2NzQ0MDg2OFoiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MzcyMjM1NTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTG9ja2luZyBDaGFuZ2UgaW4gYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgc3luY2hyb25pemF0aW9uIGNoYW5nZSB3aXRoaW4gdGhlIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIHdlJ3JlIHRyYW5zaXRpb25pbmcgZnJvbSBgcGNpX2Rldl90cnlsb2NrKGJyaWRnZSlgIHRvIGBwY2lfZGV2X2xvY2soYnJpZGdlKWAgd2hlbiByZXNldHRpbmcgYSBkZXZpY2UuIFRoaXMgY2hhbmdlIG1vZGlmaWVzIHRoZSBsb2NraW5nIGJlaGF2aW9yIGFyb3VuZCB0aGUgdXBzdHJlYW0gUENJIGJyaWRnZSBkdXJpbmcgYSBkZXZpY2UgZGlzYWJsZS5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgaXQgc2VlbXMgdGhlIG9sZCBpbXBsZW1lbnRhdGlvbiBhdHRlbXB0ZWQgYSBub24tYmxvY2tpbmcgbG9jayAoYHRyeWxvY2tgKSBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIGJlZm9yZSBwcm9jZWVkaW5nLCBwb3RlbnRpYWxseSBza2lwcGluZyB0aGUgcmVzZXQgaWYgdGhlIGxvY2sgY291bGRuJ3QgYmUgaW1tZWRpYXRlbHkgYWNxdWlyZWQuIE5vdywgaXQgdW5jb25kaXRpb25hbGx5IHRha2VzIHRoZSBsb2NrIChgbG9ja2ApIG9uIHRoZSBicmlkZ2UgaWYgdGhlIGJyaWRnZSBleGlzdHMuIFRoZSBgb3V0X3Jlc3RvcmVfc3RhdGVgIGxhYmVsIGhhcyBhbHNvIGJlZW4gcmVtb3ZlZCwgYXMgdGhlIGB0cnlsb2NrYCBmYWlsdXJlIGJyYW5jaCBpcyBubyBsb25nZXIgcHJlc2VudC5cblxuR2l2ZW4gdGhpcywgSSdtIGNsYXNzaWZ5aW5nIHRoaXMgYXMgYSBzeW5jaHJvbml6YXRpb24gY2hhbmdlLCBkaXJlY3RseSBpbXBhY3RpbmcgZGV2aWNlIHJlc2V0IGJlaGF2aW9yIHdpdGhpbiBgdmZpb19wY2lfY29yZV9kaXNhYmxlYC4gTE9DS0RFUCBzaG91bGQgYmUgc3VmZmljaWVudCBoZXJlIHRvIGFkZHJlc3MgcG90ZW50aWFsIGRlYWRsb2NrIGFuZCBsb2NrIG9yZGVyaW5nIGlzc3Vlcywgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIHByb2JsZW0gaXQgd2FzIGRlc2lnbmVkIGZvci5cblxuTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgY2hhbmdlIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBLTVNBTiBjb25jZXJucy4gSSdsbCBnbyB0aHJvdWdoIHRoZSBzdGFuZGFyZCBjcml0ZXJpYS4gVGhlcmUgYXJlIG5vIGtlcm5lbCBzdHJ1Y3R1cmVzIGJlaW5nIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHdpdGggcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBmaWVsZHMsIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZGVwZW5kcyBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG5vIG5ldyBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb25zIHRoYXQgbWlnaHQgbGVhZCB0byB1bmluaXRpYWxpemVkIHJlYWRzLCBhbmQgbm8gY2hhbmdlcyB0byBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFNvLCBiYXNlZCBvbiBteSByZXZpZXcsIEtNU0FOIGlzIG5vdCBuZWVkZWQgaGVyZS4gS0FTQU4vTE9DS0RFUCB3b3VsZCBiZSB0aGUgbW9yZSBhcHByb3ByaWF0ZSB0b29scyB0byB1c2UsIGZvY3VzaW5nIG9uIHN5bmNocm9uaXphdGlvbiBhbmQgZGV2aWNlIHN0YXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDI5LCJPdXRwdXRUb2tlbnMiOjE2MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU2OjM0LjkzOTY3OTA0NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZGV2aWNlIGxvY2tpbmcgYmVoYXZpb3IgaW4gdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgYnkgcmVwbGFjaW5nIGEgdHJ5bG9jayAocGNpX2Rldl90cnlsb2NrKSBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBsb2NrIChwY2lfZGV2X2xvY2spIGFuZCByZW1vdmluZyBhbiB1bnVzZWQgZ290byBsYWJlbC4gVGhpcyBjaGFuZ2UgZXhjbHVzaXZlbHkgYWZmZWN0cyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBhbmQgZGV2aWNlIHJlc2V0IGZsb3cuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgYWxsb2NhdGUsIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBub3IgZG9lcyBpdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSBvciBhbHRlciBsb2dpYyBkZWFsaW5nIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIGxvY2sgb3JkZXIgaW52ZXJzaW9ucykgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUC9LQVNBTiByYXRoZXIgdGhhbiBLTVNBTi4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRldmljZSBsb2NraW5nIGJlaGF2aW9yIGluIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpIGJ5IHJlcGxhY2luZyBhIHRyeWxvY2sgKHBjaV9kZXZfdHJ5bG9jaykgb24gdGhlIHVwc3RyZWFtIGJyaWRnZSB3aXRoIGFuIHVuY29uZGl0aW9uYWwgbG9jayAocGNpX2Rldl9sb2NrKSBhbmQgcmVtb3ZpbmcgYW4gdW51c2VkIGdvdG8gbGFiZWwuIFRoaXMgY2hhbmdlIGV4Y2x1c2l2ZWx5IGFmZmVjdHMgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgYW5kIGRldmljZSByZXNldCBmbG93LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIGFsbG9jYXRlLCBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcywgbm9yIGRvZXMgaXQgY29weSBkYXRhIHRvIHVzZXIgc3BhY2Ugb3IgYWx0ZXIgbG9naWMgZGVhbGluZyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIHJlZ3Jlc3Npb25zIChzdWNoIGFzIGRlYWRsb2NrcyBvciBsb2NrIG9yZGVyIGludmVyc2lvbnMpIGFyZSBkZXRlY3RhYmxlIGJ5IExPQ0tERVAvS0FTQU4gcmF0aGVyIHRoYW4gS01TQU4uIERlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcdr9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 08:27:33 +0000 UTC FinishedAt: 2026-09-08 08:56:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "5e2d672280d97d83de43031d93761b12dadd7b8a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PCI", "VFIO", "VFIO_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "5e2d672280d97d83de43031d93761b12dadd7b8a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PCI", "VFIO", "VFIO_PCI" ], "series_id": "29f7d819-caaf-4752-b7cd-541a1665c8a2" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vfio_pci_core_disable", "vfio_pci_core_close_device", "vfio_pci_core_enable", "vfio_pci_open_device" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtWRklPJiMzNDssCiAgICAmIzM0O1ZGSU9fUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZpb19wY2lfY29yZV9kaXNhYmxlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfZW5hYmxlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX29wZW5fZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGV2aWNlIGxvY2tpbmcgYmVoYXZpb3IgaW4gdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgYnkgcmVwbGFjaW5nIGEgdHJ5bG9jayAocGNpX2Rldl90cnlsb2NrKSBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBsb2NrIChwY2lfZGV2X2xvY2spIGFuZCByZW1vdmluZyBhbiB1bnVzZWQgZ290byBsYWJlbC4gVGhpcyBjaGFuZ2UgZXhjbHVzaXZlbHkgYWZmZWN0cyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBhbmQgZGV2aWNlIHJlc2V0IGZsb3cuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgYWxsb2NhdGUsIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBub3IgZG9lcyBpdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSBvciBhbHRlciBsb2dpYyBkZWFsaW5nIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIGxvY2sgb3JkZXIgaW52ZXJzaW9ucykgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUC9LQVNBTiByYXRoZXIgdGhhbiBLTVNBTi4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBsb2dpYyBpbiB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoKSBieSByZXBsYWNpbmcgYSB0cnlsb2NrIG9uIHRoZSB1cHN0cmVhbSBicmlkZ2Ugd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGJsb2NraW5nIHBjaV9kZXZfbG9jayhicmlkZ2UpLiBUaGlzIGFsdGVycyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBiZWhhdmlvciBpbiB0aGUgVkZJTyBQQ0kgdGVhcmRvd24vZGlzYWJsZSBwYXRoIHdoZW4gZGV2aWNlIGluc3RhbmNlcyBhcmUgY2xvc2VkIG9yIGRpc2FibGVkLCB3aGljaCBjYW4gaW50cm9kdWNlIGRlYWRsb2NrIG9yIGxvY2tpbmcgaW52YXJpYW50IGlzc3Vlcy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZGSU8gUENJIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYmNhNGE5YjhkZDk4ZWVmNDM4MzNlZmM0NmY1ZWViN2MxZmUwNjg1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAwODo1NToyMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5pbmRleCAzNjJjMzc1YTA1Nzk5Li44OTY2YTViZWE0MDYzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5AQCAtNzkwLDggJiM0Mzs3OTAsOCBAQCB2b2lkIHZmaW9fcGNpX2NvcmVfZGlzYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG4gXHQgKi9cbiBcdGlmICh2ZGV2LVx1MDAzZXJlc2V0X3dvcmtzKSB7XG4gXHRcdGJyaWRnZSA9IHBjaV91cHN0cmVhbV9icmlkZ2UocGRldik7XG4tXHRcdGlmIChicmlkZ2UgXHUwMDI2XHUwMDI2ICFwY2lfZGV2X3RyeWxvY2soYnJpZGdlKSlcbi1cdFx0XHRnb3RvIG91dF9yZXN0b3JlX3N0YXRlO1xuJiM0MztcdFx0aWYgKGJyaWRnZSlcbiYjNDM7XHRcdFx0cGNpX2Rldl9sb2NrKGJyaWRnZSk7XG4gXHRcdGlmIChwY2lfZGV2X3RyeWxvY2socGRldikpIHtcbiBcdFx0XHRpZiAoIV9fcGNpX3Jlc2V0X2Z1bmN0aW9uX2xvY2tlZChwZGV2KSlcbiBcdFx0XHRcdHZkZXYtXHUwMDNlbmVlZHNfcmVzZXQgPSBmYWxzZTtcbkBAIC04MDEsNyAmIzQzOzgwMSw2IEBAIHZvaWQgdmZpb19wY2lfY29yZV9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbiBcdFx0XHRwY2lfZGV2X3VubG9jayhicmlkZ2UpO1xuIFx0fVxuIFxuLW91dF9yZXN0b3JlX3N0YXRlOlxuIFx0cGNpX3Jlc3RvcmVfc3RhdGUocGRldik7XG4gb3V0OlxuIFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtWRklPJiMzNDssCiAgICAmIzM0O1ZGSU9fUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZpb19wY2lfY29yZV9kaXNhYmxlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfZW5hYmxlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX29wZW5fZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGxvZ2ljIGluIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpIGJ5IHJlcGxhY2luZyBhIHRyeWxvY2sgb24gdGhlIHVwc3RyZWFtIGJyaWRnZSB3aXRoIGFuIHVuY29uZGl0aW9uYWwgYmxvY2tpbmcgcGNpX2Rldl9sb2NrKGJyaWRnZSkuIFRoaXMgYWx0ZXJzIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIGJlaGF2aW9yIGluIHRoZSBWRklPIFBDSSB0ZWFyZG93bi9kaXNhYmxlIHBhdGggd2hlbiBkZXZpY2UgaW5zdGFuY2VzIGFyZSBjbG9zZWQgb3IgZGlzYWJsZWQsIHdoaWNoIGNhbiBpbnRyb2R1Y2UgZGVhZGxvY2sgb3IgbG9ja2luZyBpbnZhcmlhbnQgaXNzdWVzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdpdGggVkZJTyBQQ0kgc3VwcG9ydC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZiY2E0YTliOGRkOThlZWY0MzgzM2VmYzQ2ZjVlZWI3YzFmZTA2ODUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDA4OjU1OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwppbmRleCAzNjJjMzc1YTA1Nzk5Li44OTY2YTViZWE0MDYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwpAQCAtNzkwLDggJiM0Mzs3OTAsOCBAQCB2b2lkIHZmaW9fcGNpX2NvcmVfZGlzYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpCiAJICovCiAJaWYgKHZkZXYtJmd0O3Jlc2V0X3dvcmtzKSB7CiAJCWJyaWRnZSA9IHBjaV91cHN0cmVhbV9icmlkZ2UocGRldik7Ci0JCWlmIChicmlkZ2UgJmFtcDsmYW1wOyAhcGNpX2Rldl90cnlsb2NrKGJyaWRnZSkpCi0JCQlnb3RvIG91dF9yZXN0b3JlX3N0YXRlOwomIzQzOwkJaWYgKGJyaWRnZSkKJiM0MzsJCQlwY2lfZGV2X2xvY2soYnJpZGdlKTsKIAkJaWYgKHBjaV9kZXZfdHJ5bG9jayhwZGV2KSkgewogCQkJaWYgKCFfX3BjaV9yZXNldF9mdW5jdGlvbl9sb2NrZWQocGRldikpCiAJCQkJdmRldi0mZ3Q7bmVlZHNfcmVzZXQgPSBmYWxzZTsKQEAgLTgwMSw3ICYjNDM7ODAxLDYgQEAgdm9pZCB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KQogCQkJcGNpX2Rldl91bmxvY2soYnJpZGdlKTsKIAl9CiAKLW91dF9yZXN0b3JlX3N0YXRlOgogCXBjaV9yZXN0b3JlX3N0YXRlKHBkZXYpOwogb3V0OgogCXBjaV9kaXNhYmxlX2RldmljZShwZGV2KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzNwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byB0aGlzIFZGSU8gUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIHRob3JvdWdobHkuIEZpcnN0IHRoaW5ncyBmaXJzdDogaXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdmZpb19wY2lfY29yZV9kaXNhYmxlYCBmdW5jdGlvbi4gUmlnaHQsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGFjdGlvbiBpcy4KCkkgbmVlZCB0byBxdWlja2x5IGdyYXNwIHRoZSBjb250ZXh0LCB0aGUgY2FsbCBwYXRocywgdGhlIGRlcGVuZGVuY2llcy4uLiBhbGwgb2YgaXQuIExldCYjMzk7cyBmaXJlIHVwIGBncmVwcGVyYCAob3IgaWYgaXQmIzM5O3MgZWFzaWVyLCBhIHF1aWNrIGByZWFkLWZpbGVgKSBhbmQgc2VlIGhvdyBgdmZpb19wY2lfY29yZV9kaXNhYmxlYCBpcyB1c2VkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdmZpby1wY2kgaXMgY29uZmlndXJlZCwgaG93IGl0JiMzOTtzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIHN5c3RlbSwgYW5kIGhvdyB0byByZWFjaCBpdCBpbiBnZW5lcmFsLgoKTGV0JiMzOTtzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gdGhhdCBmdW5jdGlvbiBpbiB0aGUgc291cmNlIGNvZGUuIEkmIzM5O2xsIHJlYWQgYXJvdW5kIGxpbmUgNzkwIGluIGBkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY2AgZm9yIHNvbWUgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGF0IGNvcmUgZnVuY3Rpb24gd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzcwOlx0XHRcdHBjaV9pbmZvKHBkZXYsIFwmIzM0OyVzOiBDb3VsZG4mIzM5O3QgcmVsb2FkIHNhdmVkIHN0YXRlXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4gNzcxOlx0XG4gNzcyOlx0XHRcdGlmICghdmRldi1cdTAwM2VyZXNldF93b3JrcylcbiA3NzM6XHRcdFx0XHRnb3RvIG91dDtcbiA3NzQ6XHRcbiA3NzU6XHRcdFx0cGNpX3NhdmVfc3RhdGUocGRldik7XG4gNzc2Olx0XHR9XG4gNzc3Olx0XG4gNzc4Olx0XHQvKlxuIDc3OTpcdFx0ICogRGlzYWJsZSBJTlR4IGFuZCBNU0ksIHByZXN1bWFibHkgdG8gYXZvaWQgc3B1cmlvdXMgaW50ZXJydXB0c1xuIDc4MDpcdFx0ICogZHVyaW5nIHJlc2V0LiAgU3RvbGVuIGZyb20gcGNpX3Jlc2V0X2Z1bmN0aW9uKClcbiA3ODE6XHRcdCAqL1xuIDc4MjpcdFx0cGNpX3dyaXRlX2NvbmZpZ193b3JkKHBkZXYsIFBDSV9DT01NQU5ELCBQQ0lfQ09NTUFORF9JTlRYX0RJU0FCTEUpO1xuIDc4MzpcdFxuIDc4NDpcdFx0LypcbiA3ODU6XHRcdCAqIFRyeSB0byBnZXQgdGhlIGxvY2tzIG91cnNlbHZlcyB0byBwcmV2ZW50IGEgZGVhZGxvY2suIFRoZVxuIDc4NjpcdFx0ICogc3VjY2VzcyBvZiB0aGlzIGlzIGRlcGVuZGVudCBvbiBiZWluZyBhYmxlIHRvIGxvY2sgdGhlIGRldmljZSxcbiA3ODc6XHRcdCAqIHdoaWNoIGlzIG5vdCBhbHdheXMgcG9zc2libGUuXG4gNzg4Olx0XHQgKiBXZSBjYW4gbm90IHVzZSB0aGUgXCYjMzQ7dHJ5XCYjMzQ7IHJlc2V0IGludGVyZmFjZSBoZXJlLCB3aGljaCB3aWxsXG4gNzg5Olx0XHQgKiBvdmVyd3JpdGUgdGhlIHByZXZpb3VzbHkgcmVzdG9yZWQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cbiA3OTA6XHRcdCAqL1xuIDc5MTpcdFx0aWYgKHZkZXYtXHUwMDNlcmVzZXRfd29ya3MpIHtcbiA3OTI6XHRcdFx0YnJpZGdlID0gcGNpX3Vwc3RyZWFtX2JyaWRnZShwZGV2KTtcbiA3OTM6XHRcdFx0aWYgKGJyaWRnZSlcbiA3OTQ6XHRcdFx0XHRwY2lfZGV2X2xvY2soYnJpZGdlKTtcbiA3OTU6XHRcdFx0aWYgKHBjaV9kZXZfdHJ5bG9jayhwZGV2KSkge1xuIDc5NjpcdFx0XHRcdGlmICghX19wY2lfcmVzZXRfZnVuY3Rpb25fbG9ja2VkKHBkZXYpKVxuIDc5NzpcdFx0XHRcdFx0dmRldi1cdTAwM2VuZWVkc19yZXNldCA9IGZhbHNlO1xuIDc5ODpcdFx0XHRcdHBjaV9kZXZfdW5sb2NrKHBkZXYpO1xuIDc5OTpcdFx0XHR9XG4gODAwOlx0XHRcdGlmIChicmlkZ2UpXG4gODAxOlx0XHRcdFx0cGNpX2Rldl91bmxvY2soYnJpZGdlKTtcbiA4MDI6XHRcdH1cbiA4MDM6XHRcbiA4MDQ6XHRcdHBjaV9yZXN0b3JlX3N0YXRlKHBkZXYpO1xuIDgwNTpcdG91dDpcbiA4MDY6XHRcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcbiA4MDc6XHRcbiA4MDg6XHRcdHZmaW9fcGNpX2Rldl9zZXRfdHJ5X3Jlc2V0KHZkZXYtXHUwMDNldmRldi5kZXZfc2V0KTtcbiA4MDk6XHRcbiA4MTA6XHRcdC8qIFB1dCB0aGUgcG0tcnVudGltZSB1c2FnZSBjb3VudGVyIGFjcXVpcmVkIGR1cmluZyBlbmFibGUgKi9cbiA4MTE6XHRcdGlmICghdmRldi1cdTAwM2VkaXNhYmxlX2lkbGVfZDMpXG4gODEyOlx0XHRcdHBtX3J1bnRpbWVfcHV0KFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiA4MTM6XHR9XG4gODE0Olx0RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9kaXNhYmxlKTtcbiA4MTU6XHRcbiA4MTY6XHR2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuIDgxNzpcdHtcbiA4MTg6XHRcdHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiA9XG4gODE5Olx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSwgdmRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIyOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSBGdW5jdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCBmb3IgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAuIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgdXNlZD8gVGltZSB0byBnbyBvbGQgc2Nob29sLiBJJiMzOTtsbCByZWFjaCBmb3IgYGdyZXBgIGFuZCBzZWFyY2ggdGhlIGNvZGViYXNlLiBBIHF1aWNrIGBncmVwYCBmb3IgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIHNwZWNpZmljIGxvY2F0aW9ucyB3aGVyZSB0aGlzIGNyaXRpY2FsIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQsIGFuZCBoZWxwIG1lIHRyYWNlIGJhY2sgdGhlIGxvZ2ljIGFuZCB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBkaXNhYmxlIHByb2Nlc3MgaXMgdHJpZ2dlcmVkLiBGcm9tIHRoZXJlLCBJIGNhbiBiZWdpbiB0byB1bnJhdmVsIGl0cyByb2xlIGluIHRoZSBsYXJnZXIgdmZpby1wY2kgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fcGNpX2NvcmVfZGlzYWJsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE1MTQ9c3RhdGljIGludCBoaXNpX2FjY192ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1MjgtXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmhpc2lfYWNjX3ZkZXYtXHUwMDNlb3Blbl9tdXRleCk7XG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1Mjk6XHRcdFx0dmZpb19wY2lfY29yZV9kaXNhYmxlKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTMwLVx0XHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTczPXN0YXRpYyBpbnQgbnZncmFjZV9ncHVfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMjIxLWVycm9yX2V4aXQ6XG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoyMjI6XHR2ZmlvX3BjaV9jb3JlX2Rpc2FibGUodmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0yMjMtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYz01OD1zdGF0aWMgaW50IHFhdF92Zl9wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jLTcxLVx0aWYgKHJldCkge1xuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjcyOlx0XHR2ZmlvX3BjaV9jb3JlX2Rpc2FibGUodmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNzMtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jPTEwMz1zdGF0aWMgaW50IHZmaW9fcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xMTctXHRcdFx0cGNpX3dhcm4ocGRldiwgXCYjMzQ7RmFpbGVkIHRvIHNldHVwIEludGVsIElHRCByZWdpb25zXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYzoxMTg6XHRcdFx0dmZpb19wY2lfY29yZV9kaXNhYmxlKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTExOS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTY4MD1FWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2VuYWJsZSk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy02ODEtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo2ODI6dm9pZCB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNjgzLXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MTMtfVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6ODE0OkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfZGlzYWJsZSk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MTUtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz04MTY9dm9pZCB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MzEtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo4MzI6XHR2ZmlvX3BjaV9jb3JlX2Rpc2FibGUodmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MzMtXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmM9MzE2PWludCB2aXJ0aW92Zl9vcGVuX2xlZ2FjeV9pbyhzdHJ1Y3QgdmlydGlvdmZfcGNpX2NvcmVfZGV2aWNlICp2aXJ0dmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYy0zMjEtXHQvKlxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmM6MzIyOlx0ICogVXBvbiBjbG9zZV9kZXZpY2UoKSB0aGUgdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgaXMgY2FsbGVkXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYy0zMjMtXHQgKiBhbmQgd2lsbCBjbG9zZSBhbGwgdGhlIHByZXZpb3VzIG1tYXBzLCBzbyBpdCBzZWVtcyB0aGF0IHRoZVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0yMT1zdGF0aWMgaW50IHZpcnRpb3ZmX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtMzQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MzU6XHRcdHZmaW9fcGNpX2NvcmVfZGlzYWJsZSh2ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0zNi1cdFx0cmV0dXJuIHJldDtcbi0tXG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaD0xOTM9aW50IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldik7XG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaDoxOTQ6dm9pZCB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KTtcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oLTE5NS12b2lkIHZmaW9fcGNpX2NvcmVfZmluaXNoX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xuLS1cbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oPTIzMT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfYWxpZ25lZF9mb3Jfb3JkZXIoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmgtMjQ0LSAqIGZhaWxlZC4gIFRoaXMgc2hhbGwgb25seSBiZSB1c2VkIGFmdGVyIHZmaW9fcGNpX2NvcmVfZW5hYmxlKClcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oOjI0NTogKiBoYXMgc2V0IHVwIHRoZSBCQVIgbWFwcyBhbmQgYmVmb3JlIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpXG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaC0yNDYtICogdGVhcnMgdGhlbSBkb3duLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NjIKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFZGSU8gRGV2aWNlIENsb3N1cmUgJmFtcDsgT3BlbmluZyBGYWlsdXJlcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJlaGF2aW9yIG9mIFZGSU8gd2hlbiBpdCBlbmNvdW50ZXJzIGEgZmFpbHVyZSBkdXJpbmcgZWl0aGVyIGNsb3Npbmcgb3Igb3BlbmluZyBhIGRldmljZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBjb3JlIGhhbmRsaW5nIHdpdGhpbiB0aGUgVkZJTy1QQ0kgZHJpdmVyLiBUbyBnZXQgc3RhcnRlZCwgSSYjMzk7bSBnb2luZyB0byBwaW5wb2ludCB0aGUgYHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlYCBmdW5jdGlvbi4gSSBrbm93IHRoYXQmIzM5O3MgdGhlIGxpa2VseSBlbnRyeSBwb2ludCBmb3IgZGV2aWNlIGNsb3N1cmUgbG9naWMgd2l0aGluIHRoZSBgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNgIGZpbGUuIFRpbWUgdG8gY3JhY2sgb3BlbiB0aGUgc291cmNlIGNvZGUgYW5kIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QhIEkgbmVlZCB0byBkZXRlcm1pbmUgdGhlIGZhaWx1cmUgY29uZGl0aW9ucyBhbmQgdGhlIGVycm9yIHBhdGhzIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDgxNTpcdFxuIDgxNjpcdHZvaWQgdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gODE3Olx0e1xuIDgxODpcdFx0c3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2ID1cbiA4MTk6XHRcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlLCB2ZGV2KTtcbiA4MjA6XHRcbiA4MjE6XHRcdGlmICh2ZGV2LVx1MDAzZXNyaW92X3BmX2NvcmVfZGV2KSB7XG4gODIyOlx0XHRcdG11dGV4X2xvY2soXHUwMDI2dmRldi1cdTAwM2Vzcmlvdl9wZl9jb3JlX2Rldi1cdTAwM2V2Zl90b2tlbi1cdTAwM2Vsb2NrKTtcbiA4MjM6XHRcdFx0V0FSTl9PTighdmRldi1cdTAwM2Vzcmlvdl9wZl9jb3JlX2Rldi1cdTAwM2V2Zl90b2tlbi1cdTAwM2V1c2Vycyk7XG4gODI0Olx0XHRcdHZkZXYtXHUwMDNlc3Jpb3ZfcGZfY29yZV9kZXYtXHUwMDNldmZfdG9rZW4tXHUwMDNldXNlcnMtLTtcbiA4MjU6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZkZXYtXHUwMDNlc3Jpb3ZfcGZfY29yZV9kZXYtXHUwMDNldmZfdG9rZW4tXHUwMDNlbG9jayk7XG4gODI2Olx0XHR9XG4gODI3Olx0I2lmIElTX0VOQUJMRUQoQ09ORklHX0VFSClcbiA4Mjg6XHRcdGVlaF9kZXZfcmVsZWFzZSh2ZGV2LVx1MDAzZXBkZXYpO1xuIDgyOTpcdCNlbmRpZlxuIDgzMDpcdFx0dmZpb19wY2lfZG1hX2J1Zl9jbGVhbnVwKHZkZXYpO1xuIDgzMTpcdFxuIDgzMjpcdFx0dmZpb19wY2lfY29yZV9kaXNhYmxlKHZkZXYpO1xuIDgzMzpcdFxuIDgzNDpcdFx0bXV0ZXhfbG9jayhcdTAwMjZ2ZGV2LVx1MDAzZWlnYXRlKTtcbiA4MzU6XHRcdHZmaW9fcGNpX2V2ZW50ZmRfcmVwbGFjZV9sb2NrZWQodmRldiwgXHUwMDI2dmRldi1cdTAwM2VlcnJfdHJpZ2dlciwgTlVMTCk7XG4gODM2Olx0XHR2ZmlvX3BjaV9ldmVudGZkX3JlcGxhY2VfbG9ja2VkKHZkZXYsIFx1MDAyNnZkZXYtXHUwMDNlcmVxX3RyaWdnZXIsIE5VTEwpO1xuIDgzNzpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZkZXYtXHUwMDNlaWdhdGUpO1xuIDgzODpcdH1cbiA4Mzk6XHRFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSk7XG4gODQwOlx0XG4gODQxOlx0dm9pZCB2ZmlvX3BjaV9jb3JlX2ZpbmlzaF9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuIDg0MjpcdHtcbiA4NDM6XHRcdHZmaW9fcGNpX3Byb2JlX21tYXBzKHZkZXYpO1xuIDg0NDpcdCNpZiBJU19FTkFCTEVEKENPTkZJR19FRUgpXG4gODQ1Olx0XHRlZWhfZGV2X29wZW4odmRldi1cdTAwM2VwZGV2KTtcbiA4NDY6XHQjZW5kaWZcbiA4NDc6XHRcbiA4NDg6XHRcdGlmICh2ZGV2LVx1MDAzZXNyaW92X3BmX2NvcmVfZGV2KSB7XG4gODQ5Olx0XHRcdG11dGV4X2xvY2soXHUwMDI2dmRldi1cdTAwM2Vzcmlvdl9wZl9jb3JlX2Rldi1cdTAwM2V2Zl90b2tlbi1cdTAwM2Vsb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwODo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODkyCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFZGSU8tUENJIEludmVzdGlnYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QgdGhpbmdzIGZpcnN0OiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIFZGSU8tUENJIGlzIGV2ZW4gKmFjY2Vzc2libGUqIHdpdGhpbiB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIFFFTVUgVk0gc2V0dXAuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBIb2xkIG9uLCB0aG91Z2guIERvZXMgYSBzdGFuZGFyZCBRRU1VIFZNIGV2ZW4gaGF2ZSBQQ0kgZGV2aWNlcyByZWFkaWx5IGF2YWlsYWJsZSB0aGF0ICpjb3VsZCogYmUgYm91bmQgdG8gdmZpby1wY2ksIG9yIGRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpmdXp6KiB2ZmlvLXBjaSBpdHNlbGY/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuCgpSaWdodCwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgYXBwcm9hY2ggdGhpcyBzeXN0ZW1hdGljYWxseS4gSSBzaG91bGQgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHN5emthbGxlciYjMzk7cyBjb3ZlcmFnZSByZXBvcnRzLCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kLCBvZiBjb3Vyc2UsIHRoZSBkZXZpY2UgZHJpdmVycy4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGJlc3Qgb3ZlcnZpZXcuCgpXYWl0IGEgc2Vjb25kLiBWRklPLVBDSSBpc24mIzM5O3QgbGltaXRlZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4gSXQgY2FuIGJlIGJvdW5kIHRvICphbnkqIFBDSSBkZXZpY2Ug4oCTIGV2ZW4gdGhlIHZpcnR1YWwgb25lcyBRRU1VIGVtdWxhdGVzIGxpa2UgZTEwMDAgb3IgdmlydGlvLXBjaSwgb3IgdGhvc2UgaGFuZGxlZCB0aHJvdWdoIGR5bmFtaWMgdW5iaW5kaW5nIGFuZCBiaW5kaW5nIHZpYSBzeXNmcyBvciB0aGUgYGRyaXZlcl9vdmVycmlkZWAgbWVjaGFuaXNtIHdpdGhpbiB0aGUgdmZpby1wY2kgZHJpdmVyLiBUaGF0IG9wZW5zIHVwIGEgcmFuZ2Ugb2YgcG9zc2liaWxpdGllcy4KCk5vdywgYSBrZXkgcXVlc3Rpb246IGNhbiB1c2Vyc3BhY2UgYWN0dWFsbHkgb3BlbiBhIFZGSU8gY29udGFpbmVyLCBncm91cCwgb3IgZGV2aWNlIGluIHRoaXMgY29udGV4dD8gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBwb2ludCBmb3IgYSBmdXp6ZXIsIGFuZCB0aGUgb25lIEkgbmVlZCB0byBmb2N1cyBvbi4KCk9rYXksIEkgbmVlZCB0byBzZWUgaWYgc3l6a2FsbGVyIGhhcyBkZXNjcmlwdGlvbnMgZm9yIHZmaW86IHRpbWUgdG8gZXhhbWluZSB0aG9zZS4KCk9uZSBsYXN0IHRoaW5nLCBiZWZvcmUgSSBkaWcgdG9vIGRlZXAsIEkgc2hvdWxkIGNoZWNrIHRoZSBgVkZJT19QQ0lfQ09SRWAgYW5kIGBWRklPX1BDSWAgS2NvbmZpZyBvcHRpb25zIGFuZCBzZWUgaG93IHRoZXkgYXJlIGFjdHVhbGx5IHVzZWQuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgZW5hYmxlZCBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX1BDSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9Mj1tZW51IFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgUENJIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNC1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo1OmNvbmZpZyBWRklPX1BDSV9DT1JFXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTktXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MTA6Y29uZmlnIFZGSU9fUENJX0lOVFhcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0xMS1cdGRlZl9ib29sIHkgaWYgIVMzOTBcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTMtXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MTQ6Y29uZmlnIFZGSU9fUENJXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFZGSU8gc3VwcG9ydCBmb3IgYW55IFBDSSBkZXZpY2VcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9MjM9aWYgVkZJT19QQ0lcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoyNDpjb25maWcgVkZJT19QQ0lfVkdBXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMjUtXHRib29sIFwmIzM0O0dlbmVyaWMgVkZJTyBQQ0kgc3VwcG9ydCBmb3IgVkdBIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMzMtXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MzQ6Y29uZmlnIFZGSU9fUENJX0lHRFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTM1LVx0Ym9vbCBcJiMzNDtHZW5lcmljIFZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIEludGVsIGdyYXBoaWNzIChHVlQtZClcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00Ni1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXCYjMzQ7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTU3LVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjU4OmNvbmZpZyBWRklPX1BDSV9ETUFCVUZcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy01OS1cdGRlZl9ib29sIHkgaWYgVkZJT19QQ0lfQ09SRSBcdTAwMjZcdTAwMjYgUENJX1AyUERNQSBcdTAwMjZcdTAwMjYgRE1BX1NIQVJFRF9CVUZGRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAxOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgVkZJTyBQQ0kgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBWRklPIFBDSSBzZXR1cC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byBgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhhdCBwYXJ0aWN1bGFyIGRyaXZlciBhcmUgZGVmaW5lZCwgdGhlIHRoaW5ncyB0aGF0IGNvbnRyb2wgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCBob3cgdGhlIG1vZHVsZSB3aWxsIGJlaGF2ZS4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBWRklPIFBDSSBkcml2ZXIgaXMgYnVpbHQgYW5kIGNvbmZpZ3VyZWQuIEkmIzM5O20gaG9waW5nIEkgY2FuIGdsZWFuIHdoYXQgSSBuZWVkIHF1aWNrbHkgZnJvbSB0aGVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIFBDSSBkZXZpY2VzXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBWRklPX1BDSV9DT1JFXG4gICA2Olx0XHR0cmlzdGF0ZVxuICAgNzpcdFx0c2VsZWN0IFZGSU9fVklSUUZEXG4gICA4Olx0XHRzZWxlY3QgSVJRX0JZUEFTU19NQU5BR0VSXG4gICA5Olx0XG4gIDEwOlx0Y29uZmlnIFZGSU9fUENJX0lOVFhcbiAgMTE6XHRcdGRlZl9ib29sIHkgaWYgIVMzOTBcbiAgMTI6XHRcdGRlcGVuZHMgb24gVkZJT19QQ0lfQ09SRVxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBWRklPX1BDSVxuICAxNTpcdFx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBWRklPIHN1cHBvcnQgZm9yIGFueSBQQ0kgZGV2aWNlXCYjMzQ7XG4gIDE2Olx0XHRzZWxlY3QgVkZJT19QQ0lfQ09SRVxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBTdXBwb3J0IGZvciB0aGUgZ2VuZXJpYyBQQ0kgVkZJTyBidXMgZHJpdmVyIHdoaWNoIGNhbiBjb25uZWN0IGFueVxuICAxOTpcdFx0ICBQQ0kgZGV2aWNlIHRvIHRoZSBWRklPIGZyYW1ld29yay5cbiAgMjA6XHRcbiAgMjE6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXG4gIDIyOlx0XG4gIDIzOlx0aWYgVkZJT19QQ0lcbiAgMjQ6XHRjb25maWcgVkZJT19QQ0lfVkdBXG4gIDI1Olx0XHRib29sIFwmIzM0O0dlbmVyaWMgVkZJTyBQQ0kgc3VwcG9ydCBmb3IgVkdBIGRldmljZXNcJiMzNDtcbiAgMjY6XHRcdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiBWR0FfQVJCXG4gIDI3Olx0XHRoZWxwXG4gIDI4Olx0XHQgIFN1cHBvcnQgZm9yIFZHQSBleHRlbnNpb24gdG8gVkZJTyBQQ0kuICBUaGlzIGV4cG9zZXMgYW4gYWRkaXRpb25hbFxuICAyOTpcdFx0ICByZWdpb24gb24gVkdBIGRldmljZXMgZm9yIGFjY2Vzc2luZyBsZWdhY3kgVkdBIGFkZHJlc3NlcyB1c2VkIGJ5XG4gIDMwOlx0XHQgIEJJT1MgYW5kIGdlbmVyaWMgdmlkZW8gZHJpdmVycy5cbiAgMzE6XHRcbiAgMzI6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXG4gIDMzOlx0XG4gIDM0Olx0Y29uZmlnIFZGSU9fUENJX0lHRFxuICAzNTpcdFx0Ym9vbCBcJiMzNDtHZW5lcmljIFZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIEludGVsIGdyYXBoaWNzIChHVlQtZClcJiMzNDtcbiAgMzY6XHRcdGRlcGVuZHMgb24gWDg2XG4gIDM3Olx0XHRkZWZhdWx0IHlcbiAgMzg6XHRcdGhlbHBcbiAgMzk6XHRcdCAgU3VwcG9ydCBmb3IgSW50ZWwgSUdEIHNwZWNpZmljIGV4dGVuc2lvbnMgdG8gZW5hYmxlIGRpcmVjdFxuICA0MDpcdFx0ICBhc3NpZ25tZW50IHRvIHZpcnR1YWwgbWFjaGluZXMuICBUaGlzIGluY2x1ZGVzIGV4cG9zaW5nIGFuIElHRFxuICA0MTpcdFx0ICBzcGVjaWZpYyBmaXJtd2FyZSB0YWJsZSBhbmQgcmVhZC1vbmx5IGNvcGllcyBvZiB0aGUgaG9zdCBicmlkZ2VcbiAgNDI6XHRcdCAgYW5kIExQQyBicmlkZ2UgY29uZmlnIHNwYWNlLlxuICA0MzpcdFxuICA0NDpcdFx0ICBUbyBlbmFibGUgSW50ZWwgSUdEIGFzc2lnbm1lbnQgdGhyb3VnaCB2ZmlvLXBjaSwgc2F5IFkuXG4gIDQ1Olx0ZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgwNwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDEwNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVkZJTy1QQ0kgRHJpdmVyIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBjb21taXQgdGhhdCBtb2RpZmllcyB0aGUgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgZnVuY3Rpb24gd2l0aGluIHRoZSBWRklPLVBDSSBkcml2ZXIuIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZXBsYWNlbWVudCBvZiBhIGNvbmRpdGlvbmFsIGBwY2lfZGV2X3RyeWxvY2soYnJpZGdlKWAgd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGBwY2lfZGV2X2xvY2soYnJpZGdlKWAuIFRoZSBvbGQgY29kZSBoYWQgYSBgZ290byBvdXRfcmVzdG9yZV9zdGF0ZWAgaWYgdGhlIGJyaWRnZSBsb2NrIGNvdWxkbiYjMzk7dCBiZSBhY3F1aXJlZCwgYnV0IG5vdyBpdCB1bmNvbmRpdGlvbmFsbHkgYWNxdWlyZXMgdGhlIGxvY2suIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBhIHBvdGVudGlhbGx5IHJpc2t5IGNoYW5nZS4gVW5jb25kaXRpb25hbCBsb2NraW5nIGxpa2UgdGhpcyBjb3VsZCBlYXNpbHkgbGVhZCB0byBsb2NrIGludmVyc2lvbiwgZGVhZGxvY2tzLCBvciBhdCB0aGUgdmVyeSBsZWFzdCwgbG9ja2RlcCB3YXJuaW5ncywgZXNwZWNpYWxseSBkdXJpbmcgZGV2aWNlIGRpc2FibGUgb3IgY2xvc2Ugb3BlcmF0aW9ucyB3aGVyZSBsb2NraW5nIG9yZGVyIGNhbiBiZSBjcml0aWNhbC4gVGhpcyBhbHNvIHBvdGVudGlhbGx5IGFmZmVjdHMgZG93bnN0cmVhbSBkZXZpY2UgcmVzZXRzLgoKVGhlIGNvbW1lbnQgYWJvdmUgdGhlIGNoYW5nZSBzdWdnZXN0cyBhbiBhdHRlbXB0IHRvIHByZXZlbnQgZGVhZGxvY2tzLCBidXQgYXQgd2hhdCBjb3N0PyBUaGlzIGtpbmQgb2YgYmxhbmtldCBsb2NraW5nIGNhbiBiZSBhIHZlcnkgYmx1bnQgaW5zdHJ1bWVudC4gV2UgbmVlZCB0byBiZSBjYXJlZnVsLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGNvZGUgaXMgZXZlbiByZWFjaGFibGUuIFRoZSBjb250ZXh0IGhlcmUgaXMgVkZJTywgc28gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiBUaGUgZG9jdW1lbnRhdGlvbiBzYXlzIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGxpa2UgYC5yZW1vdmVgIGFuZCBgLnNodXRkb3duYCkgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLiBJcyB0aGF0IHdoYXQmIzM5O3MgaGFwcGVuaW5nIGhlcmU/IE5vLCBsZXQmIzM5O3MgZG91YmxlIGNoZWNrLgoKSXQgbG9va3MgbGlrZSBJIHdhcyB3cm9uZy4gTGV0IG1lIHJldmlldyB0aGUgY2FsbCBzaXRlczogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhIFZGSU8gZGV2aWNlIEZEIG9yIFZGSU8gY29udGFpbmVyIGlzIGNsb3NlZCBieSB1c2Vyc3BhY2UgdmlhIGAvZGV2L3ZmaW8vLi4uYCBhbmQgcmVsYXRlZCBJT0NUTHMuIFNvIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgY2xlYW51cCB3aGVuIHVzZXJzcGFjZSBpcyBkb25lIHdpdGggdGhlIGRldmljZS4gVGhpcyBpcyBhIGNyaXRpY2FsIGNvZGUgcGF0aCEgVGhpcyBjaGFuZ2VzIGV2ZXJ5dGhpbmcuCgpPaywgbm93IEkgaGF2ZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nOiBDbG9zaW5nIHRoZSBWRklPIGRldmljZSBpcyB0aGUgcHJpbWFyeSBwYXRoIHRvIGNhbGwgdGhpcyBmdW5jdGlvbi4gVGhpcyBtZWFucyB0aGF0IHRoaXMgdW5jb25kaXRpb25hbCBsb2NraW5nIGNvdWxkIHBvdGVudGlhbGx5IGJsb2NrIHRoZSBkZXZpY2UgY2xvc2UsIHdoaWNoIHdvdWxkIGJlIHJlYWxseSBiYWQuIEl0IGFmZmVjdHMgdGhlIGNvcmUgdXNlciBleHBlcmllbmNlLCBtYWtpbmcgdXNlcnNwYWNlIG9wZXJhdGlvbnMgbGVzcyByZWxpYWJsZS4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGxvY2tpbmcgaGllcmFyY2h5IHRvIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCByaXNrcyBoZXJlIGFuZCB2ZXJpZnkgdGhlcmUgaXNuJiMzOTt0IGEgZGVhZGxvY2sgc2NlbmFyaW8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Nsb3NlX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yOD1zdGF0aWMgaW50IHZmaW9fY2R4X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTczLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6NzQ6c3RhdGljIHZvaWQgdmZpb19jZHhfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtNzUte1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI5MT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2NkeF9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjk1LVx0Lm9wZW5fZGV2aWNlXHQ9IHZmaW9fY2R4X29wZW5fZGV2aWNlLFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6Mjk2Olx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX2NkeF9jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yOTctXHQuaW9jdGxcdFx0PSB2ZmlvX2NkeF9pb2N0bCxcbi0tXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYz05Mj1sb25nIHZmaW9fZGZfaW9jdGxfYmluZF9pb21tdWZkKHN0cnVjdCB2ZmlvX2RldmljZV9maWxlICpkZixcbi0tXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYy0xNTgtXHRpZiAocmV0KVxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmM6MTU5Olx0XHRnb3RvIG91dF9jbG9zZV9kZXZpY2U7XG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYy0xNjAtXG4tLVxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmMtMTY5LVxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmM6MTcwOm91dF9jbG9zZV9kZXZpY2U6XG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYy0xNzEtXHR2ZmlvX2RmX2Nsb3NlKGRmKTtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9Njg9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19yZXNldF9kZXZpY2Uoc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtOTYtXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6OTc6c3RhdGljIHZvaWQgdmZpb19mc2xfbWNfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTk4LXtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NTc1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fZnNsX21jX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTc5LVx0Lm9wZW5fZGV2aWNlXHQ9IHZmaW9fZnNsX21jX29wZW5fZGV2aWNlLFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjU4MDpcdC5jbG9zZV9kZXZpY2VcdD0gdmZpb19mc2xfbWNfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTU4MS1cdC5pb2N0bFx0XHQ9IHZmaW9fZnNsX21jX2lvY3RsLFxuLS1cbmRyaXZlcnMvdmZpby9ncm91cC5jPTE3MD1zdGF0aWMgaW50IHZmaW9fZGZfZ3JvdXBfb3BlbihzdHJ1Y3QgdmZpb19kZXZpY2VfZmlsZSAqZGYpXG4tLVxuZHJpdmVycy92ZmlvL2dyb3VwLmMtMjEyLVx0XHRpZiAocmV0KVxuZHJpdmVycy92ZmlvL2dyb3VwLmM6MjEzOlx0XHRcdGdvdG8gb3V0X2Nsb3NlX2RldmljZTtcbmRyaXZlcnMvdmZpby9ncm91cC5jLTIxNC1cdH1cbi0tXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yMjUtXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYzoyMjY6b3V0X2Nsb3NlX2RldmljZTpcbmRyaXZlcnMvdmZpby9ncm91cC5jLTIyNy1cdHZmaW9fZGZfY2xvc2UoZGYpO1xuLS1cbmRyaXZlcnMvdmZpby9ncm91cC5jPTI1NT1zdGF0aWMgc3RydWN0IGZpbGUgKnZmaW9fZGV2aWNlX29wZW5fZmlsZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSlcbi0tXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yNzYtXHRcdHJldCA9IFBUUl9FUlIoZmlsZXApO1xuZHJpdmVycy92ZmlvL2dyb3VwLmM6Mjc3Olx0XHRnb3RvIGVycl9jbG9zZV9kZXZpY2U7XG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yNzgtXHR9XG4tLVxuZHJpdmVycy92ZmlvL2dyb3VwLmMtMjk0LVxuZHJpdmVycy92ZmlvL2dyb3VwLmM6Mjk1OmVycl9jbG9zZV9kZXZpY2U6XG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yOTYtXHR2ZmlvX2RmX2dyb3VwX2Nsb3NlKGRmKTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE1MTQ9c3RhdGljIGludCBoaXNpX2FjY192ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1NDEtXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1NDI6c3RhdGljIHZvaWQgaGlzaV9hY2NfdmZpb19wY2lfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTQzLXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1NTItXHRtdXRleF91bmxvY2soXHUwMDI2aGlzaV9hY2NfdmRldi1cdTAwM2VvcGVuX211dGV4KTtcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTU1MzpcdHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKGNvcmVfdmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1NTQtfVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTU4MT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBoaXNpX2FjY192ZmlvX3BjaV9taWdybl9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg1LVx0Lm9wZW5fZGV2aWNlID0gaGlzaV9hY2NfdmZpb19wY2lfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1ODY6XHQuY2xvc2VfZGV2aWNlID0gaGlzaV9hY2NfdmZpb19wY2lfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg3LVx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE2MDI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYwNi1cdC5vcGVuX2RldmljZSA9IGhpc2lfYWNjX3ZmaW9fcGNpX29wZW5fZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxNjA3Olx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNjA4LVx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM9MzM1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIGlzbV9wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zMzktXHQub3Blbl9kZXZpY2UgPSBpc21fdmZpb19wY2lfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM6MzQwOlx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTM0MS1cdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYz0xMzIzPXN0YXRpYyBpbnQgbWx4NXZmX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzMzktXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjEzNDA6c3RhdGljIHZvaWQgbWx4NXZmX3BjaV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzNDEte1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTM0NS1cdG1seDV2Zl9jbWRfY2xvc2VfbWlncmF0YWJsZShtdmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjEzNDY6XHR2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZShjb3JlX3ZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzQ3LX1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jPTEzODY9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgbWx4NXZmX3BjaV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzkwLVx0Lm9wZW5fZGV2aWNlID0gbWx4NXZmX3BjaV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM6MTM5MTpcdC5jbG9zZV9kZXZpY2UgPSBtbHg1dmZfcGNpX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTM5Mi1cdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTczPXN0YXRpYyBpbnQgbnZncmFjZV9ncHVfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMjI1LVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6MjI2OnN0YXRpYyB2b2lkIG52Z3JhY2VfZ3B1X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTIyNy17XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMjUyLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6MjUzOlx0dmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UoY29yZV92ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTI1NC19XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwNjgtXHQub3Blbl9kZXZpY2VcdD0gbnZncmFjZV9ncHVfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxMDY5Olx0LmNsb3NlX2RldmljZVx0PSBudmdyYWNlX2dwdV9jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xMDcwLVx0LmlvY3RsXHRcdD0gbnZncmFjZV9ncHVfaW9jdGwsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfY29yZV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA5My1cdC5vcGVuX2RldmljZVx0PSBudmdyYWNlX2dwdV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjEwOTQ6XHQuY2xvc2VfZGV2aWNlXHQ9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA5NS1cdC5pb2N0bFx0XHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYz0xNTk9c3RhdGljIGludCBwZHNfdmZpb19vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xNzYtXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jOjE3NzpzdGF0aWMgdm9pZCBwZHNfdmZpb19jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xNzgte1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMTg3LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBkc192ZmlvLVx1MDAzZXN0YXRlX211dGV4KTtcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM6MTg4Olx0dmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UodmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jLTE4OS19XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYz0xOTE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgcGRzX3ZmaW9fb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMTk1LVx0Lm9wZW5fZGV2aWNlID0gcGRzX3ZmaW9fb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jOjE5NjpcdC5jbG9zZV9kZXZpY2UgPSBwZHNfdmZpb19jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jLTE5Ny1cdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jPTkxPXN0YXRpYyB2b2lkIHFhdF92Zl9kaXNhYmxlX2ZkcyhzdHJ1Y3QgcWF0X3ZmX2NvcmVfZGV2aWNlICpxYXRfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtMTA1LVxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjEwNjpzdGF0aWMgdm9pZCBxYXRfdmZfcGNpX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy0xMDcte1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy0xMTItXHRxYXRfdmZfZGlzYWJsZV9mZHMocWF0X3ZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjExMzpcdHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKGNvcmVfdmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtMTE0LX1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmM9NjA0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHFhdF92Zl9wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy02MDgtXHQub3Blbl9kZXZpY2UgPSBxYXRfdmZfcGNpX29wZW5fZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjYwOTpcdC5jbG9zZV9kZXZpY2UgPSBxYXRfdmZfcGNpX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy02MTAtXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz0xNDk9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTMtXHQub3Blbl9kZXZpY2VcdD0gdmZpb19wY2lfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM6MTU0Olx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTUtXHQuaW9jdGxcdFx0PSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTU5MD1pbnQgdmZpb19wY2lfY29yZV9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTY2OC1vdXRfZnJlZV96ZGV2OlxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NjY5Olx0dmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2UodmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy02NzAtb3V0X2ZyZWVfc3RhdGU6XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NjgyPXZvaWQgdmZpb19wY2lfY29yZV9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy03NjAtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo3NjE6XHR2ZmlvX3BjaV96ZGV2X2Nsb3NlX2RldmljZSh2ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTc2Mi1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz04MTQ9RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9kaXNhYmxlKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTgxNS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjgxNjp2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtODE3LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MzgtfVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6ODM5OkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTg0MC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaD05ND1pbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg6OTU6dm9pZCB2ZmlvX3BjaV96ZGV2X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtOTYtaW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9lcnIoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UsIHUzMiBmbGFncyxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaD0xMDU9c3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtMTA5LVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg6MTEwOnN0YXRpYyBpbmxpbmUgdm9pZCB2ZmlvX3BjaV96ZGV2X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaC0xMTEte31cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYz0xODQ9aW50IHZmaW9fcGNpX3pkZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jLTIwNi1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jOjIwNzp2b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jLTIwOC17XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmM9MzE2PWludCB2aXJ0aW92Zl9vcGVuX2xlZ2FjeV9pbyhzdHJ1Y3QgdmlydGlvdmZfcGNpX2NvcmVfZGV2aWNlICp2aXJ0dmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYy0zMjEtXHQvKlxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmM6MzIyOlx0ICogVXBvbiBjbG9zZV9kZXZpY2UoKSB0aGUgdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgaXMgY2FsbGVkXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYy0zMjMtXHQgKiBhbmQgd2lsbCBjbG9zZSBhbGwgdGhlIHByZXZpb3VzIG1tYXBzLCBzbyBpdCBzZWVtcyB0aGF0IHRoZVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0yMT1zdGF0aWMgaW50IHZpcnRpb3ZmX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtNDQtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6NDU6c3RhdGljIHZvaWQgdmlydGlvdmZfcGNpX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy00Ni17XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTUwLVx0dmlydGlvdmZfY2xvc2VfbWlncmF0aW9uKHZpcnR2ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzo1MTpcdHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKGNvcmVfdmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtNTItfVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz04ND1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2aXJ0aW92Zl92ZmlvX3BjaV9sbV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTg4LVx0Lm9wZW5fZGV2aWNlID0gdmlydGlvdmZfcGNpX29wZW5fZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjg5Olx0LmNsb3NlX2RldmljZSA9IHZpcnRpb3ZmX3BjaV9jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtOTAtXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0xMDY9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmlydGlvdmZfdmZpb19wY2lfdHJhbl9sbV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTExMC1cdC5vcGVuX2RldmljZSA9IHZpcnRpb3ZmX3BjaV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzoxMTE6XHQuY2xvc2VfZGV2aWNlID0gdmlydGlvdmZfcGNpX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMTItXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0xMjg9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmlydGlvdmZfdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMzItXHQub3Blbl9kZXZpY2UgPSB2aXJ0aW92Zl9wY2lfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MTMzOlx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTEzNC1cdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM9MTQ2PXN0YXRpYyBpbnQgeGVfdmZpb19wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtMTYzLVxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM6MTY0OnN0YXRpYyB2b2lkIHhlX3ZmaW9fcGNpX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE2NS17XG4tLVxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtMTcxLVx0eGVfdmZpb19wY2lfc3RhdGVfbXV0ZXhfdW5sb2NrKHhlX3ZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM6MTcyOlx0dmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UoY29yZV92ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE3My19XG4tLVxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM9NTIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHhlX3ZmaW9fcGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYy01MjYtXHQub3Blbl9kZXZpY2UgPSB4ZV92ZmlvX3BjaV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jOjUyNzpcdC5jbG9zZV9kZXZpY2UgPSB4ZV92ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYy01MjgtXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19hbWJhX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTE1LVx0Lm9wZW5fZGV2aWNlXHQ9IHZmaW9fcGxhdGZvcm1fb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MTE2Olx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0xMTctXHQuaW9jdGxcdFx0PSB2ZmlvX3BsYXRmb3JtX2lvY3RsLFxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM9OTc9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19wbGF0Zm9ybV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy0xMDEtXHQub3Blbl9kZXZpY2VcdD0gdmZpb19wbGF0Zm9ybV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTAyOlx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMTAzLVx0LmlvY3RsXHRcdD0gdmZpb19wbGF0Zm9ybV9pb2N0bCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYz0yMDI9c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX2NhbGxfcmVzZXQoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIxNi1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIxNzp2b2lkIHZmaW9fcGxhdGZvcm1fY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjE4LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMzQtfVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjM1OkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fY2xvc2VfZGV2aWNlKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIzNi1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9wcml2YXRlLmg9ODQ9aW50IHZmaW9fcGxhdGZvcm1fb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oOjg1OnZvaWQgdmZpb19wbGF0Zm9ybV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oLTg2LWxvbmcgdmZpb19wbGF0Zm9ybV9pb2N0bChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19tYWluLmM9NTA3PXZvaWQgdmZpb19kZXZpY2VfcHV0X2t2bShzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSlcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19tYWluLmMtNTI1LVxuZHJpdmVycy92ZmlvL3ZmaW9fbWFpbi5jOjUyNjovKiB0cnVlIGlmIHRoZSB2ZmlvX2RldmljZSBoYXMgb3Blbl9kZXZpY2UoKSBjYWxsZWQgYnV0IG5vdCBjbG9zZV9kZXZpY2UoKSAqL1xuZHJpdmVycy92ZmlvL3ZmaW9fbWFpbi5jLTUyNy1zdGF0aWMgYm9vbCB2ZmlvX2Fzc2VydF9kZXZpY2Vfb3BlbihzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSlcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19tYWluLmM9NTgyPXN0YXRpYyB2b2lkIHZmaW9fZGZfZGV2aWNlX2xhc3RfY2xvc2Uoc3RydWN0IHZmaW9fZGV2aWNlX2ZpbGUgKmRmKVxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX21haW4uYy01ODgtXG5kcml2ZXJzL3ZmaW8vdmZpb19tYWluLmM6NTg5Olx0aWYgKGRldmljZS1cdTAwM2VvcHMtXHUwMDNlY2xvc2VfZGV2aWNlKVxuZHJpdmVycy92ZmlvL3ZmaW9fbWFpbi5jOjU5MDpcdFx0ZGV2aWNlLVx1MDAzZW9wcy1cdTAwM2VjbG9zZV9kZXZpY2UoZGV2aWNlKTtcbmRyaXZlcnMvdmZpby92ZmlvX21haW4uYy01OTEtXHRpZiAoaW9tbXVmZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcyOTAKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA4NjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogRnV6emluZyBQb3RlbnRpYWwgLSBIaWdoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IHRoZSBjaGFuZ2VzIGFyb3VuZCBgdmZpb19wY2lfY29yZV9kaXNhYmxlYCwgaXMgd29ydGggZnV6emluZy4gVGhlIHBhdGNoIGlzIHRvdWNoZWQgYnkgYGNsb3NlX2RldmljZWAgKHdoZW4gdGhlIGRldmljZSBGRCBpcyBjbG9zZWQgaW4gdXNlcnNwYWNlKSBvciB3aGVuIG9wZW5pbmcgZmFpbHMuCgpGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgVkZJTy9WRklPX1BDSSBpcyBldmVuIGEgdmlhYmxlIHRhcmdldC4gQ2FuIHN5emthbGxlciBpbnRlcmFjdCB3aXRoIHRoZXNlIGRldmljZXM/IFllcywgYWJzb2x1dGVseS4gV2UgY2FuIGFjY2VzcyBWRklPIGRldmljZXMgdGhyb3VnaCBgL2Rldi92ZmlvLypgLCBgL2Rldi92ZmlvL2RldmljZXMvdmZpbypgLCBvciBgL2Rldi9pb21tdWZkYCwgYW5kIHN0YW5kYXJkIFFFTVUgVk1zIG1ha2UgdGhpcyBlYXN5IHdpdGggdmlydHVhbCBQQ0kgZGV2aWNlcy4gR29vZCwgdGhhdCYjMzk7cyBhIHBvc2l0aXZlIHN0YXJ0LgoKVGhlIHBhdGNoJiMzOTtzIGFjdHVhbCBtb2RpZmljYXRpb24gb2YgdGhlIGxvY2tpbmcgYmVoYXZpb3Igb2YgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgaXMgdGhlIGNvcmUuIEl0IHN3aXRjaGVzIGZyb20gYSBgdHJ5bG9ja2AgYXBwcm9hY2ggdG8gYSBndWFyYW50ZWVkIGBsb2NrYCB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgYnJpZGdlIGRldmljZSwgd2hpY2ggaXMgYSBzdWJ0bGUsIHlldCBwb3RlbnRpYWxseSBpbXBvcnRhbnQgY2hhbmdlIGluIHN5bmNocm9uaXphdGlvbi4KCk5vdywgbGV0JiMzOTtzIGNvbnN1bHQgdGhlIGNyaXRlcmlhLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIGJlaGF2aW9yLCB3aGljaCBmYWxscyB1bmRlciB0aGUgJiMzNDtDb3JlIFN1YnN5c3RlbXMmIzM0OyBjYXRlZ29yeS4gVGhpcyBpcyBhIHZlcnkgc3Ryb25nIHBvc2l0aXZlLiBUaGUgZmFjdCB0aGF0IHRoZSBjaGFuZ2VzIHJlc3RydWN0dXJlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzIGFsc28gbWFrZSB0aGUgcGF0Y2ggaW50ZXJlc3RpbmcuCgpUbyBiZSBzdXJlLCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgbmVnYXRpdmUgY3JpdGVyaWEuIFRoaXMgY29kZSBpcyAqbm90KiB2ZW5kb3Itc3BlY2lmaWMgb3IgdGllZCB0byBoYXJkd2FyZSB0aGF0JiMzOTtzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2VkIGZ1bmN0aW9uIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGlzIGluIHRoZSBgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNgIGFuZCBpcyBnZW5lcmljIFZGSU8gUENJIGNvcmUgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYnkgUUVNVSwgbm90IGEgc3BlY2lhbCBkcml2ZXIgcmVxdWlyaW5nIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlLiBUaGlzIGlzIGdlbmVyaWMgUENJIGRldmljZXMgbWFuYWdlZCBieSBgdmZpby1wY2lgICh3aGljaCBjYW4gYmUgYW55IFBDSSBkZXZpY2UgaW4gUUVNVSwgZS5nLiB2aXJ0aW8tcGNpLCBldGMuKS4gVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGV4ZWN1dGVkIGR1cmluZyB0aGUgbm9ybWFsIGRldmljZSBsaWZlY3ljbGUsIGVpdGhlciBieSBjbG9zaW5nIHRoZSBkZXZpY2UsIGZkIGNsb3NlIG9yIHJlbGVhc2UsIG9yIGVycm9yIGhhbmRsaW5nLiBTbywgaXQmIzM5O3Mgbm90IGEgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrIHRyaWdnZXJlZCBvbmx5IGJ5IFBDSSBob3QtdW5wbHVnLgoKVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBwYXJ0aWN1bGFybHkgdGVsbGluZzogSSBzZWUgdGhhdCBgdmZpb19wY2lfY29yZV9kaXNhYmxlYCBpdHNlbGYgaXMgZGlyZWN0bHkgbW9kaWZpZWQuIGB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZWAgYW5kIGB2ZmlvX3BjaV9vcGVuX2RldmljZWAgYXJlIGFsc28gcmVsZXZhbnQgYmVjYXVzZSB0aGV5IGNhbGwgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgZGlyZWN0bHksIGluZGljYXRpbmcgYSBkaXJlY3QgZW50cnkgcG9pbnQuIFRoaXMgY29uZmlybXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIHRoZSBmb2N1cyBvZiB0aGVzZSBjaGFuZ2VzIGFuZCB3aWxsIGJlIHBhcnQgb2YgZnV6emluZy4KCkkmIzM5O2xsIGNoZWNrIGB2ZmlvX3BjaV9jb3JlLmNgIGFyb3VuZCBgdmZpb19wY2lfY29yZV9kaXNhYmxlYCBmb3IgYW55IGFkZGl0aW9uYWwgY29udGV4dCBvciBvdGhlciBpbnRlcmVzdGluZyBwYXRocy4gSG93ZXZlciwgYmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIEkgaGF2ZSBub3csIHRoaXMgaXMgYSBkZWZpbml0ZSAmIzM0O2dvJiMzNDsgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc4MDpcdFx0ICogZHVyaW5nIHJlc2V0LiAgU3RvbGVuIGZyb20gcGNpX3Jlc2V0X2Z1bmN0aW9uKClcbiA3ODE6XHRcdCAqL1xuIDc4MjpcdFx0cGNpX3dyaXRlX2NvbmZpZ193b3JkKHBkZXYsIFBDSV9DT01NQU5ELCBQQ0lfQ09NTUFORF9JTlRYX0RJU0FCTEUpO1xuIDc4MzpcdFxuIDc4NDpcdFx0LypcbiA3ODU6XHRcdCAqIFRyeSB0byBnZXQgdGhlIGxvY2tzIG91cnNlbHZlcyB0byBwcmV2ZW50IGEgZGVhZGxvY2suIFRoZVxuIDc4NjpcdFx0ICogc3VjY2VzcyBvZiB0aGlzIGlzIGRlcGVuZGVudCBvbiBiZWluZyBhYmxlIHRvIGxvY2sgdGhlIGRldmljZSxcbiA3ODc6XHRcdCAqIHdoaWNoIGlzIG5vdCBhbHdheXMgcG9zc2libGUuXG4gNzg4Olx0XHQgKiBXZSBjYW4gbm90IHVzZSB0aGUgXCYjMzQ7dHJ5XCYjMzQ7IHJlc2V0IGludGVyZmFjZSBoZXJlLCB3aGljaCB3aWxsXG4gNzg5Olx0XHQgKiBvdmVyd3JpdGUgdGhlIHByZXZpb3VzbHkgcmVzdG9yZWQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cbiA3OTA6XHRcdCAqL1xuIDc5MTpcdFx0aWYgKHZkZXYtXHUwMDNlcmVzZXRfd29ya3MpIHtcbiA3OTI6XHRcdFx0YnJpZGdlID0gcGNpX3Vwc3RyZWFtX2JyaWRnZShwZGV2KTtcbiA3OTM6XHRcdFx0aWYgKGJyaWRnZSlcbiA3OTQ6XHRcdFx0XHRwY2lfZGV2X2xvY2soYnJpZGdlKTtcbiA3OTU6XHRcdFx0aWYgKHBjaV9kZXZfdHJ5bG9jayhwZGV2KSkge1xuIDc5NjpcdFx0XHRcdGlmICghX19wY2lfcmVzZXRfZnVuY3Rpb25fbG9ja2VkKHBkZXYpKVxuIDc5NzpcdFx0XHRcdFx0dmRldi1cdTAwM2VuZWVkc19yZXNldCA9IGZhbHNlO1xuIDc5ODpcdFx0XHRcdHBjaV9kZXZfdW5sb2NrKHBkZXYpO1xuIDc5OTpcdFx0XHR9XG4gODAwOlx0XHRcdGlmIChicmlkZ2UpXG4gODAxOlx0XHRcdFx0cGNpX2Rldl91bmxvY2soYnJpZGdlKTtcbiA4MDI6XHRcdH1cbiA4MDM6XHRcbiA4MDQ6XHRcdHBjaV9yZXN0b3JlX3N0YXRlKHBkZXYpO1xuIDgwNTpcdG91dDpcbiA4MDY6XHRcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcbiA4MDc6XHRcbiA4MDg6XHRcdHZmaW9fcGNpX2Rldl9zZXRfdHJ5X3Jlc2V0KHZkZXYtXHUwMDNldmRldi5kZXZfc2V0KTtcbiA4MDk6XHRcbiA4MTA6XHRcdC8qIFB1dCB0aGUgcG0tcnVudGltZSB1c2FnZSBjb3VudGVyIGFjcXVpcmVkIGR1cmluZyBlbmFibGUgKi9cbiA4MTE6XHRcdGlmICghdmRldi1cdTAwM2VkaXNhYmxlX2lkbGVfZDMpXG4gODEyOlx0XHRcdHBtX3J1bnRpbWVfcHV0KFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiA4MTM6XHR9XG4gODE0Olx0RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9kaXNhYmxlKTtcbiA4MTU6XHRcbiA4MTY6XHR2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuIDgxNzpcdHtcbiA4MTg6XHRcdHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiA9XG4gODE5Olx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSwgdmRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NDg1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqS2NvbmZpZyBhbmQgTWFrZWZpbGVzOiBUaGUgRm91bmRhdGlvbioqCgpBbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCBteSBkdWNrcyBpbiBhIHJvdy4gRmlyc3QgdGhpbmdzIGZpcnN0OiBsZXQmIzM5O3MgdmVyaWZ5IHRoZSBLY29uZmlnIG9wdGlvbnMgdGhhdCAqdGhpcyogc3BlY2lmaWMgY29kZSBkZXBlbmRzIG9uLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGVuc3VyZSB0aGUgbmVjZXNzYXJ5IGZlYXR1cmVzIGFyZSBlbmFibGVkIGFuZCBjb3JyZWN0bHkgY29uZmlndXJlZCBpbiB0aGUga2VybmVsIGJ1aWxkLiBJIGRvbiYjMzk7dCB3YW50IHRvIHdhc3RlIHRpbWUgY2hhc2luZyBkb3duIGJ1aWxkIGVycm9ycyBsYXRlciBiZWNhdXNlIGEgZnVuZGFtZW50YWwgY29tcG9uZW50IGlzIG1pc3Npbmcgb3IgZGlzYWJsZWQuIEdvdHRhIGdldCB0aGUgZ3JvdW5kd29yayBzb2xpZC4KClRoZW4sIEkmIzM5O2xsIHN3aW5nIG92ZXIgdG8gdGhlIGBkcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBtYWdpYyBoYXBwZW5zLCB3aGVyZSB0aGUgYnVpbGQgcHJvY2VzcyBpcyBvcmNoZXN0cmF0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgY29kZSBpcyBpbnRlZ3JhdGVkLCB3aGF0IGRlcGVuZGVuY2llcyBpdCBwdWxscyBpbiwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lhbCBidWlsZCBmbGFncyBvciBjb25maWd1cmF0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gVGhlIE1ha2VmaWxlIHdpbGwgc2hvdyBtZSB0aGUgYnVpbGQgcnVsZXMsIG9iamVjdCBmaWxlcywgYW5kIGxpa2VseSwgaG93IHRoaXMgYWxsIGZpdHMgaW50byB0aGUgbGFyZ2VyIHZmaW8tcGNpIHBpY3R1cmUuIFRoaXMgZ2l2ZXMgYSBjbGVhcmVyIHBpY3R1cmUgb2Ygd2hldGhlciBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIGFyZSBtaXNzaW5nIGFuZCwgZnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gaW52ZXN0aWdhdGUgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0XG4gICAzOlx0dmZpby1wY2ktY29yZS15IDo9IHZmaW9fcGNpX2NvcmUubyB2ZmlvX3BjaV9pbnRycy5vIHZmaW9fcGNpX3Jkd3IubyB2ZmlvX3BjaV9jb25maWcub1xuICAgNDpcdHZmaW8tcGNpLWNvcmUtJChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pICYjNDM7PSB2ZmlvX3BjaV96ZGV2Lm9cbiAgIDU6XHR2ZmlvLXBjaS1jb3JlLSQoQ09ORklHX1ZGSU9fUENJX0RNQUJVRikgJiM0Mzs9IHZmaW9fcGNpX2RtYWJ1Zi5vXG4gICA2Olx0b2JqLSQoQ09ORklHX1ZGSU9fUENJX0NPUkUpICYjNDM7PSB2ZmlvLXBjaS1jb3JlLm9cbiAgIDc6XHRcbiAgIDg6XHR2ZmlvLXBjaS15IDo9IHZmaW9fcGNpLm9cbiAgIDk6XHR2ZmlvLXBjaS0kKENPTkZJR19WRklPX1BDSV9JR0QpICYjNDM7PSB2ZmlvX3BjaV9pZ2Qub1xuICAxMDpcdG9iai0kKENPTkZJR19WRklPX1BDSSkgJiM0Mzs9IHZmaW8tcGNpLm9cbiAgMTE6XHRcbiAgMTI6XHRvYmotJChDT05GSUdfTUxYNV9WRklPX1BDSSkgICAgICAgICAgICYjNDM7PSBtbHg1L1xuICAxMzpcdFxuICAxNDpcdG9iai0kKENPTkZJR19JU01fVkZJT19QQ0kpICAgICAgICAgICAmIzQzOz0gaXNtL1xuICAxNTpcdFxuICAxNjpcdG9iai0kKENPTkZJR19ISVNJX0FDQ19WRklPX1BDSSkgJiM0Mzs9IGhpc2lsaWNvbi9cbiAgMTc6XHRcbiAgMTg6XHRvYmotJChDT05GSUdfUERTX1ZGSU9fUENJKSAmIzQzOz0gcGRzL1xuICAxOTpcdFxuICAyMDpcdG9iai0kKENPTkZJR19WSVJUSU9fVkZJT19QQ0kpICYjNDM7PSB2aXJ0aW8vXG4gIDIxOlx0XG4gIDIyOlx0b2JqLSQoQ09ORklHX05WR1JBQ0VfR1BVX1ZGSU9fUENJKSAmIzQzOz0gbnZncmFjZS1ncHUvXG4gIDIzOlx0XG4gIDI0Olx0b2JqLSQoQ09ORklHX1FBVF9WRklPX1BDSSkgJiM0Mzs9IHFhdC9cbiAgMjU6XHRcbiAgMjY6XHRvYmotJChDT05GSUdfWEVfVkZJT19QQ0kpICYjNDM7PSB4ZS9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzMDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQ6CgoqKkV4YW1pbmluZyBWRklPIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVkZJTy4gV2hlcmUgZG8gSSBzdGFydD8gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBsb29rIGZvciB0aG9zZSB3b3VsZCBiZSB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhlIGRyaXZlciYjMzk7cyBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgYGRyaXZlcnMvdmZpby9LY29uZmlnYC4gVGhhdCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludHMgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGUgVkZJTyBmZWF0dXJlcy4gSSYjMzk7bGwgbmVlZCB0byByZXZpZXcgdGhvc2Ugc2V0dGluZ3MgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uIGxhbmRzY2FwZS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnVjb25maWcgVkZJT1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBOb24tUHJpdmlsZWdlZCB1c2Vyc3BhY2UgZHJpdmVyIGZyYW1ld29ya1wmIzM0O1xuICAgNDpcdFx0c2VsZWN0IElPTU1VX0FQSVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBJT01NVUZEIHx8ICFJT01NVUZEXG4gICA2Olx0XHRzZWxlY3QgSU5URVJWQUxfVFJFRVxuICAgNzpcdFx0c2VsZWN0IFZGSU9fR1JPVVAgaWYgU1BBUFJfVENFX0lPTU1VIHx8IElPTU1VRkQ9blxuICAgODpcdFx0c2VsZWN0IFZGSU9fREVWSUNFX0NERVYgaWYgIVZGSU9fR1JPVVBcbiAgIDk6XHRcdHNlbGVjdCBWRklPX0NPTlRBSU5FUiBpZiBJT01NVUZEPW5cbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgVkZJTyBwcm92aWRlcyBhIGZyYW1ld29yayBmb3Igc2VjdXJlIHVzZXJzcGFjZSBkZXZpY2UgZHJpdmVycy5cbiAgMTI6XHRcdCAgU2VlIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLnJzdCBmb3IgbW9yZSBkZXRhaWxzLlxuICAxMzpcdFxuICAxNDpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiAgMTU6XHRcbiAgMTY6XHRpZiBWRklPXG4gIDE3Olx0Y29uZmlnIFZGSU9fREVWSUNFX0NERVZcbiAgMTg6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgdGhlIFZGSU8gY2RldiAvZGV2L3ZmaW8vZGV2aWNlcy92ZmlvWFwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiBJT01NVUZEIFx1MDAyNlx1MDAyNiAhU1BBUFJfVENFX0lPTU1VXG4gIDIwOlx0XHRkZWZhdWx0ICFWRklPX0dST1VQXG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgIFRoZSBWRklPIGRldmljZSBjZGV2IGlzIGFub3RoZXIgd2F5IGZvciB1c2Vyc3BhY2UgdG8gZ2V0IGRldmljZVxuICAyMzpcdFx0ICBhY2Nlc3MuIFVzZXJzcGFjZSBnZXRzIGRldmljZSBmZCBieSBvcGVuaW5nIGRldmljZSBjZGV2IHVuZGVyXG4gIDI0Olx0XHQgIC9kZXYvdmZpby9kZXZpY2VzL3ZmaW9YLCBhbmQgdGhlbiBiaW5kIHRoZSBkZXZpY2UgZmQgd2l0aCBhbiBpb21tdWZkXG4gIDI1Olx0XHQgIHRvIHNldCB1cCBzZWN1cmUgRE1BIGNvbnRleHQgZm9yIGRldmljZSBhY2Nlc3MuXG4gIDI2Olx0XG4gIDI3Olx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxuICAyODpcdFxuICAyOTpcdGNvbmZpZyBWRklPX0dST1VQXG4gIDMwOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBWRklPIGdyb3VwIC9kZXYvdmZpby8kZ3JvdXBfaWRcJiMzNDtcbiAgMzE6XHRcdGRlZmF1bHQgeVxuICAzMjpcdFx0aGVscFxuICAzMzpcdFx0ICAgVkZJTyBncm91cCBzdXBwb3J0IHByb3ZpZGVzIHRoZSB0cmFkaXRpb25hbCBtb2RlbCBmb3IgYWNjZXNzaW5nXG4gIDM0Olx0XHQgICBkZXZpY2VzIHRocm91Z2ggVkZJTyBhbmQgaXMgdXNlZCBieSB0aGUgbWFqb3JpdHkgb2YgdXNlcnNwYWNlXG4gIDM1Olx0XHQgICBhcHBsaWNhdGlvbnMgYW5kIGRyaXZlcnMgbWFraW5nIHVzZSBvZiBWRklPLlxuICAzNjpcdFxuICAzNzpcdFx0ICAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IFkuXG4gIDM4Olx0XG4gIDM5Olx0Y29uZmlnIFZGSU9fQ09OVEFJTkVSXG4gIDQwOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBWRklPIGNvbnRhaW5lciAvZGV2L3ZmaW8vdmZpb1wmIzM0O1xuICA0MTpcdFx0c2VsZWN0IFZGSU9fSU9NTVVfVFlQRTEgaWYgTU1VIFx1MDAyNlx1MDAyNiAoWDg2IHx8IFMzOTAgfHwgQVJNIHx8IEFSTTY0KVxuICA0MjpcdFx0ZGVwZW5kcyBvbiBWRklPX0dST1VQXG4gIDQzOlx0XHRkZWZhdWx0IHlcbiAgNDQ6XHRcdGhlbHBcbiAgNDU6XHRcdCAgVGhlIFZGSU8gY29udGFpbmVyIGlzIHRoZSBjbGFzc2ljIGludGVyZmFjZSB0byBWRklPIGZvciBlc3RhYmxpc2hpbmdcbiAgNDY6XHRcdCAgSU9NTVUgbWFwcGluZ3MuIElmIE4gaXMgc2VsZWN0ZWQgaGVyZSB0aGVuIElPTU1VRkQgbXVzdCBiZSB1c2VkIHRvXG4gIDQ3Olx0XHQgIG1hbmFnZSB0aGUgbWFwcGluZ3MuXG4gIDQ4Olx0XG4gIDQ5Olx0XHQgIFVubGVzcyB0ZXN0aW5nIElPTU1VRkQgc2F5IFkgaGVyZS5cbiAgNTA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEyNjMKCQkJCQkJCW91dHB1dDogMTgzCgkJCQkJCQl0aG91Z2h0czogNjUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZGSU8gUENJIExvY2tpbmcgTG9naWMgUmV2aWV3KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWRlZCB0byBjb25maXJtIHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb25zLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBgUENJYCBlbmFibGVzIFZGSU8gc3VwcG9ydCwgYFZGSU9gIGlzIHRoZSB0b3AtbGV2ZWwgbWVudSBvcHRpb24sIGBWRklPX1BDSWAgcHJvdmlkZXMgZ2VuZXJpYyBWRklPIHN1cHBvcnQgZm9yIGFueSBQQ0kgZGV2aWNlIGFuZCBzZWxlY3RzIGBWRklPX1BDSV9DT1JFYCwgYW5kIGBWRklPX1BDSV9DT1JFYCBpcyBjb21waWxlZCB3aGVuIGBWRklPX1BDSWAgaXMgc2VsZWN0ZWQuIFNvLCBgVkZJT2AsIGBWRklPX1BDSWAsIGFuZCBgUENJYCBhcmUgdGhlIG9uZXMgdG8gZm9jdXMgb24uCgpUaGVuLCBJIGxvb2tlZCBhdCB0aGUgYGRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBjb25maXJtaW5nIHRoYXQgYFZGSU9fUENJYCBhbmQgYFZGSU9gIGFyZSBrZXkgYW5kIGRlcGVuZCBvbiBgUENJYC4KCk5leHQsIEkgZm9jdXNlZCBvbiByZWxldmFudCBzeW1ib2xzOiBzcGVjaWZpY2FsbHkgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAsIGB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZWAsIGB2ZmlvX3BjaV9vcGVuX2RldmljZWAsIGFuZCBhbHNvIGRvdWJsZS1jaGVja2VkIGB2ZmlvX3BjaV9jb3JlX2VuYWJsZWAsIHdoaWNoIGFyZSBhbGwgZm91bmQgaW4gYHZmaW9fcGNpX2NvcmUuY2AuIFRoaXMgZ2F2ZSBtZSBhIGdvb2QgZ3Jhc3Agb2YgdGhlIGNvbnRyb2wgcG9pbnRzLgoKSSByZXZpZXdlZCBgdmZpb19wY2lfY29yZV9lbmFibGVgIGFuZCBgdmZpb19wY2lfY29yZV9kaXNhYmxlYCwgYXMgdGhleSYjMzk7cmUgdGhlIGNvcmUgbGlmZWN5Y2xlIGZ1bmN0aW9ucyBtYW5hZ2luZyB0aGUgc3RhdGUgYW5kIGxvY2tzIG9mIFBDSSBkZXZpY2VzIHdpdGhpbiBWRklPLiBOb3csIHRoZSBwYXRjaCBmb2N1c2VzIG9uIGNoYW5naW5nIGxvY2tpbmcgbG9naWMgaW4gYHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpYC4gSXQgcmVwbGFjZXMgYSB0cnkgbG9jayBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBibG9ja2luZyBsb2NrLiBUaGF0IG1lYW5zIHRoZSBwYXRjaCBhbHRlcnMgc3luY2hyb25pemF0aW9uIGJlaGF2aW9yIGR1cmluZyB0ZWFyZG93biwgd2hpY2ggY2FuIGxlYWQgdG8gbG9jayBvcmRlciBpc3N1ZXMgYW5kIHBvdGVudGlhbCBkZWFkbG9ja3MuIFRoaXMgaXMgc2lnbmlmaWNhbnQsIGVzcGVjaWFsbHkgaW4gUUVNVSBlbnZpcm9ubWVudHMgd2l0aCBQQ0kgYW5kIFZGSU8gc3VwcG9ydC4KCkJhc2VkIG9uIGFsbCBvZiB0aGlzLCB0aGUgcGF0Y2ggZGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9uIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBJJiMzOTt2ZSBvdXRsaW5lZCB0aGUgYFJlYXNvbmluZ2AgY2xlYXJseS4gQW5kIEkmIzM5O3ZlIGRvdWJsZSBjaGVja2VkIHRoZSBgRm9jdXNTeW1ib2xzYCBhbmQgdGhlIGBFbmFibGVDb25maWdzYC4gSXQmIzM5O3MgYWxsIHZlcmlmaWVkLCBzbyBJJiMzOTttIGdvb2QgdG8gcHJvY2VlZCB3aXRoIHNldHRpbmcgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQQ0kmIzM0OywKICAgICYjMzQ7VkZJTyYjMzQ7LAogICAgJiMzNDtWRklPX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfZGlzYWJsZSYjMzQ7LAogICAgJiMzNDt2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSYjMzQ7LAogICAgJiMzNDt2ZmlvX3BjaV9jb3JlX2VuYWJsZSYjMzQ7LAogICAgJiMzNDt2ZmlvX3BjaV9vcGVuX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBsb2dpYyBpbiB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoKSBieSByZXBsYWNpbmcgYSB0cnlsb2NrIG9uIHRoZSB1cHN0cmVhbSBicmlkZ2Ugd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGJsb2NraW5nIHBjaV9kZXZfbG9jayhicmlkZ2UpLiBUaGlzIGFsdGVycyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBiZWhhdmlvciBpbiB0aGUgVkZJTyBQQ0kgdGVhcmRvd24vZGlzYWJsZSBwYXRoIHdoZW4gZGV2aWNlIGluc3RhbmNlcyBhcmUgY2xvc2VkIG9yIGRpc2FibGVkLCB3aGljaCBjYW4gaW50cm9kdWNlIGRlYWRsb2NrIG9yIGxvY2tpbmcgaW52YXJpYW50IGlzc3Vlcy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZGSU8gUENJIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtWRklPJiMzNDssCiAgICAmIzM0O1ZGSU9fUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZpb19wY2lfY29yZV9kaXNhYmxlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfZW5hYmxlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX29wZW5fZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGxvZ2ljIGluIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpIGJ5IHJlcGxhY2luZyBhIHRyeWxvY2sgb24gdGhlIHVwc3RyZWFtIGJyaWRnZSB3aXRoIGFuIHVuY29uZGl0aW9uYWwgYmxvY2tpbmcgcGNpX2Rldl9sb2NrKGJyaWRnZSkuIFRoaXMgYWx0ZXJzIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIGJlaGF2aW9yIGluIHRoZSBWRklPIFBDSSB0ZWFyZG93bi9kaXNhYmxlIHBhdGggd2hlbiBkZXZpY2UgaW5zdGFuY2VzIGFyZSBjbG9zZWQgb3IgZGlzYWJsZWQsIHdoaWNoIGNhbiBpbnRyb2R1Y2UgZGVhZGxvY2sgb3IgbG9ja2luZyBpbnZhcmlhbnQgaXNzdWVzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdpdGggVkZJTyBQQ0kgc3VwcG9ydC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwODo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRldmljZSBsb2NraW5nIGJlaGF2aW9yIGluIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpIGJ5IHJlcGxhY2luZyBhIHRyeWxvY2sgKHBjaV9kZXZfdHJ5bG9jaykgb24gdGhlIHVwc3RyZWFtIGJyaWRnZSB3aXRoIGFuIHVuY29uZGl0aW9uYWwgbG9jayAocGNpX2Rldl9sb2NrKSBhbmQgcmVtb3ZpbmcgYW4gdW51c2VkIGdvdG8gbGFiZWwuIFRoaXMgY2hhbmdlIGV4Y2x1c2l2ZWx5IGFmZmVjdHMgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgYW5kIGRldmljZSByZXNldCBmbG93LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIGFsbG9jYXRlLCBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcywgbm9yIGRvZXMgaXQgY29weSBkYXRhIHRvIHVzZXIgc3BhY2Ugb3IgYWx0ZXIgbG9naWMgZGVhbGluZyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIHJlZ3Jlc3Npb25zIChzdWNoIGFzIGRlYWRsb2NrcyBvciBsb2NrIG9yZGVyIGludmVyc2lvbnMpIGFyZSBkZXRlY3RhYmxlIGJ5IExPQ0tERVAvS0FTQU4gcmF0aGVyIHRoYW4gS01TQU4uIERlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZiY2E0YTliOGRkOThlZWY0MzgzM2VmYzQ2ZjVlZWI3YzFmZTA2ODUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDA4OjU1OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwppbmRleCAzNjJjMzc1YTA1Nzk5Li44OTY2YTViZWE0MDYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwpAQCAtNzkwLDggJiM0Mzs3OTAsOCBAQCB2b2lkIHZmaW9fcGNpX2NvcmVfZGlzYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpCiAJICovCiAJaWYgKHZkZXYtJmd0O3Jlc2V0X3dvcmtzKSB7CiAJCWJyaWRnZSA9IHBjaV91cHN0cmVhbV9icmlkZ2UocGRldik7Ci0JCWlmIChicmlkZ2UgJmFtcDsmYW1wOyAhcGNpX2Rldl90cnlsb2NrKGJyaWRnZSkpCi0JCQlnb3RvIG91dF9yZXN0b3JlX3N0YXRlOwomIzQzOwkJaWYgKGJyaWRnZSkKJiM0MzsJCQlwY2lfZGV2X2xvY2soYnJpZGdlKTsKIAkJaWYgKHBjaV9kZXZfdHJ5bG9jayhwZGV2KSkgewogCQkJaWYgKCFfX3BjaV9yZXNldF9mdW5jdGlvbl9sb2NrZWQocGRldikpCiAJCQkJdmRldi0mZ3Q7bmVlZHNfcmVzZXQgPSBmYWxzZTsKQEAgLTgwMSw3ICYjNDM7ODAxLDYgQEAgdm9pZCB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KQogCQkJcGNpX2Rldl91bmxvY2soYnJpZGdlKTsKIAl9CiAKLW91dF9yZXN0b3JlX3N0YXRlOgogCXBjaV9yZXN0b3JlX3N0YXRlKHBkZXYpOwogb3V0OgogCXBjaV9kaXNhYmxlX2RldmljZShwZGV2KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSB2ZmlvLXBjaSBDb3JlIERpc2FibGUgUGF0Y2gqKgoKT2theSwgc28gdGhlIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCBzZWVtcyB0byBiZSBjZW50cmFsaXplZCwgdGhhbmtmdWxseS4gSXQmIzM5O3MgYWxsIGNvbnRhaW5lZCB3aXRoaW4gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gTXkgZmlyc3Qgc3RlcCwgYXMgYWx3YXlzLCBpcyBnb2luZyB0byBiZSB0byBkZWVwbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhcm91bmQgdGhlIGZ1bmN0aW9uIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgLiBJIG5lZWQgdG8gc2VlICp3aHkqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgdG91Y2hlZC4gSXMgaXQgYmVpbmcgbW9kaWZpZWQgZGlyZWN0bHk/IElzIGNvZGUgYXJvdW5kIGl0IGJlaW5nIGFsdGVyZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaXMgY3J1Y2lhbCBmb3IgZ3Jhc3BpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLCBlc3BlY2lhbGx5IGluIGEgZHJpdmVyIGFzIGNvbXBsZXggYXMgVkZJTy4KClRvIGRpdmUgaW4gZWZmaWNpZW50bHksIEkmIzM5O2xsIGxldmVyYWdlIG15IHRvb2xpbmcuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB1c2UgYHJlYWQtZmlsZWAgdG8gemVybyBpbiBvbiB0aGUgYXJlYSBhcm91bmQgbGluZSA3OTAgaW4gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYGRpc2FibGVgIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBkcml2ZXIgZmxvdy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGNhbGxzLCBkZWZpbml0aW9ucywgYW5kIGxpa2VseSBzb21lIGVycm9yIGhhbmRsaW5nIG9yIHN0YXRlIG1hbmFnZW1lbnQgYXJvdW5kIHRoYXQgbGluZS4gVGhhdCYjMzk7bGwgYmUgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBwaWVjaW5nIHRvZ2V0aGVyIHRoZSBmdW5jdGlvbmFsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzcwOlx0XHRcdHBjaV9pbmZvKHBkZXYsIFwmIzM0OyVzOiBDb3VsZG4mIzM5O3QgcmVsb2FkIHNhdmVkIHN0YXRlXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4gNzcxOlx0XG4gNzcyOlx0XHRcdGlmICghdmRldi1cdTAwM2VyZXNldF93b3JrcylcbiA3NzM6XHRcdFx0XHRnb3RvIG91dDtcbiA3NzQ6XHRcbiA3NzU6XHRcdFx0cGNpX3NhdmVfc3RhdGUocGRldik7XG4gNzc2Olx0XHR9XG4gNzc3Olx0XG4gNzc4Olx0XHQvKlxuIDc3OTpcdFx0ICogRGlzYWJsZSBJTlR4IGFuZCBNU0ksIHByZXN1bWFibHkgdG8gYXZvaWQgc3B1cmlvdXMgaW50ZXJydXB0c1xuIDc4MDpcdFx0ICogZHVyaW5nIHJlc2V0LiAgU3RvbGVuIGZyb20gcGNpX3Jlc2V0X2Z1bmN0aW9uKClcbiA3ODE6XHRcdCAqL1xuIDc4MjpcdFx0cGNpX3dyaXRlX2NvbmZpZ193b3JkKHBkZXYsIFBDSV9DT01NQU5ELCBQQ0lfQ09NTUFORF9JTlRYX0RJU0FCTEUpO1xuIDc4MzpcdFxuIDc4NDpcdFx0LypcbiA3ODU6XHRcdCAqIFRyeSB0byBnZXQgdGhlIGxvY2tzIG91cnNlbHZlcyB0byBwcmV2ZW50IGEgZGVhZGxvY2suIFRoZVxuIDc4NjpcdFx0ICogc3VjY2VzcyBvZiB0aGlzIGlzIGRlcGVuZGVudCBvbiBiZWluZyBhYmxlIHRvIGxvY2sgdGhlIGRldmljZSxcbiA3ODc6XHRcdCAqIHdoaWNoIGlzIG5vdCBhbHdheXMgcG9zc2libGUuXG4gNzg4Olx0XHQgKiBXZSBjYW4gbm90IHVzZSB0aGUgXCYjMzQ7dHJ5XCYjMzQ7IHJlc2V0IGludGVyZmFjZSBoZXJlLCB3aGljaCB3aWxsXG4gNzg5Olx0XHQgKiBvdmVyd3JpdGUgdGhlIHByZXZpb3VzbHkgcmVzdG9yZWQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cbiA3OTA6XHRcdCAqL1xuIDc5MTpcdFx0aWYgKHZkZXYtXHUwMDNlcmVzZXRfd29ya3MpIHtcbiA3OTI6XHRcdFx0YnJpZGdlID0gcGNpX3Vwc3RyZWFtX2JyaWRnZShwZGV2KTtcbiA3OTM6XHRcdFx0aWYgKGJyaWRnZSlcbiA3OTQ6XHRcdFx0XHRwY2lfZGV2X2xvY2soYnJpZGdlKTtcbiA3OTU6XHRcdFx0aWYgKHBjaV9kZXZfdHJ5bG9jayhwZGV2KSkge1xuIDc5NjpcdFx0XHRcdGlmICghX19wY2lfcmVzZXRfZnVuY3Rpb25fbG9ja2VkKHBkZXYpKVxuIDc5NzpcdFx0XHRcdFx0dmRldi1cdTAwM2VuZWVkc19yZXNldCA9IGZhbHNlO1xuIDc5ODpcdFx0XHRcdHBjaV9kZXZfdW5sb2NrKHBkZXYpO1xuIDc5OTpcdFx0XHR9XG4gODAwOlx0XHRcdGlmIChicmlkZ2UpXG4gODAxOlx0XHRcdFx0cGNpX2Rldl91bmxvY2soYnJpZGdlKTtcbiA4MDI6XHRcdH1cbiA4MDM6XHRcbiA4MDQ6XHRcdHBjaV9yZXN0b3JlX3N0YXRlKHBkZXYpO1xuIDgwNTpcdG91dDpcbiA4MDY6XHRcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcbiA4MDc6XHRcbiA4MDg6XHRcdHZmaW9fcGNpX2Rldl9zZXRfdHJ5X3Jlc2V0KHZkZXYtXHUwMDNldmRldi5kZXZfc2V0KTtcbiA4MDk6XHRcbiA4MTA6XHRcdC8qIFB1dCB0aGUgcG0tcnVudGltZSB1c2FnZSBjb3VudGVyIGFjcXVpcmVkIGR1cmluZyBlbmFibGUgKi9cbiA4MTE6XHRcdGlmICghdmRldi1cdTAwM2VkaXNhYmxlX2lkbGVfZDMpXG4gODEyOlx0XHRcdHBtX3J1bnRpbWVfcHV0KFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiA4MTM6XHR9XG4gODE0Olx0RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9kaXNhYmxlKTtcbiA4MTU6XHRcbiA4MTY6XHR2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuIDgxNzpcdHtcbiA4MTg6XHRcdHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiA9XG4gODE5Olx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSwgdmRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MjkKCQkJCQkJCW91dHB1dDogMTYwCgkJCQkJCQl0aG91Z2h0czogNDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9ja2luZyBDaGFuZ2UgaW4gYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgbG9va3MgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBzeW5jaHJvbml6YXRpb24gY2hhbmdlIHdpdGhpbiB0aGUgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgd2UmIzM5O3JlIHRyYW5zaXRpb25pbmcgZnJvbSBgcGNpX2Rldl90cnlsb2NrKGJyaWRnZSlgIHRvIGBwY2lfZGV2X2xvY2soYnJpZGdlKWAgd2hlbiByZXNldHRpbmcgYSBkZXZpY2UuIFRoaXMgY2hhbmdlIG1vZGlmaWVzIHRoZSBsb2NraW5nIGJlaGF2aW9yIGFyb3VuZCB0aGUgdXBzdHJlYW0gUENJIGJyaWRnZSBkdXJpbmcgYSBkZXZpY2UgZGlzYWJsZS4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IHNlZW1zIHRoZSBvbGQgaW1wbGVtZW50YXRpb24gYXR0ZW1wdGVkIGEgbm9uLWJsb2NraW5nIGxvY2sgKGB0cnlsb2NrYCkgb24gdGhlIHVwc3RyZWFtIGJyaWRnZSBiZWZvcmUgcHJvY2VlZGluZywgcG90ZW50aWFsbHkgc2tpcHBpbmcgdGhlIHJlc2V0IGlmIHRoZSBsb2NrIGNvdWxkbiYjMzk7dCBiZSBpbW1lZGlhdGVseSBhY3F1aXJlZC4gTm93LCBpdCB1bmNvbmRpdGlvbmFsbHkgdGFrZXMgdGhlIGxvY2sgKGBsb2NrYCkgb24gdGhlIGJyaWRnZSBpZiB0aGUgYnJpZGdlIGV4aXN0cy4gVGhlIGBvdXRfcmVzdG9yZV9zdGF0ZWAgbGFiZWwgaGFzIGFsc28gYmVlbiByZW1vdmVkLCBhcyB0aGUgYHRyeWxvY2tgIGZhaWx1cmUgYnJhbmNoIGlzIG5vIGxvbmdlciBwcmVzZW50LgoKR2l2ZW4gdGhpcywgSSYjMzk7bSBjbGFzc2lmeWluZyB0aGlzIGFzIGEgc3luY2hyb25pemF0aW9uIGNoYW5nZSwgZGlyZWN0bHkgaW1wYWN0aW5nIGRldmljZSByZXNldCBiZWhhdmlvciB3aXRoaW4gYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAuIExPQ0tERVAgc2hvdWxkIGJlIHN1ZmZpY2llbnQgaGVyZSB0byBhZGRyZXNzIHBvdGVudGlhbCBkZWFkbG9jayBhbmQgbG9jayBvcmRlcmluZyBpc3N1ZXMsIHdoaWNoIGlzIHByZWNpc2VseSB0aGUga2luZCBvZiBwcm9ibGVtIGl0IHdhcyBkZXNpZ25lZCBmb3IuCgpOb3csIEkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBLTVNBTiBjb25jZXJucy4gSSYjMzk7bGwgZ28gdGhyb3VnaCB0aGUgc3RhbmRhcmQgY3JpdGVyaWEuIFRoZXJlIGFyZSBubyBrZXJuZWwgc3RydWN0dXJlcyBiZWluZyBleHBvc2VkIHRvIHVzZXJzcGFjZSB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzLCBubyBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRlcGVuZHMgb24gdW5pbml0aWFsaXplZCBkYXRhLCBubyBuZXcgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IG1pZ2h0IGxlYWQgdG8gdW5pbml0aWFsaXplZCByZWFkcywgYW5kIG5vIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNrcyBvciBsZW5ndGggY2FsY3VsYXRpb25zIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBTbywgYmFzZWQgb24gbXkgcmV2aWV3LCBLTVNBTiBpcyBub3QgbmVlZGVkIGhlcmUuIEtBU0FOL0xPQ0tERVAgd291bGQgYmUgdGhlIG1vcmUgYXBwcm9wcmlhdGUgdG9vbHMgdG8gdXNlLCBmb2N1c2luZyBvbiBzeW5jaHJvbml6YXRpb24gYW5kIGRldmljZSBzdGF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGV2aWNlIGxvY2tpbmcgYmVoYXZpb3IgaW4gdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgYnkgcmVwbGFjaW5nIGEgdHJ5bG9jayAocGNpX2Rldl90cnlsb2NrKSBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBsb2NrIChwY2lfZGV2X2xvY2spIGFuZCByZW1vdmluZyBhbiB1bnVzZWQgZ290byBsYWJlbC4gVGhpcyBjaGFuZ2UgZXhjbHVzaXZlbHkgYWZmZWN0cyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBhbmQgZGV2aWNlIHJlc2V0IGZsb3cuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgYWxsb2NhdGUsIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBub3IgZG9lcyBpdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSBvciBhbHRlciBsb2dpYyBkZWFsaW5nIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIGxvY2sgb3JkZXIgaW52ZXJzaW9ucykgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUC9LQVNBTiByYXRoZXIgdGhhbiBLTVNBTi4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGV2aWNlIGxvY2tpbmcgYmVoYXZpb3IgaW4gdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgYnkgcmVwbGFjaW5nIGEgdHJ5bG9jayAocGNpX2Rldl90cnlsb2NrKSBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBsb2NrIChwY2lfZGV2X2xvY2spIGFuZCByZW1vdmluZyBhbiB1bnVzZWQgZ290byBsYWJlbC4gVGhpcyBjaGFuZ2UgZXhjbHVzaXZlbHkgYWZmZWN0cyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBhbmQgZGV2aWNlIHJlc2V0IGZsb3cuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgYWxsb2NhdGUsIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBub3IgZG9lcyBpdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSBvciBhbHRlciBsb2dpYyBkZWFsaW5nIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIGxvY2sgb3JkZXIgaW52ZXJzaW9ucykgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUC9LQVNBTiByYXRoZXIgdGhhbiBLTVNBTi4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NToyMi45MTY0MDE3NjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjAyMzMxMTA1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQ0lcIixcbiAgICBcIlZGSU9cIixcbiAgICBcIlZGSU9fUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19wY2lfY29yZV9kaXNhYmxlXCIsXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZVwiLFxuICAgIFwidmZpb19wY2lfY29yZV9lbmFibGVcIixcbiAgICBcInZmaW9fcGNpX29wZW5fZGV2aWNlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkZXZpY2UgbG9ja2luZyBiZWhhdmlvciBpbiB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoKSBieSByZXBsYWNpbmcgYSB0cnlsb2NrIChwY2lfZGV2X3RyeWxvY2spIG9uIHRoZSB1cHN0cmVhbSBicmlkZ2Ugd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGxvY2sgKHBjaV9kZXZfbG9jaykgYW5kIHJlbW92aW5nIGFuIHVudXNlZCBnb3RvIGxhYmVsLiBUaGlzIGNoYW5nZSBleGNsdXNpdmVseSBhZmZlY3RzIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIGFuZCBkZXZpY2UgcmVzZXQgZmxvdy4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBhbGxvY2F0ZSwgb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMsIG5vciBkb2VzIGl0IGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlIG9yIGFsdGVyIGxvZ2ljIGRlYWxpbmcgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCByZWdyZXNzaW9ucyAoc3VjaCBhcyBkZWFkbG9ja3Mgb3IgbG9jayBvcmRlciBpbnZlcnNpb25zKSBhcmUgZGV0ZWN0YWJsZSBieSBMT0NLREVQL0tBU0FOIHJhdGhlciB0aGFuIEtNU0FOLiBEZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgbG9naWMgaW4gdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgYnkgcmVwbGFjaW5nIGEgdHJ5bG9jayBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBibG9ja2luZyBwY2lfZGV2X2xvY2soYnJpZGdlKS4gVGhpcyBhbHRlcnMgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgYmVoYXZpb3IgaW4gdGhlIFZGSU8gUENJIHRlYXJkb3duL2Rpc2FibGUgcGF0aCB3aGVuIGRldmljZSBpbnN0YW5jZXMgYXJlIGNsb3NlZCBvciBkaXNhYmxlZCwgd2hpY2ggY2FuIGludHJvZHVjZSBkZWFkbG9jayBvciBsb2NraW5nIGludmFyaWFudCBpc3N1ZXMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2l0aCBWRklPIFBDSSBzdXBwb3J0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NToyMi45MTY0MTIzOTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODY2MzE4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZiY2E0YTliOGRkOThlZWY0MzgzM2VmYzQ2ZjVlZWI3YzFmZTA2ODVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAwODo1NToyMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXFxuaW5kZXggMzYyYzM3NWEwNTc5OS4uODk2NmE1YmVhNDA2MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXFxuQEAgLTc5MCw4ICs3OTAsOCBAQCB2b2lkIHZmaW9fcGNpX2NvcmVfZGlzYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuIFxcdCAqL1xcbiBcXHRpZiAodmRldi1cXHUwMDNlcmVzZXRfd29ya3MpIHtcXG4gXFx0XFx0YnJpZGdlID0gcGNpX3Vwc3RyZWFtX2JyaWRnZShwZGV2KTtcXG4tXFx0XFx0aWYgKGJyaWRnZSBcXHUwMDI2XFx1MDAyNiAhcGNpX2Rldl90cnlsb2NrKGJyaWRnZSkpXFxuLVxcdFxcdFxcdGdvdG8gb3V0X3Jlc3RvcmVfc3RhdGU7XFxuK1xcdFxcdGlmIChicmlkZ2UpXFxuK1xcdFxcdFxcdHBjaV9kZXZfbG9jayhicmlkZ2UpO1xcbiBcXHRcXHRpZiAocGNpX2Rldl90cnlsb2NrKHBkZXYpKSB7XFxuIFxcdFxcdFxcdGlmICghX19wY2lfcmVzZXRfZnVuY3Rpb25fbG9ja2VkKHBkZXYpKVxcbiBcXHRcXHRcXHRcXHR2ZGV2LVxcdTAwM2VuZWVkc19yZXNldCA9IGZhbHNlO1xcbkBAIC04MDEsNyArODAxLDYgQEAgdm9pZCB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxcbiBcXHRcXHRcXHRwY2lfZGV2X3VubG9jayhicmlkZ2UpO1xcbiBcXHR9XFxuIFxcbi1vdXRfcmVzdG9yZV9zdGF0ZTpcXG4gXFx0cGNpX3Jlc3RvcmVfc3RhdGUocGRldik7XFxuIG91dDpcXG4gXFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NToyMy4zMzU3MjYzNjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ2OTc5NTk0MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBDSVwiLFxuICAgIFwiVkZJT1wiLFxuICAgIFwiVkZJT19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2Rpc2FibGVcIixcbiAgICBcInZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2VuYWJsZVwiLFxuICAgIFwidmZpb19wY2lfb3Blbl9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBsb2dpYyBpbiB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoKSBieSByZXBsYWNpbmcgYSB0cnlsb2NrIG9uIHRoZSB1cHN0cmVhbSBicmlkZ2Ugd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGJsb2NraW5nIHBjaV9kZXZfbG9jayhicmlkZ2UpLiBUaGlzIGFsdGVycyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBiZWhhdmlvciBpbiB0aGUgVkZJTyBQQ0kgdGVhcmRvd24vZGlzYWJsZSBwYXRoIHdoZW4gZGV2aWNlIGluc3RhbmNlcyBhcmUgY2xvc2VkIG9yIGRpc2FibGVkLCB3aGljaCBjYW4gaW50cm9kdWNlIGRlYWRsb2NrIG9yIGxvY2tpbmcgaW52YXJpYW50IGlzc3Vlcy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZGSU8gUENJIHN1cHBvcnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZmJjYTRhOWI4ZGQ5OGVlZjQzODMzZWZjNDZmNWVlYjdjMWZlMDY4NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMDg6NTU6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5pbmRleCAzNjJjMzc1YTA1Nzk5Li44OTY2YTViZWE0MDYzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5AQCAtNzkwLDggKzc5MCw4IEBAIHZvaWQgdmZpb19wY2lfY29yZV9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbiBcdCAqL1xuIFx0aWYgKHZkZXYtXHUwMDNlcmVzZXRfd29ya3MpIHtcbiBcdFx0YnJpZGdlID0gcGNpX3Vwc3RyZWFtX2JyaWRnZShwZGV2KTtcbi1cdFx0aWYgKGJyaWRnZSBcdTAwMjZcdTAwMjYgIXBjaV9kZXZfdHJ5bG9jayhicmlkZ2UpKVxuLVx0XHRcdGdvdG8gb3V0X3Jlc3RvcmVfc3RhdGU7XG4rXHRcdGlmIChicmlkZ2UpXG4rXHRcdFx0cGNpX2Rldl9sb2NrKGJyaWRnZSk7XG4gXHRcdGlmIChwY2lfZGV2X3RyeWxvY2socGRldikpIHtcbiBcdFx0XHRpZiAoIV9fcGNpX3Jlc2V0X2Z1bmN0aW9uX2xvY2tlZChwZGV2KSlcbiBcdFx0XHRcdHZkZXYtXHUwMDNlbmVlZHNfcmVzZXQgPSBmYWxzZTtcbkBAIC04MDEsNyArODAxLDYgQEAgdm9pZCB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuIFx0XHRcdHBjaV9kZXZfdW5sb2NrKGJyaWRnZSk7XG4gXHR9XG4gXG4tb3V0X3Jlc3RvcmVfc3RhdGU6XG4gXHRwY2lfcmVzdG9yZV9zdGF0ZShwZGV2KTtcbiBvdXQ6XG4gXHRwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NToyMy4zMzU3Mjc2NjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2OTY2MDk5NTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoaXMgVkZJTyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIHRob3JvdWdobHkuIEZpcnN0IHRoaW5ncyBmaXJzdDogaXQncyB0b3VjaGluZyBgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGZ1bmN0aW9uLiBSaWdodCwgc28gdGhhdCdzIHdoZXJlIHRoZSBhY3Rpb24gaXMuXG5cbkkgbmVlZCB0byBxdWlja2x5IGdyYXNwIHRoZSBjb250ZXh0LCB0aGUgY2FsbCBwYXRocywgdGhlIGRlcGVuZGVuY2llcy4uLiBhbGwgb2YgaXQuIExldCdzIGZpcmUgdXAgYGdyZXBwZXJgIChvciBpZiBpdCdzIGVhc2llciwgYSBxdWljayBgcmVhZC1maWxlYCkgYW5kIHNlZSBob3cgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgaXMgdXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHZmaW8tcGNpIGlzIGNvbmZpZ3VyZWQsIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIHN5c3RlbSwgYW5kIGhvdyB0byByZWFjaCBpdCBpbiBnZW5lcmFsLlxuXG5MZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIHRoYXQgZnVuY3Rpb24gaW4gdGhlIHNvdXJjZSBjb2RlLiBJJ2xsIHJlYWQgYXJvdW5kIGxpbmUgNzkwIGluIGBkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY2AgZm9yIHNvbWUgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGF0IGNvcmUgZnVuY3Rpb24gd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzcsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NTozMC4zMDE4MjkyMTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzcwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzcwOlxcdFxcdFxcdHBjaV9pbmZvKHBkZXYsIFxcXCIlczogQ291bGRuJ3QgcmVsb2FkIHNhdmVkIHN0YXRlXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuIDc3MTpcXHRcXG4gNzcyOlxcdFxcdFxcdGlmICghdmRldi1cXHUwMDNlcmVzZXRfd29ya3MpXFxuIDc3MzpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gNzc0OlxcdFxcbiA3NzU6XFx0XFx0XFx0cGNpX3NhdmVfc3RhdGUocGRldik7XFxuIDc3NjpcXHRcXHR9XFxuIDc3NzpcXHRcXG4gNzc4OlxcdFxcdC8qXFxuIDc3OTpcXHRcXHQgKiBEaXNhYmxlIElOVHggYW5kIE1TSSwgcHJlc3VtYWJseSB0byBhdm9pZCBzcHVyaW91cyBpbnRlcnJ1cHRzXFxuIDc4MDpcXHRcXHQgKiBkdXJpbmcgcmVzZXQuICBTdG9sZW4gZnJvbSBwY2lfcmVzZXRfZnVuY3Rpb24oKVxcbiA3ODE6XFx0XFx0ICovXFxuIDc4MjpcXHRcXHRwY2lfd3JpdGVfY29uZmlnX3dvcmQocGRldiwgUENJX0NPTU1BTkQsIFBDSV9DT01NQU5EX0lOVFhfRElTQUJMRSk7XFxuIDc4MzpcXHRcXG4gNzg0OlxcdFxcdC8qXFxuIDc4NTpcXHRcXHQgKiBUcnkgdG8gZ2V0IHRoZSBsb2NrcyBvdXJzZWx2ZXMgdG8gcHJldmVudCBhIGRlYWRsb2NrLiBUaGVcXG4gNzg2OlxcdFxcdCAqIHN1Y2Nlc3Mgb2YgdGhpcyBpcyBkZXBlbmRlbnQgb24gYmVpbmcgYWJsZSB0byBsb2NrIHRoZSBkZXZpY2UsXFxuIDc4NzpcXHRcXHQgKiB3aGljaCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlLlxcbiA3ODg6XFx0XFx0ICogV2UgY2FuIG5vdCB1c2UgdGhlIFxcXCJ0cnlcXFwiIHJlc2V0IGludGVyZmFjZSBoZXJlLCB3aGljaCB3aWxsXFxuIDc4OTpcXHRcXHQgKiBvdmVyd3JpdGUgdGhlIHByZXZpb3VzbHkgcmVzdG9yZWQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cXG4gNzkwOlxcdFxcdCAqL1xcbiA3OTE6XFx0XFx0aWYgKHZkZXYtXFx1MDAzZXJlc2V0X3dvcmtzKSB7XFxuIDc5MjpcXHRcXHRcXHRicmlkZ2UgPSBwY2lfdXBzdHJlYW1fYnJpZGdlKHBkZXYpO1xcbiA3OTM6XFx0XFx0XFx0aWYgKGJyaWRnZSlcXG4gNzk0OlxcdFxcdFxcdFxcdHBjaV9kZXZfbG9jayhicmlkZ2UpO1xcbiA3OTU6XFx0XFx0XFx0aWYgKHBjaV9kZXZfdHJ5bG9jayhwZGV2KSkge1xcbiA3OTY6XFx0XFx0XFx0XFx0aWYgKCFfX3BjaV9yZXNldF9mdW5jdGlvbl9sb2NrZWQocGRldikpXFxuIDc5NzpcXHRcXHRcXHRcXHRcXHR2ZGV2LVxcdTAwM2VuZWVkc19yZXNldCA9IGZhbHNlO1xcbiA3OTg6XFx0XFx0XFx0XFx0cGNpX2Rldl91bmxvY2socGRldik7XFxuIDc5OTpcXHRcXHRcXHR9XFxuIDgwMDpcXHRcXHRcXHRpZiAoYnJpZGdlKVxcbiA4MDE6XFx0XFx0XFx0XFx0cGNpX2Rldl91bmxvY2soYnJpZGdlKTtcXG4gODAyOlxcdFxcdH1cXG4gODAzOlxcdFxcbiA4MDQ6XFx0XFx0cGNpX3Jlc3RvcmVfc3RhdGUocGRldik7XFxuIDgwNTpcXHRvdXQ6XFxuIDgwNjpcXHRcXHRwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7XFxuIDgwNzpcXHRcXG4gODA4OlxcdFxcdHZmaW9fcGNpX2Rldl9zZXRfdHJ5X3Jlc2V0KHZkZXYtXFx1MDAzZXZkZXYuZGV2X3NldCk7XFxuIDgwOTpcXHRcXG4gODEwOlxcdFxcdC8qIFB1dCB0aGUgcG0tcnVudGltZSB1c2FnZSBjb3VudGVyIGFjcXVpcmVkIGR1cmluZyBlbmFibGUgKi9cXG4gODExOlxcdFxcdGlmICghdmRldi1cXHUwMDNlZGlzYWJsZV9pZGxlX2QzKVxcbiA4MTI6XFx0XFx0XFx0cG1fcnVudGltZV9wdXQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuIDgxMzpcXHR9XFxuIDgxNDpcXHRFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2Rpc2FibGUpO1xcbiA4MTU6XFx0XFxuIDgxNjpcXHR2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbiA4MTc6XFx0e1xcbiA4MTg6XFx0XFx0c3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2ID1cXG4gODE5OlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSwgdmRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU1OjMwLjMwMjAxNjgzMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyOTIyNzU1ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgdmZpb19wY2lfY29yZV9kaXNhYmxlIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggZm9yIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgLiBXaGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIHVzZWQ/IFRpbWUgdG8gZ28gb2xkIHNjaG9vbC4gSSdsbCByZWFjaCBmb3IgYGdyZXBgIGFuZCBzZWFyY2ggdGhlIGNvZGViYXNlLiBBIHF1aWNrIGBncmVwYCBmb3IgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIHNwZWNpZmljIGxvY2F0aW9ucyB3aGVyZSB0aGlzIGNyaXRpY2FsIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQsIGFuZCBoZWxwIG1lIHRyYWNlIGJhY2sgdGhlIGxvZ2ljIGFuZCB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBkaXNhYmxlIHByb2Nlc3MgaXMgdHJpZ2dlcmVkLiBGcm9tIHRoZXJlLCBJIGNhbiBiZWdpbiB0byB1bnJhdmVsIGl0cyByb2xlIGluIHRoZSBsYXJnZXIgdmZpby1wY2kgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjI4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NTozMi41OTQyOTQ4ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwMDc2MjcwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX3BjaV9jb3JlX2Rpc2FibGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNTE0PXN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1MjgtXFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZoaXNpX2FjY192ZGV2LVxcdTAwM2VvcGVuX211dGV4KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1Mjk6XFx0XFx0XFx0dmZpb19wY2lfY29yZV9kaXNhYmxlKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTUzMC1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTczPXN0YXRpYyBpbnQgbnZncmFjZV9ncHVfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0yMjEtZXJyb3JfZXhpdDpcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoyMjI6XFx0dmZpb19wY2lfY29yZV9kaXNhYmxlKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTIyMy1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jPTU4PXN0YXRpYyBpbnQgcWF0X3ZmX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy03MS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjcyOlxcdFxcdHZmaW9fcGNpX2NvcmVfZGlzYWJsZSh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNzMtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz0xMDM9c3RhdGljIGludCB2ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xMTctXFx0XFx0XFx0cGNpX3dhcm4ocGRldiwgXFxcIkZhaWxlZCB0byBzZXR1cCBJbnRlbCBJR0QgcmVnaW9uc1xcXFxuXFxcIik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jOjExODpcXHRcXHRcXHR2ZmlvX3BjaV9jb3JlX2Rpc2FibGUodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTExOS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NjgwPUVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfZW5hYmxlKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy02ODEtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NjgyOnZvaWQgdmZpb19wY2lfY29yZV9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy02ODMte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtODEzLX1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo4MTQ6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9kaXNhYmxlKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MTUtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9ODE2PXZvaWQgdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MzEtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6ODMyOlxcdHZmaW9fcGNpX2NvcmVfZGlzYWJsZSh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MzMtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYz0zMTY9aW50IHZpcnRpb3ZmX29wZW5fbGVnYWN5X2lvKHN0cnVjdCB2aXJ0aW92Zl9wY2lfY29yZV9kZXZpY2UgKnZpcnR2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmMtMzIxLVxcdC8qXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmM6MzIyOlxcdCAqIFVwb24gY2xvc2VfZGV2aWNlKCkgdGhlIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpIGlzIGNhbGxlZFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jLTMyMy1cXHQgKiBhbmQgd2lsbCBjbG9zZSBhbGwgdGhlIHByZXZpb3VzIG1tYXBzLCBzbyBpdCBzZWVtcyB0aGF0IHRoZVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTIxPXN0YXRpYyBpbnQgdmlydGlvdmZfcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTM0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MzU6XFx0XFx0dmZpb19wY2lfY29yZV9kaXNhYmxlKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0zNi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmg9MTkzPWludCB2ZmlvX3BjaV9jb3JlX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oOjE5NDp2b2lkIHZmaW9fcGNpX2NvcmVfZGlzYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oLTE5NS12b2lkIHZmaW9fcGNpX2NvcmVfZmluaXNoX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xcbi0tXFxuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmg9MjMxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19hbGlnbmVkX2Zvcl9vcmRlcihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oLTI0NC0gKiBmYWlsZWQuICBUaGlzIHNoYWxsIG9ubHkgYmUgdXNlZCBhZnRlciB2ZmlvX3BjaV9jb3JlX2VuYWJsZSgpXFxuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmg6MjQ1OiAqIGhhcyBzZXQgdXAgdGhlIEJBUiBtYXBzIGFuZCBiZWZvcmUgdmZpb19wY2lfY29yZV9kaXNhYmxlKClcXG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaC0yNDYtICogdGVhcnMgdGhlbSBkb3duLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NTozNC4xOTUwNjYyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg0OTYwOTU2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFZGSU8gRGV2aWNlIENsb3N1cmUgXHUwMDI2IE9wZW5pbmcgRmFpbHVyZXMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmVoYXZpb3Igb2YgVkZJTyB3aGVuIGl0IGVuY291bnRlcnMgYSBmYWlsdXJlIGR1cmluZyBlaXRoZXIgY2xvc2luZyBvciBvcGVuaW5nIGEgZGV2aWNlLiBTcGVjaWZpY2FsbHksIEknbSBmb2N1c2luZyBvbiB0aGUgY29yZSBoYW5kbGluZyB3aXRoaW4gdGhlIFZGSU8tUENJIGRyaXZlci4gVG8gZ2V0IHN0YXJ0ZWQsIEknbSBnb2luZyB0byBwaW5wb2ludCB0aGUgYHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlYCBmdW5jdGlvbi4gSSBrbm93IHRoYXQncyB0aGUgbGlrZWx5IGVudHJ5IHBvaW50IGZvciBkZXZpY2UgY2xvc3VyZSBsb2dpYyB3aXRoaW4gdGhlIGBkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY2AgZmlsZS4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBzb3VyY2UgY29kZSBhbmQgc2VlIHdoYXQgd2UndmUgZ290ISBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBmYWlsdXJlIGNvbmRpdGlvbnMgYW5kIHRoZSBlcnJvciBwYXRocyB3aXRoaW4gdGhpcyBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk2MiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU1OjM2LjA0NDY3NzgzMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MTUsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4MTU6XFx0XFxuIDgxNjpcXHR2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbiA4MTc6XFx0e1xcbiA4MTg6XFx0XFx0c3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2ID1cXG4gODE5OlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSwgdmRldik7XFxuIDgyMDpcXHRcXG4gODIxOlxcdFxcdGlmICh2ZGV2LVxcdTAwM2Vzcmlvdl9wZl9jb3JlX2Rldikge1xcbiA4MjI6XFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dmRldi1cXHUwMDNlc3Jpb3ZfcGZfY29yZV9kZXYtXFx1MDAzZXZmX3Rva2VuLVxcdTAwM2Vsb2NrKTtcXG4gODIzOlxcdFxcdFxcdFdBUk5fT04oIXZkZXYtXFx1MDAzZXNyaW92X3BmX2NvcmVfZGV2LVxcdTAwM2V2Zl90b2tlbi1cXHUwMDNldXNlcnMpO1xcbiA4MjQ6XFx0XFx0XFx0dmRldi1cXHUwMDNlc3Jpb3ZfcGZfY29yZV9kZXYtXFx1MDAzZXZmX3Rva2VuLVxcdTAwM2V1c2Vycy0tO1xcbiA4MjU6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2ZGV2LVxcdTAwM2Vzcmlvdl9wZl9jb3JlX2Rldi1cXHUwMDNldmZfdG9rZW4tXFx1MDAzZWxvY2spO1xcbiA4MjY6XFx0XFx0fVxcbiA4Mjc6XFx0I2lmIElTX0VOQUJMRUQoQ09ORklHX0VFSClcXG4gODI4OlxcdFxcdGVlaF9kZXZfcmVsZWFzZSh2ZGV2LVxcdTAwM2VwZGV2KTtcXG4gODI5OlxcdCNlbmRpZlxcbiA4MzA6XFx0XFx0dmZpb19wY2lfZG1hX2J1Zl9jbGVhbnVwKHZkZXYpO1xcbiA4MzE6XFx0XFxuIDgzMjpcXHRcXHR2ZmlvX3BjaV9jb3JlX2Rpc2FibGUodmRldik7XFxuIDgzMzpcXHRcXG4gODM0OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnZkZXYtXFx1MDAzZWlnYXRlKTtcXG4gODM1OlxcdFxcdHZmaW9fcGNpX2V2ZW50ZmRfcmVwbGFjZV9sb2NrZWQodmRldiwgXFx1MDAyNnZkZXYtXFx1MDAzZWVycl90cmlnZ2VyLCBOVUxMKTtcXG4gODM2OlxcdFxcdHZmaW9fcGNpX2V2ZW50ZmRfcmVwbGFjZV9sb2NrZWQodmRldiwgXFx1MDAyNnZkZXYtXFx1MDAzZXJlcV90cmlnZ2VyLCBOVUxMKTtcXG4gODM3OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dmRldi1cXHUwMDNlaWdhdGUpO1xcbiA4Mzg6XFx0fVxcbiA4Mzk6XFx0RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UpO1xcbiA4NDA6XFx0XFxuIDg0MTpcXHR2b2lkIHZmaW9fcGNpX2NvcmVfZmluaXNoX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuIDg0MjpcXHR7XFxuIDg0MzpcXHRcXHR2ZmlvX3BjaV9wcm9iZV9tbWFwcyh2ZGV2KTtcXG4gODQ0OlxcdCNpZiBJU19FTkFCTEVEKENPTkZJR19FRUgpXFxuIDg0NTpcXHRcXHRlZWhfZGV2X29wZW4odmRldi1cXHUwMDNlcGRldik7XFxuIDg0NjpcXHQjZW5kaWZcXG4gODQ3OlxcdFxcbiA4NDg6XFx0XFx0aWYgKHZkZXYtXFx1MDAzZXNyaW92X3BmX2NvcmVfZGV2KSB7XFxuIDg0OTpcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ2ZGV2LVxcdTAwM2Vzcmlvdl9wZl9jb3JlX2Rldi1cXHUwMDNldmZfdG9rZW4tXFx1MDAzZWxvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NTozNi4wNDQ4MjE3NjFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTE0NDQyNDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFZGSU8tUENJIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0IHRoaW5ncyBmaXJzdDogSSBuZWVkIHRvIGRldGVybWluZSBpZiBWRklPLVBDSSBpcyBldmVuICphY2Nlc3NpYmxlKiB3aXRoaW4gdGhlIHN0YW5kYXJkIHN5emthbGxlciBRRU1VIFZNIHNldHVwLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBIb2xkIG9uLCB0aG91Z2guIERvZXMgYSBzdGFuZGFyZCBRRU1VIFZNIGV2ZW4gaGF2ZSBQQ0kgZGV2aWNlcyByZWFkaWx5IGF2YWlsYWJsZSB0aGF0ICpjb3VsZCogYmUgYm91bmQgdG8gdmZpby1wY2ksIG9yIGRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpmdXp6KiB2ZmlvLXBjaSBpdHNlbGY/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuXG5cblJpZ2h0LCBsZXQncyBzdGVwIGJhY2sgYW5kIGFwcHJvYWNoIHRoaXMgc3lzdGVtYXRpY2FsbHkuIEkgc2hvdWxkIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBzeXprYWxsZXIncyBjb3ZlcmFnZSByZXBvcnRzLCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kLCBvZiBjb3Vyc2UsIHRoZSBkZXZpY2UgZHJpdmVycy4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGJlc3Qgb3ZlcnZpZXcuXG5cbldhaXQgYSBzZWNvbmQuIFZGSU8tUENJIGlzbid0IGxpbWl0ZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUuIEl0IGNhbiBiZSBib3VuZCB0byAqYW55KiBQQ0kgZGV2aWNlIOKAkyBldmVuIHRoZSB2aXJ0dWFsIG9uZXMgUUVNVSBlbXVsYXRlcyBsaWtlIGUxMDAwIG9yIHZpcnRpby1wY2ksIG9yIHRob3NlIGhhbmRsZWQgdGhyb3VnaCBkeW5hbWljIHVuYmluZGluZyBhbmQgYmluZGluZyB2aWEgc3lzZnMgb3IgdGhlIGBkcml2ZXJfb3ZlcnJpZGVgIG1lY2hhbmlzbSB3aXRoaW4gdGhlIHZmaW8tcGNpIGRyaXZlci4gVGhhdCBvcGVucyB1cCBhIHJhbmdlIG9mIHBvc3NpYmlsaXRpZXMuXG5cbk5vdywgYSBrZXkgcXVlc3Rpb246IGNhbiB1c2Vyc3BhY2UgYWN0dWFsbHkgb3BlbiBhIFZGSU8gY29udGFpbmVyLCBncm91cCwgb3IgZGV2aWNlIGluIHRoaXMgY29udGV4dD8gVGhhdCdzIHRoZSBjcnVjaWFsIHBvaW50IGZvciBhIGZ1enplciwgYW5kIHRoZSBvbmUgSSBuZWVkIHRvIGZvY3VzIG9uLlxuXG5Pa2F5LCBJIG5lZWQgdG8gc2VlIGlmIHN5emthbGxlciBoYXMgZGVzY3JpcHRpb25zIGZvciB2ZmlvOiB0aW1lIHRvIGV4YW1pbmUgdGhvc2UuXG5cbk9uZSBsYXN0IHRoaW5nLCBiZWZvcmUgSSBkaWcgdG9vIGRlZXAsIEkgc2hvdWxkIGNoZWNrIHRoZSBgVkZJT19QQ0lfQ09SRWAgYW5kIGBWRklPX1BDSWAgS2NvbmZpZyBvcHRpb25zIGFuZCBzZWUgaG93IHRoZXkgYXJlIGFjdHVhbGx5IHVzZWQuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBwaWN0dXJlIG9mIHdoYXQncyBlbmFibGVkIGFuZCBob3cgaXQncyBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODkyLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDg6NTU6MzkuMTU5MjY3NjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODM5NDA5NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZGSU9fUENJXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz0yPW1lbnUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgUENJIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNC1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6NTpjb25maWcgVkZJT19QQ0lfQ09SRVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy02LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctOS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MTA6Y29uZmlnIFZGSU9fUENJX0lOVFhcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTEtXFx0ZGVmX2Jvb2wgeSBpZiAhUzM5MFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTEzLVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoxNDpjb25maWcgVkZJT19QQ0lcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgVkZJTyBzdXBwb3J0IGZvciBhbnkgUENJIGRldmljZVxcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz0yMz1pZiBWRklPX1BDSVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoyNDpjb25maWcgVkZJT19QQ0lfVkdBXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIkdlbmVyaWMgVkZJTyBQQ0kgc3VwcG9ydCBmb3IgVkdBIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMzMtXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjM0OmNvbmZpZyBWRklPX1BDSV9JR0RcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMzUtXFx0Ym9vbCBcXFwiR2VuZXJpYyBWRklPIFBDSSBleHRlbnNpb25zIGZvciBJbnRlbCBncmFwaGljcyAoR1ZULWQpXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnPTQ1PWVuZGlmXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ2LVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiVkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTU3LVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo1ODpjb25maWcgVkZJT19QQ0lfRE1BQlVGXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTU5LVxcdGRlZl9ib29sIHkgaWYgVkZJT19QQ0lfQ09SRSBcXHUwMDI2XFx1MDAyNiBQQ0lfUDJQRE1BIFxcdTAwMjZcXHUwMDI2IERNQV9TSEFSRURfQlVGRkVSXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU1OjQwLjg0MzI0Mzg0MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzM3MTE3OTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIFZGSU8gUENJIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBWRklPIFBDSSBzZXR1cC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byBgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IHBhcnRpY3VsYXIgZHJpdmVyIGFyZSBkZWZpbmVkLCB0aGUgdGhpbmdzIHRoYXQgY29udHJvbCB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW5kIGhvdyB0aGUgbW9kdWxlIHdpbGwgYmVoYXZlLiBJdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgVkZJTyBQQ0kgZHJpdmVyIGlzIGJ1aWx0IGFuZCBjb25maWd1cmVkLiBJJ20gaG9waW5nIEkgY2FuIGdsZWFuIHdoYXQgSSBuZWVkIHF1aWNrbHkgZnJvbSB0aGVyZS4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDE5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDg6NTU6NDIuNTgwMzY0MDA0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0bWVudSBcXFwiVkZJTyBzdXBwb3J0IGZvciBQQ0kgZGV2aWNlc1xcXCJcXG4gICAzOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBWRklPX1BDSV9DT1JFXFxuICAgNjpcXHRcXHR0cmlzdGF0ZVxcbiAgIDc6XFx0XFx0c2VsZWN0IFZGSU9fVklSUUZEXFxuICAgODpcXHRcXHRzZWxlY3QgSVJRX0JZUEFTU19NQU5BR0VSXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBWRklPX1BDSV9JTlRYXFxuICAxMTpcXHRcXHRkZWZfYm9vbCB5IGlmICFTMzkwXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIFZGSU9fUENJX0NPUkVcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIFZGSU9fUENJXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBWRklPIHN1cHBvcnQgZm9yIGFueSBQQ0kgZGV2aWNlXFxcIlxcbiAgMTY6XFx0XFx0c2VsZWN0IFZGSU9fUENJX0NPUkVcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIGdlbmVyaWMgUENJIFZGSU8gYnVzIGRyaXZlciB3aGljaCBjYW4gY29ubmVjdCBhbnlcXG4gIDE5OlxcdFxcdCAgUENJIGRldmljZSB0byB0aGUgVkZJTyBmcmFtZXdvcmsuXFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDIyOlxcdFxcbiAgMjM6XFx0aWYgVkZJT19QQ0lcXG4gIDI0OlxcdGNvbmZpZyBWRklPX1BDSV9WR0FcXG4gIDI1OlxcdFxcdGJvb2wgXFxcIkdlbmVyaWMgVkZJTyBQQ0kgc3VwcG9ydCBmb3IgVkdBIGRldmljZXNcXFwiXFxuICAyNjpcXHRcXHRkZXBlbmRzIG9uIFg4NiBcXHUwMDI2XFx1MDAyNiBWR0FfQVJCXFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIFN1cHBvcnQgZm9yIFZHQSBleHRlbnNpb24gdG8gVkZJTyBQQ0kuICBUaGlzIGV4cG9zZXMgYW4gYWRkaXRpb25hbFxcbiAgMjk6XFx0XFx0ICByZWdpb24gb24gVkdBIGRldmljZXMgZm9yIGFjY2Vzc2luZyBsZWdhY3kgVkdBIGFkZHJlc3NlcyB1c2VkIGJ5XFxuICAzMDpcXHRcXHQgIEJJT1MgYW5kIGdlbmVyaWMgdmlkZW8gZHJpdmVycy5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0ICBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRjb25maWcgVkZJT19QQ0lfSUdEXFxuICAzNTpcXHRcXHRib29sIFxcXCJHZW5lcmljIFZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIEludGVsIGdyYXBoaWNzIChHVlQtZClcXFwiXFxuICAzNjpcXHRcXHRkZXBlbmRzIG9uIFg4NlxcbiAgMzc6XFx0XFx0ZGVmYXVsdCB5XFxuICAzODpcXHRcXHRoZWxwXFxuICAzOTpcXHRcXHQgIFN1cHBvcnQgZm9yIEludGVsIElHRCBzcGVjaWZpYyBleHRlbnNpb25zIHRvIGVuYWJsZSBkaXJlY3RcXG4gIDQwOlxcdFxcdCAgYXNzaWdubWVudCB0byB2aXJ0dWFsIG1hY2hpbmVzLiAgVGhpcyBpbmNsdWRlcyBleHBvc2luZyBhbiBJR0RcXG4gIDQxOlxcdFxcdCAgc3BlY2lmaWMgZmlybXdhcmUgdGFibGUgYW5kIHJlYWQtb25seSBjb3BpZXMgb2YgdGhlIGhvc3QgYnJpZGdlXFxuICA0MjpcXHRcXHQgIGFuZCBMUEMgYnJpZGdlIGNvbmZpZyBzcGFjZS5cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0ICBUbyBlbmFibGUgSW50ZWwgSUdEIGFzc2lnbm1lbnQgdGhyb3VnaCB2ZmlvLXBjaSwgc2F5IFkuXFxuICA0NTpcXHRlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NTo0Mi41ODA0MjU2NzRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjU1OTkyNjAwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBWRklPLVBDSSBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBjb21taXQgdGhhdCBtb2RpZmllcyB0aGUgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgZnVuY3Rpb24gd2l0aGluIHRoZSBWRklPLVBDSSBkcml2ZXIuIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZXBsYWNlbWVudCBvZiBhIGNvbmRpdGlvbmFsIGBwY2lfZGV2X3RyeWxvY2soYnJpZGdlKWAgd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGBwY2lfZGV2X2xvY2soYnJpZGdlKWAuIFRoZSBvbGQgY29kZSBoYWQgYSBgZ290byBvdXRfcmVzdG9yZV9zdGF0ZWAgaWYgdGhlIGJyaWRnZSBsb2NrIGNvdWxkbid0IGJlIGFjcXVpcmVkLCBidXQgbm93IGl0IHVuY29uZGl0aW9uYWxseSBhY3F1aXJlcyB0aGUgbG9jay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgcG90ZW50aWFsbHkgcmlza3kgY2hhbmdlLiBVbmNvbmRpdGlvbmFsIGxvY2tpbmcgbGlrZSB0aGlzIGNvdWxkIGVhc2lseSBsZWFkIHRvIGxvY2sgaW52ZXJzaW9uLCBkZWFkbG9ja3MsIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCBsb2NrZGVwIHdhcm5pbmdzLCBlc3BlY2lhbGx5IGR1cmluZyBkZXZpY2UgZGlzYWJsZSBvciBjbG9zZSBvcGVyYXRpb25zIHdoZXJlIGxvY2tpbmcgb3JkZXIgY2FuIGJlIGNyaXRpY2FsLiBUaGlzIGFsc28gcG90ZW50aWFsbHkgYWZmZWN0cyBkb3duc3RyZWFtIGRldmljZSByZXNldHMuXG5cblRoZSBjb21tZW50IGFib3ZlIHRoZSBjaGFuZ2Ugc3VnZ2VzdHMgYW4gYXR0ZW1wdCB0byBwcmV2ZW50IGRlYWRsb2NrcywgYnV0IGF0IHdoYXQgY29zdD8gVGhpcyBraW5kIG9mIGJsYW5rZXQgbG9ja2luZyBjYW4gYmUgYSB2ZXJ5IGJsdW50IGluc3RydW1lbnQuIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGNvZGUgaXMgZXZlbiByZWFjaGFibGUuIFRoZSBjb250ZXh0IGhlcmUgaXMgVkZJTywgc28gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiBUaGUgZG9jdW1lbnRhdGlvbiBzYXlzIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGxpa2UgYC5yZW1vdmVgIGFuZCBgLnNodXRkb3duYCkgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLiBJcyB0aGF0IHdoYXQncyBoYXBwZW5pbmcgaGVyZT8gTm8sIGxldCdzIGRvdWJsZSBjaGVjay5cblxuSXQgbG9va3MgbGlrZSBJIHdhcyB3cm9uZy4gTGV0IG1lIHJldmlldyB0aGUgY2FsbCBzaXRlczogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhIFZGSU8gZGV2aWNlIEZEIG9yIFZGSU8gY29udGFpbmVyIGlzIGNsb3NlZCBieSB1c2Vyc3BhY2UgdmlhIGAvZGV2L3ZmaW8vLi4uYCBhbmQgcmVsYXRlZCBJT0NUTHMuIFNvIGl0J3MgY2FsbGVkIGR1cmluZyBjbGVhbnVwIHdoZW4gdXNlcnNwYWNlIGlzIGRvbmUgd2l0aCB0aGUgZGV2aWNlLiBUaGlzIGlzIGEgY3JpdGljYWwgY29kZSBwYXRoISBUaGlzIGNoYW5nZXMgZXZlcnl0aGluZy5cblxuT2ssIG5vdyBJIGhhdmUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZzogQ2xvc2luZyB0aGUgVkZJTyBkZXZpY2UgaXMgdGhlIHByaW1hcnkgcGF0aCB0byBjYWxsIHRoaXMgZnVuY3Rpb24uIFRoaXMgbWVhbnMgdGhhdCB0aGlzIHVuY29uZGl0aW9uYWwgbG9ja2luZyBjb3VsZCBwb3RlbnRpYWxseSBibG9jayB0aGUgZGV2aWNlIGNsb3NlLCB3aGljaCB3b3VsZCBiZSByZWFsbHkgYmFkLiBJdCBhZmZlY3RzIHRoZSBjb3JlIHVzZXIgZXhwZXJpZW5jZSwgbWFraW5nIHVzZXJzcGFjZSBvcGVyYXRpb25zIGxlc3MgcmVsaWFibGUuIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGxvY2tpbmcgaGllcmFyY2h5IHRvIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCByaXNrcyBoZXJlIGFuZCB2ZXJpZnkgdGhlcmUgaXNuJ3QgYSBkZWFkbG9jayBzY2VuYXJpby5cblxuXG4iLCJJbnB1dFRva2VucyI6ODgwNywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NTo0OS4xNDAzNTM5NzFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTE2NTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNsb3NlX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9Mjg9c3RhdGljIGludCB2ZmlvX2NkeF9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTczLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjc0OnN0YXRpYyB2b2lkIHZmaW9fY2R4X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy03NS17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yOTE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19jZHhfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjk1LVxcdC5vcGVuX2RldmljZVxcdD0gdmZpb19jZHhfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6Mjk2OlxcdC5jbG9zZV9kZXZpY2VcXHQ9IHZmaW9fY2R4X2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yOTctXFx0LmlvY3RsXFx0XFx0PSB2ZmlvX2NkeF9pb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmZpby9kZXZpY2VfY2Rldi5jPTkyPWxvbmcgdmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmQoc3RydWN0IHZmaW9fZGV2aWNlX2ZpbGUgKmRmLFxcbi0tXFxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmMtMTU4LVxcdGlmIChyZXQpXFxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmM6MTU5OlxcdFxcdGdvdG8gb3V0X2Nsb3NlX2RldmljZTtcXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYy0xNjAtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYy0xNjktXFxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmM6MTcwOm91dF9jbG9zZV9kZXZpY2U6XFxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmMtMTcxLVxcdHZmaW9fZGZfY2xvc2UoZGYpO1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTY4PXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfcmVzZXRfZGV2aWNlKHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtOTYtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjk3OnN0YXRpYyB2b2lkIHZmaW9fZnNsX21jX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtOTgte1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTU3NT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2ZzbF9tY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTc5LVxcdC5vcGVuX2RldmljZVxcdD0gdmZpb19mc2xfbWNfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjU4MDpcXHQuY2xvc2VfZGV2aWNlXFx0PSB2ZmlvX2ZzbF9tY19jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTU4MS1cXHQuaW9jdGxcXHRcXHQ9IHZmaW9fZnNsX21jX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL2dyb3VwLmM9MTcwPXN0YXRpYyBpbnQgdmZpb19kZl9ncm91cF9vcGVuKHN0cnVjdCB2ZmlvX2RldmljZV9maWxlICpkZilcXG4tLVxcbmRyaXZlcnMvdmZpby9ncm91cC5jLTIxMi1cXHRcXHRpZiAocmV0KVxcbmRyaXZlcnMvdmZpby9ncm91cC5jOjIxMzpcXHRcXHRcXHRnb3RvIG91dF9jbG9zZV9kZXZpY2U7XFxuZHJpdmVycy92ZmlvL2dyb3VwLmMtMjE0LVxcdH1cXG4tLVxcbmRyaXZlcnMvdmZpby9ncm91cC5jLTIyNS1cXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYzoyMjY6b3V0X2Nsb3NlX2RldmljZTpcXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yMjctXFx0dmZpb19kZl9jbG9zZShkZik7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYz0yNTU9c3RhdGljIHN0cnVjdCBmaWxlICp2ZmlvX2RldmljZV9vcGVuX2ZpbGUoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yNzYtXFx0XFx0cmV0ID0gUFRSX0VSUihmaWxlcCk7XFxuZHJpdmVycy92ZmlvL2dyb3VwLmM6Mjc3OlxcdFxcdGdvdG8gZXJyX2Nsb3NlX2RldmljZTtcXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yNzgtXFx0fVxcbi0tXFxuZHJpdmVycy92ZmlvL2dyb3VwLmMtMjk0LVxcbmRyaXZlcnMvdmZpby9ncm91cC5jOjI5NTplcnJfY2xvc2VfZGV2aWNlOlxcbmRyaXZlcnMvdmZpby9ncm91cC5jLTI5Ni1cXHR2ZmlvX2RmX2dyb3VwX2Nsb3NlKGRmKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTUxND1zdGF0aWMgaW50IGhpc2lfYWNjX3ZmaW9fcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTQxLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTU0MjpzdGF0aWMgdm9pZCBoaXNpX2FjY192ZmlvX3BjaV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTQzLXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU1Mi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmhpc2lfYWNjX3ZkZXYtXFx1MDAzZW9wZW5fbXV0ZXgpO1xcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTU1MzpcXHR2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZShjb3JlX3ZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU1NC19XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE1ODE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfbWlncm5fb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg1LVxcdC5vcGVuX2RldmljZSA9IGhpc2lfYWNjX3ZmaW9fcGNpX29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTU4NjpcXHQuY2xvc2VfZGV2aWNlID0gaGlzaV9hY2NfdmZpb19wY2lfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU4Ny1cXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNjAyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIGhpc2lfYWNjX3ZmaW9fcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYwNi1cXHQub3Blbl9kZXZpY2UgPSBoaXNpX2FjY192ZmlvX3BjaV9vcGVuX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE2MDc6XFx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYwOC1cXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jPTMzNT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBpc21fcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zMzktXFx0Lm9wZW5fZGV2aWNlID0gaXNtX3ZmaW9fcGNpX29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYzozNDA6XFx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zNDEtXFx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM9MTMyMz1zdGF0aWMgaW50IG1seDV2Zl9wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzMzktXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYzoxMzQwOnN0YXRpYyB2b2lkIG1seDV2Zl9wY2lfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTM0MS17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzNDUtXFx0bWx4NXZmX2NtZF9jbG9zZV9taWdyYXRhYmxlKG12ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjEzNDY6XFx0dmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UoY29yZV92ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzNDctfVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYz0xMzg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG1seDV2Zl9wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzkwLVxcdC5vcGVuX2RldmljZSA9IG1seDV2Zl9wY2lfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYzoxMzkxOlxcdC5jbG9zZV9kZXZpY2UgPSBtbHg1dmZfcGNpX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzOTItXFx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jPTE3Mz1zdGF0aWMgaW50IG52Z3JhY2VfZ3B1X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMjI1LVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjIyNjpzdGF0aWMgdm9pZCBudmdyYWNlX2dwdV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMjI3LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTI1Mi1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoyNTM6XFx0dmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UoY29yZV92ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0yNTQtfVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA2OC1cXHQub3Blbl9kZXZpY2VcXHQ9IG52Z3JhY2VfZ3B1X29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjEwNjk6XFx0LmNsb3NlX2RldmljZVxcdD0gbnZncmFjZV9ncHVfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwNzAtXFx0LmlvY3RsXFx0XFx0PSBudmdyYWNlX2dwdV9pb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jPTEwODk9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgbnZncmFjZV9ncHVfcGNpX2NvcmVfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA5My1cXHQub3Blbl9kZXZpY2VcXHQ9IG52Z3JhY2VfZ3B1X29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjEwOTQ6XFx0LmNsb3NlX2RldmljZVxcdD0gdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA5NS1cXHQuaW9jdGxcXHRcXHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jPTE1OT1zdGF0aWMgaW50IHBkc192ZmlvX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMTc2LVxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM6MTc3OnN0YXRpYyB2b2lkIHBkc192ZmlvX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xNzgte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xODctXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwZHNfdmZpby1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM6MTg4OlxcdHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMTg5LX1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM9MTkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHBkc192ZmlvX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMTk1LVxcdC5vcGVuX2RldmljZSA9IHBkc192ZmlvX29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM6MTk2OlxcdC5jbG9zZV9kZXZpY2UgPSBwZHNfdmZpb19jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xOTctXFx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYz05MT1zdGF0aWMgdm9pZCBxYXRfdmZfZGlzYWJsZV9mZHMoc3RydWN0IHFhdF92Zl9jb3JlX2RldmljZSAqcWF0X3ZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtMTA1LVxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYzoxMDY6c3RhdGljIHZvaWQgcWF0X3ZmX3BjaV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jLTEwNy17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtMTEyLVxcdHFhdF92Zl9kaXNhYmxlX2ZkcyhxYXRfdmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjExMzpcXHR2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZShjb3JlX3ZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy0xMTQtfVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jPTYwND1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBxYXRfdmZfcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy02MDgtXFx0Lm9wZW5fZGV2aWNlID0gcWF0X3ZmX3BjaV9vcGVuX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmM6NjA5OlxcdC5jbG9zZV9kZXZpY2UgPSBxYXRfdmZfcGNpX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNjEwLVxcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM9MTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTMtXFx0Lm9wZW5fZGV2aWNlXFx0PSB2ZmlvX3BjaV9vcGVuX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM6MTU0OlxcdC5jbG9zZV9kZXZpY2VcXHQ9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTUtXFx0LmlvY3RsXFx0XFx0PSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTkwPWludCB2ZmlvX3BjaV9jb3JlX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy02Njgtb3V0X2ZyZWVfemRldjpcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo2Njk6XFx0dmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2UodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNjcwLW91dF9mcmVlX3N0YXRlOlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NjgyPXZvaWQgdmZpb19wY2lfY29yZV9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTc2MC1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo3NjE6XFx0dmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2UodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNzYyLVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9ODE0PUVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfZGlzYWJsZSk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtODE1LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjgxNjp2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTgxNy17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04MzgtfVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjgzOTpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtODQwLVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg9OTQ9aW50IHZmaW9fcGNpX3pkZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaDo5NTp2b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtOTYtaW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9lcnIoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UsIHUzMiBmbGFncyxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oPTEwNT1zdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV96ZGV2X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oLTEwOS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaDoxMTA6c3RhdGljIGlubGluZSB2b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaC0xMTEte31cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jPTE4ND1pbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYy0yMDYtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmM6MjA3OnZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jLTIwOC17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYz0zMTY9aW50IHZpcnRpb3ZmX29wZW5fbGVnYWN5X2lvKHN0cnVjdCB2aXJ0aW92Zl9wY2lfY29yZV9kZXZpY2UgKnZpcnR2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmMtMzIxLVxcdC8qXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmM6MzIyOlxcdCAqIFVwb24gY2xvc2VfZGV2aWNlKCkgdGhlIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpIGlzIGNhbGxlZFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jLTMyMy1cXHQgKiBhbmQgd2lsbCBjbG9zZSBhbGwgdGhlIHByZXZpb3VzIG1tYXBzLCBzbyBpdCBzZWVtcyB0aGF0IHRoZVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTIxPXN0YXRpYyBpbnQgdmlydGlvdmZfcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTQ0LVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzo0NTpzdGF0aWMgdm9pZCB2aXJ0aW92Zl9wY2lfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy00Ni17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtNTAtXFx0dmlydGlvdmZfY2xvc2VfbWlncmF0aW9uKHZpcnR2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6NTE6XFx0dmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UoY29yZV92ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtNTItfVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX2xtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy04OC1cXHQub3Blbl9kZXZpY2UgPSB2aXJ0aW92Zl9wY2lfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjg5OlxcdC5jbG9zZV9kZXZpY2UgPSB2aXJ0aW92Zl9wY2lfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy05MC1cXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTEwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2aXJ0aW92Zl92ZmlvX3BjaV90cmFuX2xtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMTAtXFx0Lm9wZW5fZGV2aWNlID0gdmlydGlvdmZfcGNpX29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzoxMTE6XFx0LmNsb3NlX2RldmljZSA9IHZpcnRpb3ZmX3BjaV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTExMi1cXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTEyOD1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2aXJ0aW92Zl92ZmlvX3BjaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtMTMyLVxcdC5vcGVuX2RldmljZSA9IHZpcnRpb3ZmX3BjaV9vcGVuX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MTMzOlxcdC5jbG9zZV9kZXZpY2UgPSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtMTM0LVxcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz0xNDY9c3RhdGljIGludCB4ZV92ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE2My1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYzoxNjQ6c3RhdGljIHZvaWQgeGVfdmZpb19wY2lfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE2NS17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYy0xNzEtXFx0eGVfdmZpb19wY2lfc3RhdGVfbXV0ZXhfdW5sb2NrKHhlX3ZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jOjE3MjpcXHR2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZShjb3JlX3ZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE3My19XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz01MjI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgeGVfdmZpb19wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTI2LVxcdC5vcGVuX2RldmljZSA9IHhlX3ZmaW9fcGNpX29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jOjUyNzpcXHQuY2xvc2VfZGV2aWNlID0geGVfdmZpb19wY2lfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTUyOC1cXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2FtYmFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTExNS1cXHQub3Blbl9kZXZpY2VcXHQ9IHZmaW9fcGxhdGZvcm1fb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjExNjpcXHQuY2xvc2VfZGV2aWNlXFx0PSB2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTE3LVxcdC5pb2N0bFxcdFxcdD0gdmZpb19wbGF0Zm9ybV9pb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM9OTc9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19wbGF0Zm9ybV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEwMS1cXHQub3Blbl9kZXZpY2VcXHQ9IHZmaW9fcGxhdGZvcm1fb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDI6XFx0LmNsb3NlX2RldmljZVxcdD0gdmZpb19wbGF0Zm9ybV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy0xMDMtXFx0LmlvY3RsXFx0XFx0PSB2ZmlvX3BsYXRmb3JtX2lvY3RsLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM9MjAyPXN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9jYWxsX3Jlc2V0KHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIxNi1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyMTc6dm9pZCB2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMTgte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjM0LX1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyMzU6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9jbG9zZV9kZXZpY2UpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIzNi1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaD04ND1pbnQgdmZpb19wbGF0Zm9ybV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oOjg1OnZvaWQgdmZpb19wbGF0Zm9ybV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaC04Ni1sb25nIHZmaW9fcGxhdGZvcm1faW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19tYWluLmM9NTA3PXZvaWQgdmZpb19kZXZpY2VfcHV0X2t2bShzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX21haW4uYy01MjUtXFxuZHJpdmVycy92ZmlvL3ZmaW9fbWFpbi5jOjUyNjovKiB0cnVlIGlmIHRoZSB2ZmlvX2RldmljZSBoYXMgb3Blbl9kZXZpY2UoKSBjYWxsZWQgYnV0IG5vdCBjbG9zZV9kZXZpY2UoKSAqL1xcbmRyaXZlcnMvdmZpby92ZmlvX21haW4uYy01Mjctc3RhdGljIGJvb2wgdmZpb19hc3NlcnRfZGV2aWNlX29wZW4oc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19tYWluLmM9NTgyPXN0YXRpYyB2b2lkIHZmaW9fZGZfZGV2aWNlX2xhc3RfY2xvc2Uoc3RydWN0IHZmaW9fZGV2aWNlX2ZpbGUgKmRmKVxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9fbWFpbi5jLTU4OC1cXG5kcml2ZXJzL3ZmaW8vdmZpb19tYWluLmM6NTg5OlxcdGlmIChkZXZpY2UtXFx1MDAzZW9wcy1cXHUwMDNlY2xvc2VfZGV2aWNlKVxcbmRyaXZlcnMvdmZpby92ZmlvX21haW4uYzo1OTA6XFx0XFx0ZGV2aWNlLVxcdTAwM2VvcHMtXFx1MDAzZWNsb3NlX2RldmljZShkZXZpY2UpO1xcbmRyaXZlcnMvdmZpby92ZmlvX21haW4uYy01OTEtXFx0aWYgKGlvbW11ZmQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU1OjQ5LjE4ODQ3NDUzN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MzA5NTI0NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IEZ1enppbmcgUG90ZW50aWFsIC0gSGlnaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoLCBzcGVjaWZpY2FsbHkgdGhlIGNoYW5nZXMgYXJvdW5kIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgLCBpcyB3b3J0aCBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgdG91Y2hlZCBieSBgY2xvc2VfZGV2aWNlYCAod2hlbiB0aGUgZGV2aWNlIEZEIGlzIGNsb3NlZCBpbiB1c2Vyc3BhY2UpIG9yIHdoZW4gb3BlbmluZyBmYWlscy5cblxuRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIFZGSU8vVkZJT19QQ0kgaXMgZXZlbiBhIHZpYWJsZSB0YXJnZXQuIENhbiBzeXprYWxsZXIgaW50ZXJhY3Qgd2l0aCB0aGVzZSBkZXZpY2VzPyBZZXMsIGFic29sdXRlbHkuIFdlIGNhbiBhY2Nlc3MgVkZJTyBkZXZpY2VzIHRocm91Z2ggYC9kZXYvdmZpby8qYCwgYC9kZXYvdmZpby9kZXZpY2VzL3ZmaW8qYCwgb3IgYC9kZXYvaW9tbXVmZGAsIGFuZCBzdGFuZGFyZCBRRU1VIFZNcyBtYWtlIHRoaXMgZWFzeSB3aXRoIHZpcnR1YWwgUENJIGRldmljZXMuIEdvb2QsIHRoYXQncyBhIHBvc2l0aXZlIHN0YXJ0LlxuXG5UaGUgcGF0Y2gncyBhY3R1YWwgbW9kaWZpY2F0aW9uIG9mIHRoZSBsb2NraW5nIGJlaGF2aW9yIG9mIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGlzIHRoZSBjb3JlLiBJdCBzd2l0Y2hlcyBmcm9tIGEgYHRyeWxvY2tgIGFwcHJvYWNoIHRvIGEgZ3VhcmFudGVlZCBgbG9ja2Agd2hlbiBkZWFsaW5nIHdpdGggdGhlIGJyaWRnZSBkZXZpY2UsIHdoaWNoIGlzIGEgc3VidGxlLCB5ZXQgcG90ZW50aWFsbHkgaW1wb3J0YW50IGNoYW5nZSBpbiBzeW5jaHJvbml6YXRpb24uXG5cbk5vdywgbGV0J3MgY29uc3VsdCB0aGUgY3JpdGVyaWEuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgYmVoYXZpb3IsIHdoaWNoIGZhbGxzIHVuZGVyIHRoZSBcIkNvcmUgU3Vic3lzdGVtc1wiIGNhdGVnb3J5LiBUaGlzIGlzIGEgdmVyeSBzdHJvbmcgcG9zaXRpdmUuIFRoZSBmYWN0IHRoYXQgdGhlIGNoYW5nZXMgcmVzdHJ1Y3R1cmUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MgYWxzbyBtYWtlIHRoZSBwYXRjaCBpbnRlcmVzdGluZy5cblxuVG8gYmUgc3VyZSwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGVyZSBhcmUgYW55IG5lZ2F0aXZlIGNyaXRlcmlhLiBUaGlzIGNvZGUgaXMgKm5vdCogdmVuZG9yLXNwZWNpZmljIG9yIHRpZWQgdG8gaGFyZHdhcmUgdGhhdCdzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2VkIGZ1bmN0aW9uIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGlzIGluIHRoZSBgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNgIGFuZCBpcyBnZW5lcmljIFZGSU8gUENJIGNvcmUgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYnkgUUVNVSwgbm90IGEgc3BlY2lhbCBkcml2ZXIgcmVxdWlyaW5nIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlLiBUaGlzIGlzIGdlbmVyaWMgUENJIGRldmljZXMgbWFuYWdlZCBieSBgdmZpby1wY2lgICh3aGljaCBjYW4gYmUgYW55IFBDSSBkZXZpY2UgaW4gUUVNVSwgZS5nLiB2aXJ0aW8tcGNpLCBldGMuKS4gVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGV4ZWN1dGVkIGR1cmluZyB0aGUgbm9ybWFsIGRldmljZSBsaWZlY3ljbGUsIGVpdGhlciBieSBjbG9zaW5nIHRoZSBkZXZpY2UsIGZkIGNsb3NlIG9yIHJlbGVhc2UsIG9yIGVycm9yIGhhbmRsaW5nLiBTbywgaXQncyBub3QgYSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2sgdHJpZ2dlcmVkIG9ubHkgYnkgUENJIGhvdC11bnBsdWcuXG5cblRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgcGFydGljdWxhcmx5IHRlbGxpbmc6IEkgc2VlIHRoYXQgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAgaXRzZWxmIGlzIGRpcmVjdGx5IG1vZGlmaWVkLiBgdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2VgIGFuZCBgdmZpb19wY2lfb3Blbl9kZXZpY2VgIGFyZSBhbHNvIHJlbGV2YW50IGJlY2F1c2UgdGhleSBjYWxsIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGRpcmVjdGx5LCBpbmRpY2F0aW5nIGEgZGlyZWN0IGVudHJ5IHBvaW50LiBUaGlzIGNvbmZpcm1zIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSB0aGUgZm9jdXMgb2YgdGhlc2UgY2hhbmdlcyBhbmQgd2lsbCBiZSBwYXJ0IG9mIGZ1enppbmcuXG5cbkknbGwgY2hlY2sgYHZmaW9fcGNpX2NvcmUuY2AgYXJvdW5kIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGZvciBhbnkgYWRkaXRpb25hbCBjb250ZXh0IG9yIG90aGVyIGludGVyZXN0aW5nIHBhdGhzLiBIb3dldmVyLCBiYXNlZCBvbiB0aGUgaW5mb3JtYXRpb24gSSBoYXZlIG5vdywgdGhpcyBpcyBhIGRlZmluaXRlIFwiZ29cIiBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyOTAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDg6NTU6NTUuNDk4MDAxNTQxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3ODAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3ODA6XFx0XFx0ICogZHVyaW5nIHJlc2V0LiAgU3RvbGVuIGZyb20gcGNpX3Jlc2V0X2Z1bmN0aW9uKClcXG4gNzgxOlxcdFxcdCAqL1xcbiA3ODI6XFx0XFx0cGNpX3dyaXRlX2NvbmZpZ193b3JkKHBkZXYsIFBDSV9DT01NQU5ELCBQQ0lfQ09NTUFORF9JTlRYX0RJU0FCTEUpO1xcbiA3ODM6XFx0XFxuIDc4NDpcXHRcXHQvKlxcbiA3ODU6XFx0XFx0ICogVHJ5IHRvIGdldCB0aGUgbG9ja3Mgb3Vyc2VsdmVzIHRvIHByZXZlbnQgYSBkZWFkbG9jay4gVGhlXFxuIDc4NjpcXHRcXHQgKiBzdWNjZXNzIG9mIHRoaXMgaXMgZGVwZW5kZW50IG9uIGJlaW5nIGFibGUgdG8gbG9jayB0aGUgZGV2aWNlLFxcbiA3ODc6XFx0XFx0ICogd2hpY2ggaXMgbm90IGFsd2F5cyBwb3NzaWJsZS5cXG4gNzg4OlxcdFxcdCAqIFdlIGNhbiBub3QgdXNlIHRoZSBcXFwidHJ5XFxcIiByZXNldCBpbnRlcmZhY2UgaGVyZSwgd2hpY2ggd2lsbFxcbiA3ODk6XFx0XFx0ICogb3ZlcndyaXRlIHRoZSBwcmV2aW91c2x5IHJlc3RvcmVkIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uXFxuIDc5MDpcXHRcXHQgKi9cXG4gNzkxOlxcdFxcdGlmICh2ZGV2LVxcdTAwM2VyZXNldF93b3Jrcykge1xcbiA3OTI6XFx0XFx0XFx0YnJpZGdlID0gcGNpX3Vwc3RyZWFtX2JyaWRnZShwZGV2KTtcXG4gNzkzOlxcdFxcdFxcdGlmIChicmlkZ2UpXFxuIDc5NDpcXHRcXHRcXHRcXHRwY2lfZGV2X2xvY2soYnJpZGdlKTtcXG4gNzk1OlxcdFxcdFxcdGlmIChwY2lfZGV2X3RyeWxvY2socGRldikpIHtcXG4gNzk2OlxcdFxcdFxcdFxcdGlmICghX19wY2lfcmVzZXRfZnVuY3Rpb25fbG9ja2VkKHBkZXYpKVxcbiA3OTc6XFx0XFx0XFx0XFx0XFx0dmRldi1cXHUwMDNlbmVlZHNfcmVzZXQgPSBmYWxzZTtcXG4gNzk4OlxcdFxcdFxcdFxcdHBjaV9kZXZfdW5sb2NrKHBkZXYpO1xcbiA3OTk6XFx0XFx0XFx0fVxcbiA4MDA6XFx0XFx0XFx0aWYgKGJyaWRnZSlcXG4gODAxOlxcdFxcdFxcdFxcdHBjaV9kZXZfdW5sb2NrKGJyaWRnZSk7XFxuIDgwMjpcXHRcXHR9XFxuIDgwMzpcXHRcXG4gODA0OlxcdFxcdHBjaV9yZXN0b3JlX3N0YXRlKHBkZXYpO1xcbiA4MDU6XFx0b3V0OlxcbiA4MDY6XFx0XFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xcbiA4MDc6XFx0XFxuIDgwODpcXHRcXHR2ZmlvX3BjaV9kZXZfc2V0X3RyeV9yZXNldCh2ZGV2LVxcdTAwM2V2ZGV2LmRldl9zZXQpO1xcbiA4MDk6XFx0XFxuIDgxMDpcXHRcXHQvKiBQdXQgdGhlIHBtLXJ1bnRpbWUgdXNhZ2UgY291bnRlciBhY3F1aXJlZCBkdXJpbmcgZW5hYmxlICovXFxuIDgxMTpcXHRcXHRpZiAoIXZkZXYtXFx1MDAzZWRpc2FibGVfaWRsZV9kMylcXG4gODEyOlxcdFxcdFxcdHBtX3J1bnRpbWVfcHV0KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbiA4MTM6XFx0fVxcbiA4MTQ6XFx0RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9kaXNhYmxlKTtcXG4gODE1OlxcdFxcbiA4MTY6XFx0dm9pZCB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4gODE3OlxcdHtcXG4gODE4OlxcdFxcdHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiA9XFxuIDgxOTpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UsIHZkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NTo1NS40OTgxNzM3NzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYzODQ5MDQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqS2NvbmZpZyBhbmQgTWFrZWZpbGVzOiBUaGUgRm91bmRhdGlvbioqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgbXkgZHVja3MgaW4gYSByb3cuIEZpcnN0IHRoaW5ncyBmaXJzdDogbGV0J3MgdmVyaWZ5IHRoZSBLY29uZmlnIG9wdGlvbnMgdGhhdCAqdGhpcyogc3BlY2lmaWMgY29kZSBkZXBlbmRzIG9uLiBJdCdzIGNydWNpYWwgdG8gZW5zdXJlIHRoZSBuZWNlc3NhcnkgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYW5kIGNvcnJlY3RseSBjb25maWd1cmVkIGluIHRoZSBrZXJuZWwgYnVpbGQuIEkgZG9uJ3Qgd2FudCB0byB3YXN0ZSB0aW1lIGNoYXNpbmcgZG93biBidWlsZCBlcnJvcnMgbGF0ZXIgYmVjYXVzZSBhIGZ1bmRhbWVudGFsIGNvbXBvbmVudCBpcyBtaXNzaW5nIG9yIGRpc2FibGVkLiBHb3R0YSBnZXQgdGhlIGdyb3VuZHdvcmsgc29saWQuXG5cblRoZW4sIEknbGwgc3dpbmcgb3ZlciB0byB0aGUgYGRyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgbWFnaWMgaGFwcGVucywgd2hlcmUgdGhlIGJ1aWxkIHByb2Nlc3MgaXMgb3JjaGVzdHJhdGVkLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgY29kZSBpcyBpbnRlZ3JhdGVkLCB3aGF0IGRlcGVuZGVuY2llcyBpdCBwdWxscyBpbiwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lhbCBidWlsZCBmbGFncyBvciBjb25maWd1cmF0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gVGhlIE1ha2VmaWxlIHdpbGwgc2hvdyBtZSB0aGUgYnVpbGQgcnVsZXMsIG9iamVjdCBmaWxlcywgYW5kIGxpa2VseSwgaG93IHRoaXMgYWxsIGZpdHMgaW50byB0aGUgbGFyZ2VyIHZmaW8tcGNpIHBpY3R1cmUuIFRoaXMgZ2l2ZXMgYSBjbGVhcmVyIHBpY3R1cmUgb2Ygd2hldGhlciBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIGFyZSBtaXNzaW5nIGFuZCwgZnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gaW52ZXN0aWdhdGUgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0ODUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU1OjU4LjEzNjY2Njg2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdFxcbiAgIDM6XFx0dmZpby1wY2ktY29yZS15IDo9IHZmaW9fcGNpX2NvcmUubyB2ZmlvX3BjaV9pbnRycy5vIHZmaW9fcGNpX3Jkd3IubyB2ZmlvX3BjaV9jb25maWcub1xcbiAgIDQ6XFx0dmZpby1wY2ktY29yZS0kKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkgKz0gdmZpb19wY2lfemRldi5vXFxuICAgNTpcXHR2ZmlvLXBjaS1jb3JlLSQoQ09ORklHX1ZGSU9fUENJX0RNQUJVRikgKz0gdmZpb19wY2lfZG1hYnVmLm9cXG4gICA2OlxcdG9iai0kKENPTkZJR19WRklPX1BDSV9DT1JFKSArPSB2ZmlvLXBjaS1jb3JlLm9cXG4gICA3OlxcdFxcbiAgIDg6XFx0dmZpby1wY2kteSA6PSB2ZmlvX3BjaS5vXFxuICAgOTpcXHR2ZmlvLXBjaS0kKENPTkZJR19WRklPX1BDSV9JR0QpICs9IHZmaW9fcGNpX2lnZC5vXFxuICAxMDpcXHRvYmotJChDT05GSUdfVkZJT19QQ0kpICs9IHZmaW8tcGNpLm9cXG4gIDExOlxcdFxcbiAgMTI6XFx0b2JqLSQoQ09ORklHX01MWDVfVkZJT19QQ0kpICAgICAgICAgICArPSBtbHg1L1xcbiAgMTM6XFx0XFxuICAxNDpcXHRvYmotJChDT05GSUdfSVNNX1ZGSU9fUENJKSAgICAgICAgICAgKz0gaXNtL1xcbiAgMTU6XFx0XFxuICAxNjpcXHRvYmotJChDT05GSUdfSElTSV9BQ0NfVkZJT19QQ0kpICs9IGhpc2lsaWNvbi9cXG4gIDE3OlxcdFxcbiAgMTg6XFx0b2JqLSQoQ09ORklHX1BEU19WRklPX1BDSSkgKz0gcGRzL1xcbiAgMTk6XFx0XFxuICAyMDpcXHRvYmotJChDT05GSUdfVklSVElPX1ZGSU9fUENJKSArPSB2aXJ0aW8vXFxuICAyMTpcXHRcXG4gIDIyOlxcdG9iai0kKENPTkZJR19OVkdSQUNFX0dQVV9WRklPX1BDSSkgKz0gbnZncmFjZS1ncHUvXFxuICAyMzpcXHRcXG4gIDI0OlxcdG9iai0kKENPTkZJR19RQVRfVkZJT19QQ0kpICs9IHFhdC9cXG4gIDI1OlxcdFxcbiAgMjY6XFx0b2JqLSQoQ09ORklHX1hFX1ZGSU9fUENJKSArPSB4ZS9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDg6NTU6NTguMTM2NzI3NjkxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ3NzAxMTU3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQ6XG5cbioqRXhhbWluaW5nIFZGSU8gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIHRvcC1sZXZlbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFZGSU8uIFdoZXJlIGRvIEkgc3RhcnQ/IFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gbG9vayBmb3IgdGhvc2Ugd291bGQgYmUgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBkcml2ZXIncyBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgYGRyaXZlcnMvdmZpby9LY29uZmlnYC4gVGhhdCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludHMgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGUgVkZJTyBmZWF0dXJlcy4gSSdsbCBuZWVkIHRvIHJldmlldyB0aG9zZSBzZXR0aW5ncyB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBMZXQncyBkaWcgaW4gYW5kIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzMDksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU2OjAyLjkwNjg0NjE4MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0bWVudWNvbmZpZyBWRklPXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiVkZJTyBOb24tUHJpdmlsZWdlZCB1c2Vyc3BhY2UgZHJpdmVyIGZyYW1ld29ya1xcXCJcXG4gICA0OlxcdFxcdHNlbGVjdCBJT01NVV9BUElcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gSU9NTVVGRCB8fCAhSU9NTVVGRFxcbiAgIDY6XFx0XFx0c2VsZWN0IElOVEVSVkFMX1RSRUVcXG4gICA3OlxcdFxcdHNlbGVjdCBWRklPX0dST1VQIGlmIFNQQVBSX1RDRV9JT01NVSB8fCBJT01NVUZEPW5cXG4gICA4OlxcdFxcdHNlbGVjdCBWRklPX0RFVklDRV9DREVWIGlmICFWRklPX0dST1VQXFxuICAgOTpcXHRcXHRzZWxlY3QgVkZJT19DT05UQUlORVIgaWYgSU9NTVVGRD1uXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFZGSU8gcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIHNlY3VyZSB1c2Vyc3BhY2UgZGV2aWNlIGRyaXZlcnMuXFxuICAxMjpcXHRcXHQgIFNlZSBEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby5yc3QgZm9yIG1vcmUgZGV0YWlscy5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0ICBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRpZiBWRklPXFxuICAxNzpcXHRjb25maWcgVkZJT19ERVZJQ0VfQ0RFVlxcbiAgMTg6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgdGhlIFZGSU8gY2RldiAvZGV2L3ZmaW8vZGV2aWNlcy92ZmlvWFxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gSU9NTVVGRCBcXHUwMDI2XFx1MDAyNiAhU1BBUFJfVENFX0lPTU1VXFxuICAyMDpcXHRcXHRkZWZhdWx0ICFWRklPX0dST1VQXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIFRoZSBWRklPIGRldmljZSBjZGV2IGlzIGFub3RoZXIgd2F5IGZvciB1c2Vyc3BhY2UgdG8gZ2V0IGRldmljZVxcbiAgMjM6XFx0XFx0ICBhY2Nlc3MuIFVzZXJzcGFjZSBnZXRzIGRldmljZSBmZCBieSBvcGVuaW5nIGRldmljZSBjZGV2IHVuZGVyXFxuICAyNDpcXHRcXHQgIC9kZXYvdmZpby9kZXZpY2VzL3ZmaW9YLCBhbmQgdGhlbiBiaW5kIHRoZSBkZXZpY2UgZmQgd2l0aCBhbiBpb21tdWZkXFxuICAyNTpcXHRcXHQgIHRvIHNldCB1cCBzZWN1cmUgRE1BIGNvbnRleHQgZm9yIGRldmljZSBhY2Nlc3MuXFxuICAyNjpcXHRcXG4gIDI3OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIFZGSU9fR1JPVVBcXG4gIDMwOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBWRklPIGdyb3VwIC9kZXYvdmZpby8kZ3JvdXBfaWRcXFwiXFxuICAzMTpcXHRcXHRkZWZhdWx0IHlcXG4gIDMyOlxcdFxcdGhlbHBcXG4gIDMzOlxcdFxcdCAgIFZGSU8gZ3JvdXAgc3VwcG9ydCBwcm92aWRlcyB0aGUgdHJhZGl0aW9uYWwgbW9kZWwgZm9yIGFjY2Vzc2luZ1xcbiAgMzQ6XFx0XFx0ICAgZGV2aWNlcyB0aHJvdWdoIFZGSU8gYW5kIGlzIHVzZWQgYnkgdGhlIG1ham9yaXR5IG9mIHVzZXJzcGFjZVxcbiAgMzU6XFx0XFx0ICAgYXBwbGljYXRpb25zIGFuZCBkcml2ZXJzIG1ha2luZyB1c2Ugb2YgVkZJTy5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgWS5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0Y29uZmlnIFZGSU9fQ09OVEFJTkVSXFxuICA0MDpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciB0aGUgVkZJTyBjb250YWluZXIgL2Rldi92ZmlvL3ZmaW9cXFwiXFxuICA0MTpcXHRcXHRzZWxlY3QgVkZJT19JT01NVV9UWVBFMSBpZiBNTVUgXFx1MDAyNlxcdTAwMjYgKFg4NiB8fCBTMzkwIHx8IEFSTSB8fCBBUk02NClcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gVkZJT19HUk9VUFxcbiAgNDM6XFx0XFx0ZGVmYXVsdCB5XFxuICA0NDpcXHRcXHRoZWxwXFxuICA0NTpcXHRcXHQgIFRoZSBWRklPIGNvbnRhaW5lciBpcyB0aGUgY2xhc3NpYyBpbnRlcmZhY2UgdG8gVkZJTyBmb3IgZXN0YWJsaXNoaW5nXFxuICA0NjpcXHRcXHQgIElPTU1VIG1hcHBpbmdzLiBJZiBOIGlzIHNlbGVjdGVkIGhlcmUgdGhlbiBJT01NVUZEIG11c3QgYmUgdXNlZCB0b1xcbiAgNDc6XFx0XFx0ICBtYW5hZ2UgdGhlIG1hcHBpbmdzLlxcbiAgNDg6XFx0XFxuICA0OTpcXHRcXHQgIFVubGVzcyB0ZXN0aW5nIElPTU1VRkQgc2F5IFkgaGVyZS5cXG4gIDUwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NjowMi45MDY5MTU5NTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzMzNDk5NDAyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWRklPIFBDSSBMb2NraW5nIExvZ2ljIFJldmlldyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZGVkIHRvIGNvbmZpcm0gdGhlIG5lY2Vzc2FyeSBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYFBDSWAgZW5hYmxlcyBWRklPIHN1cHBvcnQsIGBWRklPYCBpcyB0aGUgdG9wLWxldmVsIG1lbnUgb3B0aW9uLCBgVkZJT19QQ0lgIHByb3ZpZGVzIGdlbmVyaWMgVkZJTyBzdXBwb3J0IGZvciBhbnkgUENJIGRldmljZSBhbmQgc2VsZWN0cyBgVkZJT19QQ0lfQ09SRWAsIGFuZCBgVkZJT19QQ0lfQ09SRWAgaXMgY29tcGlsZWQgd2hlbiBgVkZJT19QQ0lgIGlzIHNlbGVjdGVkLiBTbywgYFZGSU9gLCBgVkZJT19QQ0lgLCBhbmQgYFBDSWAgYXJlIHRoZSBvbmVzIHRvIGZvY3VzIG9uLlxuXG5UaGVuLCBJIGxvb2tlZCBhdCB0aGUgYGRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBjb25maXJtaW5nIHRoYXQgYFZGSU9fUENJYCBhbmQgYFZGSU9gIGFyZSBrZXkgYW5kIGRlcGVuZCBvbiBgUENJYC5cblxuTmV4dCwgSSBmb2N1c2VkIG9uIHJlbGV2YW50IHN5bWJvbHM6IHNwZWNpZmljYWxseSBgdmZpb19wY2lfY29yZV9kaXNhYmxlYCwgYHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlYCwgYHZmaW9fcGNpX29wZW5fZGV2aWNlYCwgYW5kIGFsc28gZG91YmxlLWNoZWNrZWQgYHZmaW9fcGNpX2NvcmVfZW5hYmxlYCwgd2hpY2ggYXJlIGFsbCBmb3VuZCBpbiBgdmZpb19wY2lfY29yZS5jYC4gVGhpcyBnYXZlIG1lIGEgZ29vZCBncmFzcCBvZiB0aGUgY29udHJvbCBwb2ludHMuXG5cbkkgcmV2aWV3ZWQgYHZmaW9fcGNpX2NvcmVfZW5hYmxlYCBhbmQgYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAsIGFzIHRoZXkncmUgdGhlIGNvcmUgbGlmZWN5Y2xlIGZ1bmN0aW9ucyBtYW5hZ2luZyB0aGUgc3RhdGUgYW5kIGxvY2tzIG9mIFBDSSBkZXZpY2VzIHdpdGhpbiBWRklPLiBOb3csIHRoZSBwYXRjaCBmb2N1c2VzIG9uIGNoYW5naW5nIGxvY2tpbmcgbG9naWMgaW4gYHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpYC4gSXQgcmVwbGFjZXMgYSB0cnkgbG9jayBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBibG9ja2luZyBsb2NrLiBUaGF0IG1lYW5zIHRoZSBwYXRjaCBhbHRlcnMgc3luY2hyb25pemF0aW9uIGJlaGF2aW9yIGR1cmluZyB0ZWFyZG93biwgd2hpY2ggY2FuIGxlYWQgdG8gbG9jayBvcmRlciBpc3N1ZXMgYW5kIHBvdGVudGlhbCBkZWFkbG9ja3MuIFRoaXMgaXMgc2lnbmlmaWNhbnQsIGVzcGVjaWFsbHkgaW4gUUVNVSBlbnZpcm9ubWVudHMgd2l0aCBQQ0kgYW5kIFZGSU8gc3VwcG9ydC5cblxuQmFzZWQgb24gYWxsIG9mIHRoaXMsIHRoZSBwYXRjaCBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1enppbmcsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb24gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gSSd2ZSBvdXRsaW5lZCB0aGUgYFJlYXNvbmluZ2AgY2xlYXJseS4gQW5kIEkndmUgZG91YmxlIGNoZWNrZWQgdGhlIGBGb2N1c1N5bWJvbHNgIGFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgLiBJdCdzIGFsbCB2ZXJpZmllZCwgc28gSSdtIGdvb2QgdG8gcHJvY2VlZCB3aXRoIHNldHRpbmcgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjYzLCJPdXRwdXRUb2tlbnMiOjE4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU2OjEwLjI0MTkxMzM4MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNDAzODMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQ0lcIixcbiAgICBcIlZGSU9cIixcbiAgICBcIlZGSU9fUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19wY2lfY29yZV9kaXNhYmxlXCIsXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZVwiLFxuICAgIFwidmZpb19wY2lfY29yZV9lbmFibGVcIixcbiAgICBcInZmaW9fcGNpX29wZW5fZGV2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgbG9naWMgaW4gdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgYnkgcmVwbGFjaW5nIGEgdHJ5bG9jayBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBibG9ja2luZyBwY2lfZGV2X2xvY2soYnJpZGdlKS4gVGhpcyBhbHRlcnMgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgYmVoYXZpb3IgaW4gdGhlIFZGSU8gUENJIHRlYXJkb3duL2Rpc2FibGUgcGF0aCB3aGVuIGRldmljZSBpbnN0YW5jZXMgYXJlIGNsb3NlZCBvciBkaXNhYmxlZCwgd2hpY2ggY2FuIGludHJvZHVjZSBkZWFkbG9jayBvciBsb2NraW5nIGludmFyaWFudCBpc3N1ZXMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2l0aCBWRklPIFBDSSBzdXBwb3J0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBDSVwiLFxuICAgIFwiVkZJT1wiLFxuICAgIFwiVkZJT19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2Rpc2FibGVcIixcbiAgICBcInZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2VuYWJsZVwiLFxuICAgIFwidmZpb19wY2lfb3Blbl9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBsb2dpYyBpbiB2ZmlvX3BjaV9jb3JlX2Rpc2FibGUoKSBieSByZXBsYWNpbmcgYSB0cnlsb2NrIG9uIHRoZSB1cHN0cmVhbSBicmlkZ2Ugd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGJsb2NraW5nIHBjaV9kZXZfbG9jayhicmlkZ2UpLiBUaGlzIGFsdGVycyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBiZWhhdmlvciBpbiB0aGUgVkZJTyBQQ0kgdGVhcmRvd24vZGlzYWJsZSBwYXRoIHdoZW4gZGV2aWNlIGluc3RhbmNlcyBhcmUgY2xvc2VkIG9yIGRpc2FibGVkLCB3aGljaCBjYW4gaW50cm9kdWNlIGRlYWRsb2NrIG9yIGxvY2tpbmcgaW52YXJpYW50IGlzc3Vlcy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZGSU8gUENJIHN1cHBvcnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU2OjEwLjMxNTMyNTc4M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2MjQzNzc0MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwODo1NjoxMC4zMTU3OTg0OTNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNDYyMzg5OTk3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZGV2aWNlIGxvY2tpbmcgYmVoYXZpb3IgaW4gdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgYnkgcmVwbGFjaW5nIGEgdHJ5bG9jayAocGNpX2Rldl90cnlsb2NrKSBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBsb2NrIChwY2lfZGV2X2xvY2spIGFuZCByZW1vdmluZyBhbiB1bnVzZWQgZ290byBsYWJlbC4gVGhpcyBjaGFuZ2UgZXhjbHVzaXZlbHkgYWZmZWN0cyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBhbmQgZGV2aWNlIHJlc2V0IGZsb3cuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgYWxsb2NhdGUsIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBub3IgZG9lcyBpdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSBvciBhbHRlciBsb2dpYyBkZWFsaW5nIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIGxvY2sgb3JkZXIgaW52ZXJzaW9ucykgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUC9LQVNBTiByYXRoZXIgdGhhbiBLTVNBTi4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZiY2E0YTliOGRkOThlZWY0MzgzM2VmYzQ2ZjVlZWI3YzFmZTA2ODVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDA4OjU1OjIyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xuaW5kZXggMzYyYzM3NWEwNTc5OS4uODk2NmE1YmVhNDA2MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG4rKysgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xuQEAgLTc5MCw4ICs3OTAsOCBAQCB2b2lkIHZmaW9fcGNpX2NvcmVfZGlzYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG4gXHQgKi9cbiBcdGlmICh2ZGV2LVx1MDAzZXJlc2V0X3dvcmtzKSB7XG4gXHRcdGJyaWRnZSA9IHBjaV91cHN0cmVhbV9icmlkZ2UocGRldik7XG4tXHRcdGlmIChicmlkZ2UgXHUwMDI2XHUwMDI2ICFwY2lfZGV2X3RyeWxvY2soYnJpZGdlKSlcbi1cdFx0XHRnb3RvIG91dF9yZXN0b3JlX3N0YXRlO1xuK1x0XHRpZiAoYnJpZGdlKVxuK1x0XHRcdHBjaV9kZXZfbG9jayhicmlkZ2UpO1xuIFx0XHRpZiAocGNpX2Rldl90cnlsb2NrKHBkZXYpKSB7XG4gXHRcdFx0aWYgKCFfX3BjaV9yZXNldF9mdW5jdGlvbl9sb2NrZWQocGRldikpXG4gXHRcdFx0XHR2ZGV2LVx1MDAzZW5lZWRzX3Jlc2V0ID0gZmFsc2U7XG5AQCAtODAxLDcgKzgwMSw2IEBAIHZvaWQgdmZpb19wY2lfY29yZV9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbiBcdFx0XHRwY2lfZGV2X3VubG9jayhicmlkZ2UpO1xuIFx0fVxuIFxuLW91dF9yZXN0b3JlX3N0YXRlOlxuIFx0cGNpX3Jlc3RvcmVfc3RhdGUocGRldik7XG4gb3V0OlxuIFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDg6NTY6MTAuMzE1Nzk5NTYzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwMjUxNDYzMDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSB2ZmlvLXBjaSBDb3JlIERpc2FibGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgcGF0Y2ggSSdtIGxvb2tpbmcgYXQgc2VlbXMgdG8gYmUgY2VudHJhbGl6ZWQsIHRoYW5rZnVsbHkuIEl0J3MgYWxsIGNvbnRhaW5lZCB3aXRoaW4gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gTXkgZmlyc3Qgc3RlcCwgYXMgYWx3YXlzLCBpcyBnb2luZyB0byBiZSB0byBkZWVwbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhcm91bmQgdGhlIGZ1bmN0aW9uIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgLiBJIG5lZWQgdG8gc2VlICp3aHkqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgdG91Y2hlZC4gSXMgaXQgYmVpbmcgbW9kaWZpZWQgZGlyZWN0bHk/IElzIGNvZGUgYXJvdW5kIGl0IGJlaW5nIGFsdGVyZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaXMgY3J1Y2lhbCBmb3IgZ3Jhc3BpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLCBlc3BlY2lhbGx5IGluIGEgZHJpdmVyIGFzIGNvbXBsZXggYXMgVkZJTy5cblxuVG8gZGl2ZSBpbiBlZmZpY2llbnRseSwgSSdsbCBsZXZlcmFnZSBteSB0b29saW5nLiBJJ20gZ29pbmcgdG8gcXVpY2tseSB1c2UgYHJlYWQtZmlsZWAgdG8gemVybyBpbiBvbiB0aGUgYXJlYSBhcm91bmQgbGluZSA3OTAgaW4gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYGRpc2FibGVgIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBkcml2ZXIgZmxvdy4gSSdtIGV4cGVjdGluZyB0byBzZWUgY2FsbHMsIGRlZmluaXRpb25zLCBhbmQgbGlrZWx5IHNvbWUgZXJyb3IgaGFuZGxpbmcgb3Igc3RhdGUgbWFuYWdlbWVudCBhcm91bmQgdGhhdCBsaW5lLiBUaGF0J2xsIGJlIHRoZSBzdGFydGluZyBwb2ludCBmb3IgcGllY2luZyB0b2dldGhlciB0aGUgZnVuY3Rpb25hbCBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDksIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU2OjMwLjU2NzI2NTE4N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzM4MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzcwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzcwOlxcdFxcdFxcdHBjaV9pbmZvKHBkZXYsIFxcXCIlczogQ291bGRuJ3QgcmVsb2FkIHNhdmVkIHN0YXRlXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuIDc3MTpcXHRcXG4gNzcyOlxcdFxcdFxcdGlmICghdmRldi1cXHUwMDNlcmVzZXRfd29ya3MpXFxuIDc3MzpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gNzc0OlxcdFxcbiA3NzU6XFx0XFx0XFx0cGNpX3NhdmVfc3RhdGUocGRldik7XFxuIDc3NjpcXHRcXHR9XFxuIDc3NzpcXHRcXG4gNzc4OlxcdFxcdC8qXFxuIDc3OTpcXHRcXHQgKiBEaXNhYmxlIElOVHggYW5kIE1TSSwgcHJlc3VtYWJseSB0byBhdm9pZCBzcHVyaW91cyBpbnRlcnJ1cHRzXFxuIDc4MDpcXHRcXHQgKiBkdXJpbmcgcmVzZXQuICBTdG9sZW4gZnJvbSBwY2lfcmVzZXRfZnVuY3Rpb24oKVxcbiA3ODE6XFx0XFx0ICovXFxuIDc4MjpcXHRcXHRwY2lfd3JpdGVfY29uZmlnX3dvcmQocGRldiwgUENJX0NPTU1BTkQsIFBDSV9DT01NQU5EX0lOVFhfRElTQUJMRSk7XFxuIDc4MzpcXHRcXG4gNzg0OlxcdFxcdC8qXFxuIDc4NTpcXHRcXHQgKiBUcnkgdG8gZ2V0IHRoZSBsb2NrcyBvdXJzZWx2ZXMgdG8gcHJldmVudCBhIGRlYWRsb2NrLiBUaGVcXG4gNzg2OlxcdFxcdCAqIHN1Y2Nlc3Mgb2YgdGhpcyBpcyBkZXBlbmRlbnQgb24gYmVpbmcgYWJsZSB0byBsb2NrIHRoZSBkZXZpY2UsXFxuIDc4NzpcXHRcXHQgKiB3aGljaCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlLlxcbiA3ODg6XFx0XFx0ICogV2UgY2FuIG5vdCB1c2UgdGhlIFxcXCJ0cnlcXFwiIHJlc2V0IGludGVyZmFjZSBoZXJlLCB3aGljaCB3aWxsXFxuIDc4OTpcXHRcXHQgKiBvdmVyd3JpdGUgdGhlIHByZXZpb3VzbHkgcmVzdG9yZWQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cXG4gNzkwOlxcdFxcdCAqL1xcbiA3OTE6XFx0XFx0aWYgKHZkZXYtXFx1MDAzZXJlc2V0X3dvcmtzKSB7XFxuIDc5MjpcXHRcXHRcXHRicmlkZ2UgPSBwY2lfdXBzdHJlYW1fYnJpZGdlKHBkZXYpO1xcbiA3OTM6XFx0XFx0XFx0aWYgKGJyaWRnZSlcXG4gNzk0OlxcdFxcdFxcdFxcdHBjaV9kZXZfbG9jayhicmlkZ2UpO1xcbiA3OTU6XFx0XFx0XFx0aWYgKHBjaV9kZXZfdHJ5bG9jayhwZGV2KSkge1xcbiA3OTY6XFx0XFx0XFx0XFx0aWYgKCFfX3BjaV9yZXNldF9mdW5jdGlvbl9sb2NrZWQocGRldikpXFxuIDc5NzpcXHRcXHRcXHRcXHRcXHR2ZGV2LVxcdTAwM2VuZWVkc19yZXNldCA9IGZhbHNlO1xcbiA3OTg6XFx0XFx0XFx0XFx0cGNpX2Rldl91bmxvY2socGRldik7XFxuIDc5OTpcXHRcXHRcXHR9XFxuIDgwMDpcXHRcXHRcXHRpZiAoYnJpZGdlKVxcbiA4MDE6XFx0XFx0XFx0XFx0cGNpX2Rldl91bmxvY2soYnJpZGdlKTtcXG4gODAyOlxcdFxcdH1cXG4gODAzOlxcdFxcbiA4MDQ6XFx0XFx0cGNpX3Jlc3RvcmVfc3RhdGUocGRldik7XFxuIDgwNTpcXHRvdXQ6XFxuIDgwNjpcXHRcXHRwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7XFxuIDgwNzpcXHRcXG4gODA4OlxcdFxcdHZmaW9fcGNpX2Rldl9zZXRfdHJ5X3Jlc2V0KHZkZXYtXFx1MDAzZXZkZXYuZGV2X3NldCk7XFxuIDgwOTpcXHRcXG4gODEwOlxcdFxcdC8qIFB1dCB0aGUgcG0tcnVudGltZSB1c2FnZSBjb3VudGVyIGFjcXVpcmVkIGR1cmluZyBlbmFibGUgKi9cXG4gODExOlxcdFxcdGlmICghdmRldi1cXHUwMDNlZGlzYWJsZV9pZGxlX2QzKVxcbiA4MTI6XFx0XFx0XFx0cG1fcnVudGltZV9wdXQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuIDgxMzpcXHR9XFxuIDgxNDpcXHRFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2Rpc2FibGUpO1xcbiA4MTU6XFx0XFxuIDgxNjpcXHR2b2lkIHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbiA4MTc6XFx0e1xcbiA4MTg6XFx0XFx0c3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2ID1cXG4gODE5OlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSwgdmRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU2OjMwLjU2NzQ0MDg2OFoiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MzcyMjM1NTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTG9ja2luZyBDaGFuZ2UgaW4gYHZmaW9fcGNpX2NvcmVfZGlzYWJsZWAqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgc3luY2hyb25pemF0aW9uIGNoYW5nZSB3aXRoaW4gdGhlIGB2ZmlvX3BjaV9jb3JlX2Rpc2FibGVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIHdlJ3JlIHRyYW5zaXRpb25pbmcgZnJvbSBgcGNpX2Rldl90cnlsb2NrKGJyaWRnZSlgIHRvIGBwY2lfZGV2X2xvY2soYnJpZGdlKWAgd2hlbiByZXNldHRpbmcgYSBkZXZpY2UuIFRoaXMgY2hhbmdlIG1vZGlmaWVzIHRoZSBsb2NraW5nIGJlaGF2aW9yIGFyb3VuZCB0aGUgdXBzdHJlYW0gUENJIGJyaWRnZSBkdXJpbmcgYSBkZXZpY2UgZGlzYWJsZS5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgaXQgc2VlbXMgdGhlIG9sZCBpbXBsZW1lbnRhdGlvbiBhdHRlbXB0ZWQgYSBub24tYmxvY2tpbmcgbG9jayAoYHRyeWxvY2tgKSBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIGJlZm9yZSBwcm9jZWVkaW5nLCBwb3RlbnRpYWxseSBza2lwcGluZyB0aGUgcmVzZXQgaWYgdGhlIGxvY2sgY291bGRuJ3QgYmUgaW1tZWRpYXRlbHkgYWNxdWlyZWQuIE5vdywgaXQgdW5jb25kaXRpb25hbGx5IHRha2VzIHRoZSBsb2NrIChgbG9ja2ApIG9uIHRoZSBicmlkZ2UgaWYgdGhlIGJyaWRnZSBleGlzdHMuIFRoZSBgb3V0X3Jlc3RvcmVfc3RhdGVgIGxhYmVsIGhhcyBhbHNvIGJlZW4gcmVtb3ZlZCwgYXMgdGhlIGB0cnlsb2NrYCBmYWlsdXJlIGJyYW5jaCBpcyBubyBsb25nZXIgcHJlc2VudC5cblxuR2l2ZW4gdGhpcywgSSdtIGNsYXNzaWZ5aW5nIHRoaXMgYXMgYSBzeW5jaHJvbml6YXRpb24gY2hhbmdlLCBkaXJlY3RseSBpbXBhY3RpbmcgZGV2aWNlIHJlc2V0IGJlaGF2aW9yIHdpdGhpbiBgdmZpb19wY2lfY29yZV9kaXNhYmxlYC4gTE9DS0RFUCBzaG91bGQgYmUgc3VmZmljaWVudCBoZXJlIHRvIGFkZHJlc3MgcG90ZW50aWFsIGRlYWRsb2NrIGFuZCBsb2NrIG9yZGVyaW5nIGlzc3Vlcywgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIHByb2JsZW0gaXQgd2FzIGRlc2lnbmVkIGZvci5cblxuTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgY2hhbmdlIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBLTVNBTiBjb25jZXJucy4gSSdsbCBnbyB0aHJvdWdoIHRoZSBzdGFuZGFyZCBjcml0ZXJpYS4gVGhlcmUgYXJlIG5vIGtlcm5lbCBzdHJ1Y3R1cmVzIGJlaW5nIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHdpdGggcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBmaWVsZHMsIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZGVwZW5kcyBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG5vIG5ldyBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb25zIHRoYXQgbWlnaHQgbGVhZCB0byB1bmluaXRpYWxpemVkIHJlYWRzLCBhbmQgbm8gY2hhbmdlcyB0byBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFNvLCBiYXNlZCBvbiBteSByZXZpZXcsIEtNU0FOIGlzIG5vdCBuZWVkZWQgaGVyZS4gS0FTQU4vTE9DS0RFUCB3b3VsZCBiZSB0aGUgbW9yZSBhcHByb3ByaWF0ZSB0b29scyB0byB1c2UsIGZvY3VzaW5nIG9uIHN5bmNocm9uaXphdGlvbiBhbmQgZGV2aWNlIHN0YXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDI5LCJPdXRwdXRUb2tlbnMiOjE2MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA4OjU2OjM0LjkzOTY3OTA0NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZGV2aWNlIGxvY2tpbmcgYmVoYXZpb3IgaW4gdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgYnkgcmVwbGFjaW5nIGEgdHJ5bG9jayAocGNpX2Rldl90cnlsb2NrKSBvbiB0aGUgdXBzdHJlYW0gYnJpZGdlIHdpdGggYW4gdW5jb25kaXRpb25hbCBsb2NrIChwY2lfZGV2X2xvY2spIGFuZCByZW1vdmluZyBhbiB1bnVzZWQgZ290byBsYWJlbC4gVGhpcyBjaGFuZ2UgZXhjbHVzaXZlbHkgYWZmZWN0cyBzeW5jaHJvbml6YXRpb24vbG9ja2luZyBhbmQgZGV2aWNlIHJlc2V0IGZsb3cuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgYWxsb2NhdGUsIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBub3IgZG9lcyBpdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSBvciBhbHRlciBsb2dpYyBkZWFsaW5nIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIGxvY2sgb3JkZXIgaW52ZXJzaW9ucykgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUC9LQVNBTiByYXRoZXIgdGhhbiBLTVNBTi4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRldmljZSBsb2NraW5nIGJlaGF2aW9yIGluIHZmaW9fcGNpX2NvcmVfZGlzYWJsZSgpIGJ5IHJlcGxhY2luZyBhIHRyeWxvY2sgKHBjaV9kZXZfdHJ5bG9jaykgb24gdGhlIHVwc3RyZWFtIGJyaWRnZSB3aXRoIGFuIHVuY29uZGl0aW9uYWwgbG9jayAocGNpX2Rldl9sb2NrKSBhbmQgcmVtb3ZpbmcgYW4gdW51c2VkIGdvdG8gbGFiZWwuIFRoaXMgY2hhbmdlIGV4Y2x1c2l2ZWx5IGFmZmVjdHMgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgYW5kIGRldmljZSByZXNldCBmbG93LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIGFsbG9jYXRlLCBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcywgbm9yIGRvZXMgaXQgY29weSBkYXRhIHRvIHVzZXIgc3BhY2Ugb3IgYWx0ZXIgbG9naWMgZGVhbGluZyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIHJlZ3Jlc3Npb25zIChzdWNoIGFzIGRlYWRsb2NrcyBvciBsb2NrIG9yZGVyIGludmVyc2lvbnMpIGFyZSBkZXRlY3RhYmxlIGJ5IExPQ0tERVAvS0FTQU4gcmF0aGVyIHRoYW4gS01TQU4uIERlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcdr9[1] Phase: Succeeded StartedAt: 2026-09-08 08:56:43 +0000 UTC FinishedAt: 2026-09-08 08:56:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-08 08:56:43 +0000 UTC FinishedAt: 2026-09-08 08:56:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2] Phase: Succeeded StartedAt: 2026-09-08 08:56:43 +0000 UTC FinishedAt: 2026-09-08 10:12:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-08 08:56:43 +0000 UTC FinishedAt: 2026-09-08 10:12:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-08 08:56:43 +0000 UTC FinishedAt: 2026-09-08 08:56:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-08 08:56:43 +0000 UTC FinishedAt: 2026-09-08 08:56:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowzcdr9/series-workflowzcdr9-convert-artifact-1477554170/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-08 08:56:53 +0000 UTC FinishedAt: 2026-09-08 09:12:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-08 08:56:53 +0000 UTC FinishedAt: 2026-09-08 09:12:47 +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:*f2bacc0b-b659-48aa-9097-9735acf7bc9a,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-workflowzcdr9/series-workflowzcdr9-convert-artifact-1477554170/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": "e70c3d26-2133-477b-a1cc-f18f933c09b9", "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-workflowzcdr9/series-workflowzcdr9-build-action-3812327592/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-08 08:56:53 +0000 UTC FinishedAt: 2026-09-08 09:12:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*f2bacc0b-b659-48aa-9097-9735acf7bc9a,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-workflowzcdr9/series-workflowzcdr9-convert-artifact-1477554170/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": "e70c3d26-2133-477b-a1cc-f18f933c09b9", "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-workflowzcdr9/series-workflowzcdr9-build-action-3812327592/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-08 09:12:47 +0000 UTC FinishedAt: 2026-09-08 09:12:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-08 09:12:47 +0000 UTC FinishedAt: 2026-09-08 09:12:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-08 09:12:47 +0000 UTC FinishedAt: 2026-09-08 09:12:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-08 09:12:47 +0000 UTC FinishedAt: 2026-09-08 09:12:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowzcdr9/series-workflowzcdr9-convert-artifact-2698484821/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-08 09:12:57 +0000 UTC FinishedAt: 2026-09-08 09:15:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-08 09:12:57 +0000 UTC FinishedAt: 2026-09-08 09:14:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e70c3d26-2133-477b-a1cc-f18f933c09b9,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-workflowzcdr9/series-workflowzcdr9-build-action-3812327592/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-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-08 09:15:01 +0000 UTC FinishedAt: 2026-09-08 09:15:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-08 09:15:01 +0000 UTC FinishedAt: 2026-09-08 09:15:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-08 09:15:01 +0000 UTC FinishedAt: 2026-09-08 09:34:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-08 09:15:01 +0000 UTC FinishedAt: 2026-09-08 09:34:59 +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:*f2bacc0b-b659-48aa-9097-9735acf7bc9a,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-workflowzcdr9/series-workflowzcdr9-convert-artifact-2698484821/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": "b1158908-812b-40b1-8838-0d839f4163a3", "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-workflowzcdr9/series-workflowzcdr9-build-action-4274568673/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-08 09:15:01 +0000 UTC FinishedAt: 2026-09-08 09:34:49 +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:*f2bacc0b-b659-48aa-9097-9735acf7bc9a,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-workflowzcdr9/series-workflowzcdr9-convert-artifact-2698484821/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": "b1158908-812b-40b1-8838-0d839f4163a3", "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-workflowzcdr9/series-workflowzcdr9-build-action-4274568673/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-08 09:34:59 +0000 UTC FinishedAt: 2026-09-08 09:34:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-08 09:34:59 +0000 UTC FinishedAt: 2026-09-08 09:34:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-08 09:34:59 +0000 UTC FinishedAt: 2026-09-08 09:37:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-08 09:34:59 +0000 UTC FinishedAt: 2026-09-08 09:36:56 +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:*b1158908-812b-40b1-8838-0d839f4163a3,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-workflowzcdr9/series-workflowzcdr9-build-action-4274568673/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-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-08 09:37:06 +0000 UTC FinishedAt: 2026-09-08 10:12:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-08 09:37:06 +0000 UTC FinishedAt: 2026-09-08 10:12:15 +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":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*e70c3d26-2133-477b-a1cc-f18f933c09b9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b1158908-812b-40b1-8838-0d839f4163a3,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-workflowzcdr9/series-workflowzcdr9-build-action-3812327592/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-workflowzcdr9/series-workflowzcdr9-build-action-4274568673/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-08 09:37:06 +0000 UTC FinishedAt: 2026-09-08 09:37:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-08 09:37:06 +0000 UTC FinishedAt: 2026-09-08 09:37: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":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcdr9/series-workflowzcdr9-convert-artifact-4130092090/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-08 09:37:06 +0000 UTC FinishedAt: 2026-09-08 09:37:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-08 09:37:06 +0000 UTC FinishedAt: 2026-09-08 09:37:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-08 09:37:06 +0000 UTC FinishedAt: 2026-09-08 09:37:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-08 09:37:54 +0000 UTC FinishedAt: 2026-09-08 10:12:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcdr9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_disable","vfio_pci_core_close_device","vfio_pci_core_enable","vfio_pci_open_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5e2d672280d97d83de43031d93761b12dadd7b8a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","VFIO","VFIO_PCI"],"series_id":"29f7d819-caaf-4752-b7cd-541a1665c8a2","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-08 09:37:54 +0000 UTC FinishedAt: 2026-09-08 10:12:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e70c3d26-2133-477b-a1cc-f18f933c09b9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b1158908-812b-40b1-8838-0d839f4163a3,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-workflowzcdr9/series-workflowzcdr9-build-action-3812327592/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-workflowzcdr9/series-workflowzcdr9-build-action-4274568673/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-workflowzcdr9/series-workflowzcdr9-convert-artifact-4130092090/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,}