Name: series-workflow8kshv Phase: Succeeded StartedAt: 2026-08-05 15:03:50 +0000 UTC FinishedAt: 2026-08-05 17:07:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[0] Phase: Succeeded StartedAt: 2026-08-05 15:03:50 +0000 UTC FinishedAt: 2026-08-05 15:25:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 15:03:50 +0000 UTC FinishedAt: 2026-08-05 15:25:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "c21bb4193868a8de71fc4693fa741e195fdf5d86", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING", "NET_RX_BUSY_POLL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "c21bb4193868a8de71fc4693fa741e195fdf5d86", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING", "NET_RX_BUSY_POLL" ], "series_id": "6ad96a14-bbed-4660-9e21-3ef2944a2c15" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "io_register_zcrx" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPX1VSSU5HJiMzNDssCiAgICAmIzM0O05FVF9SWF9CVVNZX1BPTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpb19yZWdpc3Rlcl96Y3J4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBpbiB0aGUgaW9fdXJpbmcgemVyby1jb3B5IFJYIHJlZ2lzdHJhdGlvbiBwYXRoIHRvIHJlamVjdCBuZXR3b3JrIGRldmljZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0aGUgbmV0ZGV2IG9wcyBsb2NraW5nIG1vZGVsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgaW9fdXJpbmcgc3Vic3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZXJyb3IgcGF0aCBpcyBoYW5kbGVkIGNvcnJlY3RseSB3aXRob3V0IG1lbW9yeSBsZWFrcyBvciBvdGhlciByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNToyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDY5NDcyOGZhMjgzZmYyYTdhYjRiM2FhZWU4MjgzZGRmZGVjY2I0ZDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDE1OjIzOjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3pjcnguYyBiL2lvX3VyaW5nL3pjcnguY1xuaW5kZXggZjE0NjRlYThjYTY0YS4uMmViYTdkNGU0NDgzZiAxMDA2NDRcbi0tLSBhL2lvX3VyaW5nL3pjcnguY1xuJiM0MzsmIzQzOyYjNDM7IGIvaW9fdXJpbmcvemNyeC5jXG5AQCAtMTcsNiAmIzQzOzE3LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X3J4X3F1ZXVlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvdGNwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcnBzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L25ldGRldl9sb2NrLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvcGFnZV9wb29sLmhcdTAwM2VcbiBcbkBAIC04MjgsNiAmIzQzOzgyOSwxNSBAQCBzdGF0aWMgaW50IHpjcnhfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBpb196Y3J4X2lmcSAqaWZxLFxuIFxuIFx0bmV0ZGV2X2hvbGQoaWZxLVx1MDAzZW5ldGRldiwgXHUwMDI2aWZxLVx1MDAzZW5ldGRldl90cmFja2VyLCBHRlBfS0VSTkVMKTtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIG5ldGRldl9xdWV1ZV9nZXRfZG1hX2RldigpIHJlcXVpcmVzIHRoZSBuZXRkZXYgb3BzIGxvY2tpbmdcbiYjNDM7XHQgKiBtb2RlbC4gUmVqZWN0IGRldmljZXMgd2hpY2ggZG8gbm90IHN1cHBvcnQgaXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhpZnEtXHUwMDNlbmV0ZGV2KSkge1xuJiM0MztcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4mIzQzO1x0XHRnb3RvIG5ldGRldl9wdXRfdW5sb2NrO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZnEtXHUwMDNlZGV2ID0gbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KGlmcS1cdTAwM2VuZXRkZXYsIGlmX3J4cSwgTkVUREVWX1FVRVVFX1RZUEVfUlgpO1xuIFx0aWYgKCFpZnEtXHUwMDNlZGV2KSB7XG4gXHRcdHJldCA9IC1FT1BOT1RTVVBQO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT19VUklORyYjMzQ7LAogICAgJiMzNDtORVRfUlhfQlVTWV9QT0xMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fcmVnaXN0ZXJfemNyeCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgaW4gdGhlIGlvX3VyaW5nIHplcm8tY29weSBSWCByZWdpc3RyYXRpb24gcGF0aCB0byByZWplY3QgbmV0d29yayBkZXZpY2VzIHRoYXQgZG8gbm90IHN1cHBvcnQgdGhlIG5ldGRldiBvcHMgbG9ja2luZyBtb2RlbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGlvX3VyaW5nIHN1YnN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgd2l0aG91dCBtZW1vcnkgbGVha3Mgb3Igb3RoZXIgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OTQ3MjhmYTI4M2ZmMmE3YWI0YjNhYWVlODI4M2RkZmRlY2NiNGQxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgNSAxNToyMzoyMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3pjcnguYyBiL2lvX3VyaW5nL3pjcnguYwppbmRleCBmMTQ2NGVhOGNhNjRhLi4yZWJhN2Q0ZTQ0ODNmIDEwMDY0NAotLS0gYS9pb191cmluZy96Y3J4LmMKJiM0MzsmIzQzOyYjNDM7IGIvaW9fdXJpbmcvemNyeC5jCkBAIC0xNyw2ICYjNDM7MTcsNyBAQAogI2luY2x1ZGUgJmx0O25ldC9uZXRkZXZfcnhfcXVldWUuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvdGNwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3Jwcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtuZXQvbmV0ZGV2X2xvY2suaCZndDsKIAogI2luY2x1ZGUgJmx0O3RyYWNlL2V2ZW50cy9wYWdlX3Bvb2wuaCZndDsKIApAQCAtODI4LDYgJiM0Mzs4MjksMTUgQEAgc3RhdGljIGludCB6Y3J4X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgaW9femNyeF9pZnEgKmlmcSwKIAogCW5ldGRldl9ob2xkKGlmcS0mZ3Q7bmV0ZGV2LCAmYW1wO2lmcS0mZ3Q7bmV0ZGV2X3RyYWNrZXIsIEdGUF9LRVJORUwpOwogCiYjNDM7CS8qCiYjNDM7CSAqIG5ldGRldl9xdWV1ZV9nZXRfZG1hX2RldigpIHJlcXVpcmVzIHRoZSBuZXRkZXYgb3BzIGxvY2tpbmcKJiM0MzsJICogbW9kZWwuIFJlamVjdCBkZXZpY2VzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IGl0LgomIzQzOwkgKi8KJiM0MzsJaWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhpZnEtJmd0O25ldGRldikpIHsKJiM0MzsJCXJldCA9IC1FT1BOT1RTVVBQOwomIzQzOwkJZ290byBuZXRkZXZfcHV0X3VubG9jazsKJiM0MzsJfQomIzQzOwogCWlmcS0mZ3Q7ZGV2ID0gbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KGlmcS0mZ3Q7bmV0ZGV2LCBpZl9yeHEsIE5FVERFVl9RVUVVRV9UWVBFX1JYKTsKIAlpZiAoIWlmcS0mZ3Q7ZGV2KSB7CiAJCXJldCA9IC1FT1BOT1RTVVBQOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjMyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaW9fdXJpbmcgemNyeCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGlvX3VyaW5nL3pjcnguY2AsIHNwZWNpZmljYWxseSB0aGUgY2hhbmdlcyBpbiBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBjaGVjay4gSXQgbG9va3MgbGlrZSBpdOKAmXMgZW5zdXJpbmcgdGhhdCB0aGUgbmV0d29yayBkZXZpY2Ugc3VwcG9ydHMgdGhlIG5ldGRldiBvcHMgbG9ja2luZyBtb2RlbCBiZWZvcmUgcHJvY2VlZGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgY2hlY2sgaXMgbmVjZXNzYXJ5LiBTcGVjaWZpY2FsbHksIHRoZSBjb2RlIGFwcGVhcnMgdG8gYmUgdXNpbmcgYG5ldGRldl9xdWV1ZV9nZXRfZG1hX2RldigpYCBhbmQgdGhpcyBmdW5jdGlvbiByZXF1aXJlcyB0aGUgbmV0ZGV2IG9wcyBsb2NraW5nIG1vZGVsLiBJZiB0aGUgZGV2aWNlIGRvZXNuJiMzOTt0IHN1cHBvcnQgaXQsIHRoZSBwYXRjaCByaWdodGx5IHJlamVjdHMgaXQgd2l0aCBhbiBgLUVPUE5PVFNVUFBgIGVycm9yLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGdldCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgY29kZSBwYXRoLiBJIG5lZWQgdG8gdmVyaWZ5IHdoYXQgZXhhY3RseSBgbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KClgIG5lZWRzIGFuZCB3aHkgdGhpcyBsb2NraW5nIG1vZGVsIGlzIGltcG9ydGFudCBpbiB0aGlzIGNvbnRleHQuIEkgd2lsbCBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBpb191cmluZy96Y3J4LmNgIGZpbGUgaXRzZWxmIHRvIHNlZSBob3cgdGhlIGRldmljZSByZWdpc3RyYXRpb24gaXMgdXNlZCBhbmQgZXhwbG9yZSB0aGUgc3Vycm91bmRpbmcgY29kZS4gVGhlbiBJJiMzOTtsbCBjaGVjayBob3cgdGhpcyBtb2R1bGUgaXMgZW5hYmxlZC4gSSBuZWVkIHRvIGZpbmQgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBpbmNsdXNpb24gb2YgYGlvX3VyaW5nL3pjcnguY2AuIFRoaXMgdW5kZXJzdGFuZGluZyBpcyBjcnVjaWFsIGZvciBhc3Nlc3NpbmcgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSBhbmQgY29uZmlybWluZyBpdHMgY29ycmVjdG5lc3MsIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgYGlvX3VyaW5nYCBhbmQgaXRzIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucy4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBhZmZlY3RzIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBvciBkcml2ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pjcnhfcmVnaXN0ZXJfbmV0ZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW9fdXJpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2lvX3VyaW5nL3pjcnguYz03NTU9c3RhdGljIGludCBpbXBvcnRfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbi0tXG5pb191cmluZy96Y3J4LmMtODE2LVxuaW9fdXJpbmcvemNyeC5jOjgxNzpzdGF0aWMgaW50IHpjcnhfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBpb196Y3J4X2lmcSAqaWZxLFxuaW9fdXJpbmcvemNyeC5jLTgxOC1cdFx0XHRcdHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgKnJlZyxcbi0tXG5pb191cmluZy96Y3J4LmM9ODk0PWludCBpb19yZWdpc3Rlcl96Y3J4KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxuLS1cbmlvX3VyaW5nL3pjcnguYy05OTItXHRpZiAoIShyZWcuZmxhZ3MgXHUwMDI2IFpDUlhfUkVHX05PREVWKSkge1xuaW9fdXJpbmcvemNyeC5jOjk5MzpcdFx0cmV0ID0gemNyeF9yZWdpc3Rlcl9uZXRkZXYoaWZxLCBcdTAwMjZyZWcsIFx1MDAyNmFyZWEpO1xuaW9fdXJpbmcvemNyeC5jLTk5NC1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgaW9fdXJpbmcvemNyeC5jYCBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBhcmUgZm9yIHRoZSBgaW9fdXJpbmcvemNyeC5jYCBtb2R1bGUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZHJpdmluZyB0aGUgYmVoYXZpb3IgYW5kIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIHNldCB1cC4gUHJvYmFibHksIEkgc2hvdWxkIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIGEgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlIGZpcnN0LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgbW9zdCBkZXZpY2UgZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbCB3aWxsIGhhdmUgYSBLY29uZmlnIGZyYWdtZW50IHRoYXQgZGVmaW5lcyB0aGVzZSBvcHRpb25zLCByaWdodD8gTWF5YmUgdGhlcmUmIzM5O3MgYSBgLmNvbmZpZ2AgZW50cnksIG9yIHBlcmhhcHMgaXQmIzM5O3MgaGFuZGxlZCB0aHJvdWdoIGEgbW9yZSBzb3BoaXN0aWNhdGVkIG1lY2hhbmlzbSBpbnZvbHZpbmcgRFQgYmluZGluZ3Mgb3Igc3lzZnMgZW50cmllcy4gVGhpcyByZWFsbHkgZGVwZW5kcyBvbiB3aGV0aGVyIGl0JiMzOTtzIHN0YXRpY2FsbHkgY29tcGlsZWQgb3IgbW9kdWxhci4KCkkmIzM5O20gdGhpbmtpbmcsIGlzIGB6Y3J4LmNgIGEgbW9kdWxlLCBvciBpcyBpdCBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWw/IFRoYXQgd2lsbCBkaXJlY3QgbXkgc2VhcmNoLiBJZiBpdCYjMzk7cyBhIG1vZHVsZSwgSSBuZWVkIHRvIGtub3cgdGhlIHJpZ2h0IGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdG8gbG9hZCBpdCBvciB1bmxvYWQgaXQuIElmIGl0JiMzOTtzIHN0YXRpYywgSSYjMzk7bGwgaGF2ZSB0byBmaW5kIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiwgcG90ZW50aWFsbHkgZXhhbWluaW5nIHRoZSBgS2NvbmZpZ2AgZmlsZXMgaW4gdGhlIHNvdXJjZSB0cmVlIHRvIHRyYWNlIGl0cyBkZXBlbmRlbmNpZXMuIEkmIzM5O20gYWxzbyBjb25zaWRlcmluZyBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgc3Vic3lzdGVtcyDigJMgd2hhdCBraW5kIG9mIG1lbW9yeSBtYW5hZ2VtZW50IHBvbGljaWVzLCBpbnRlcnJ1cHQgaGFuZGxpbmcgc3RyYXRlZ2llcywgYW5kIGVycm9yIHJlcG9ydGluZyBtZWNoYW5pc21zIGFyZSBhdCBwbGF5PyBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyBpdHMgc2V0dGluZ3MgaW1wYWN0IHBlcmZvcm1hbmNlIGFuZCBmdW5jdGlvbmFsaXR5LiBJIHdpbGwgYWxzbyBsb29rIGZvciBhbnkgZG9jdW1lbnRhdGlvbiwgbWF5YmUgY29tbWVudHMgaW4gdGhlIGNvZGUgb3IgaWYgYW55IGRvYyBmaWxlcyBoYXZlIGJlZW4gZ2VuZXJhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pjcnhcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW9fdXJpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2lvX3VyaW5nL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX0lPX1VSSU5HKVx0XHQmIzQzOz0gaW9fdXJpbmcubyBvcGRlZi5vIGtidWYubyByc3JjLm8gbm90aWYubyBcXFxuLS1cbmlvX3VyaW5nL01ha2VmaWxlLTE4LVxuaW9fdXJpbmcvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX0lPX1VSSU5HX1pDUlgpXHQmIzQzOz0gemNyeC5vXG5pb191cmluZy9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfSU9fV1EpXHRcdCYjNDM7PSBpby13cS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUwMgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgQ09ORklHX0lPX1VSSU5HX1pDUlhgIERlcGVuZGVuY3kgQ2hhaW4qKgoKUmlnaHQsIHNvIGBDT05GSUdfSU9fVVJJTkdfWkNSWGAuLi4gdGhhdCYjMzk7cyB0aGUgb25lIHdlJiMzOTtyZSBpbnRlcmVzdGVkIGluLiBPa2F5LCBsZXQmIzM5O3MgZHJpbGwgZG93bi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gSSBhbHJlYWR5IGtub3cgd2hhdCBpdCAqaXMqLCBidXQgSSYjMzk7bSBnZXR0aW5nIGEgaGlnaC1sZXZlbCB2aWV3IGFuZCB3YW50IHRvIHNlZSBob3cgdGhpcyBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0ICpvdGhlciogdGhpbmdzIGFyZSBwdWxsZWQgaW4gd2hlbiB0aGF0JiMzOTtzIGVuYWJsZWQuIEl0JiMzOTtzIHRpbWUgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIGl0IGluIHRoaXMgc3BlY2lmaWMgY29udGV4dCwgYW55IHBvdGVudGlhbCBjb25mbGljdHMsIGFuZCB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uIG92ZXJoZWFkLiBHb3R0YSBtYWtlIHN1cmUgSSYjMzk7bSBub3QgYnJpbmdpbmcgaW4gYSBidW5jaCBvZiBzdHVmZiBJIGRvbiYjMzk7dCByZWFsbHkgbmVlZC4gTGV0JiMzOTtzIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElPX1VSSU5HX1pDUlgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvS2NvbmZpZy01LVxuaW9fdXJpbmcvS2NvbmZpZzo2OmNvbmZpZyBJT19VUklOR19aQ1JYXG5pb191cmluZy9LY29uZmlnLTctXHRkZWZfYm9vbCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgxNAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIGEgS2VybmVsIENvbmZpZ3VyYXRpb24gRmxhZyoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIGp1c3Qgc2F3IHNvbWV0aGluZyB0aGF0JiMzOTtzIG1ha2luZyBtZSByYWlzZSBhbiBleWVicm93LiBgSU9fVVJJTkdfWkNSWGAgaXMgZGVmaW5lZCBhcyBgZGVmX2Jvb2wgeWA/IFRoYXQgZmVlbHPigKYgdW5leHBlY3RlZCwgYW5kIEkgd2FudCB0byB2ZXJpZnkgdGhhdC4gSXQmIzM5O3MgdGltZSB0byBkb3VibGUtY2hlY2sgdGhhdCBrZXJuZWwgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIGhlYWQgb3ZlciB0byB0aGUgYGlvX3VyaW5nL0tjb25maWdgIGZpbGUgYW5kIGNvbmZpcm0gdGhhdCB0aGF0IGJvb2xlYW4gZGVmaW5pdGlvbiBpcyB3aGF0IEkgdGhpbmsgaXQgaXMuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYmVmb3JlIEkgbW92ZSBmb3J3YXJkLCBzbyBsZXQmIzM5O3MgZ2V0IHRoYXQgdmVyaWZpZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW9fdXJpbmcvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIGlvX3VyaW5nIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIElPX1VSSU5HX1pDUlhcbiAgIDc6XHRcdGRlZl9ib29sIHlcbiAgIDg6XHRcdGRlcGVuZHMgb24gSU9fVVJJTkdcbiAgIDk6XHRcdGRlcGVuZHMgb24gUEFHRV9QT09MXG4gIDEwOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgMTE6XHRcdGRlcGVuZHMgb24gTkVUX1JYX0JVU1lfUE9MTFxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBJT19VUklOR19CUEZcbiAgMTQ6XHRcdGRlZl9ib29sIHlcbiAgMTU6XHRcdGRlcGVuZHMgb24gQlBGXG4gIDE2Olx0XHRkZXBlbmRzIG9uIE5FVFxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBJT19VUklOR19CUEZfT1BTXG4gIDE5Olx0XHRkZWZfYm9vbCB5XG4gIDIwOlx0XHRkZXBlbmRzIG9uIElPX1VSSU5HXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMzIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBvd24gcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBJT19VUklOR19aQ1JYIERlcGVuZGVuY3kgQ2hhaW4qKgoKUmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYElPX1VSSU5HX1pDUlhgIGFuZCBpdHMgaW50ZXJkZXBlbmRlbmNpZXMuIEl0JiMzOTtzIGEga2V5IHBhcnQgb2YgdGhlIG1vZGVybiBuZXR3b3JrIHN0YWNrLCBidXQgbGlrZSBhbnkgY3V0dGluZy1lZGdlIGZlYXR1cmUsIGl0JiMzOTtzIHJlbGlhbnQgb24gYSBmZXcgZm91bmRhdGlvbmFsIGNvbXBvbmVudHMuIEkga25vdyBgSU9fVVJJTkdgIGl0c2VsZiBpcyBlc3NlbnRpYWwsIG9idmlvdXNseS4gVGhlbiB3ZSBoYXZlIGBQQUdFX1BPT0xgIOKAkyBjYW4mIzM5O3QgZG8gemVyby1jb3B5IHdpdGhvdXQgZWZmaWNpZW50IHBhZ2UgbWFuYWdlbWVudCwgdGhhdCYjMzk7cyBjbGVhci4gYElORVRgIGlzIGFub3RoZXIgb2J2aW91cyBvbmUuIEJ1dCBpdOKAmXMgdGhhdCBgTkVUX1JYX0JVU1lfUE9MTGAgZGVwZW5kZW5jeSB0aGF0JiMzOTtzIG1ha2luZyBtZSBwYXVzZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhhdCBzcGVjaWZpY2FsbHkgdGllcyBpbnRvIGBJT19VUklOR19aQ1JYYC4gVGltZSB0byBjaGVjayBpdCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfUlhfQlVTWV9QT0xMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTM0Mj1jb25maWcgQ0dST1VQX05FVF9DTEFTU0lEXG4tLVxubmV0L0tjb25maWctMzQ5LVxubmV0L0tjb25maWc6MzUwOmNvbmZpZyBORVRfUlhfQlVTWV9QT0xMXG5uZXQvS2NvbmZpZy0zNTEtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NzQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBgTkVUX1JYX0JVU1lfUE9MTGAgaW4gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBuZXR3b3JrIHN0YWNrJiMzOTtzIGNvbmZpZ3VyYXRpb24uIFJpZ2h0LCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgZnVuZGFtZW50YWwgY29uZmlndXJhdGlvbiBmaWxlIGZvciBuZXR3b3JrLXJlbGF0ZWQgc2V0dGluZ3MuIE15IGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdG8gbG9vayBkaXJlY3RseSBpbnRvIGBuZXQvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiwgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsIGhlbHAgdGV4dCBmb3IgYW55dGhpbmcgbmV0d29yay1zcGVjaWZpYyBhbmQgY29uZmlndXJhYmxlIHdpdGhpbiB0aGUga2VybmVsLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gYWZ0ZXIgYE5FVF9SWF9CVVNZX1BPTExgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoYXQga25vYiBjb250cm9scywgaXRzIGltcGxpY2F0aW9ucywgYW5kIGhvdyBpdCYjMzk7cyBkZWZpbmVkIHdpdGhpbiB0aGUgYnJvYWRlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gY29udGV4dC4gSG9wZWZ1bGx5LCBgbmV0L0tjb25maWdgIHdpbGwgcHJvdmlkZSBtZSB3aXRoIHRoZSBuZWNlc3NhcnkgYW5zd2Vycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzQ1Olx0XHRzZWxlY3QgU09DS19DR1JPVVBfREFUQVxuIDM0NjpcdFx0aGVscFxuIDM0NzpcdFx0ICBDZ3JvdXAgc3Vic3lzdGVtIGZvciB1c2UgYXMgZ2VuZXJhbCBwdXJwb3NlIHNvY2tldCBjbGFzc2lkIG1hcmtlciB0aGF0IGlzXG4gMzQ4Olx0XHQgIGJlaW5nIHVzZWQgaW4gY2xzX2Nncm91cCBhbmQgZm9yIG5ldGZpbHRlciBtYXRjaGluZy5cbiAzNDk6XHRcbiAzNTA6XHRjb25maWcgTkVUX1JYX0JVU1lfUE9MTFxuIDM1MTpcdFx0Ym9vbFxuIDM1MjpcdFx0ZGVmYXVsdCB5IGlmICFQUkVFTVBUX1JUIHx8IChQUkVFTVBUX1JUIFx1MDAyNlx1MDAyNiAhTkVUQ09OU09MRSlcbiAzNTM6XHRcbiAzNTQ6XHRjb25maWcgQlFMXG4gMzU1Olx0XHRib29sXG4gMzU2Olx0XHRwcm9tcHQgXCYjMzQ7RW5hYmxlIEJ5dGUgUXVldWUgTGltaXRzXCYjMzQ7XG4gMzU3Olx0XHRkZXBlbmRzIG9uIFNZU0ZTXG4gMzU4Olx0XHRzZWxlY3QgRFFMXG4gMzU5Olx0XHRkZWZhdWx0IHlcbiAzNjA6XHRcbiAzNjE6XHRjb25maWcgQlBGX1NUUkVBTV9QQVJTRVJcbiAzNjI6XHRcdGJvb2wgXCYjMzQ7ZW5hYmxlIEJQRiBTVFJFQU1fUEFSU0VSXCYjMzQ7XG4gMzYzOlx0XHRkZXBlbmRzIG9uIElORVRcbiAzNjQ6XHRcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA3NAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBhIEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhhdCBgTkVUX1JYX0JVU1lfUE9MTGAgaGFzIGEgY29uZGl0aW9uYWwgZGVmYXVsdCBiYXNlZCBvbiBgUFJFRU1QVF9SVGAgYW5kIGBORVRDT05TT0xFYC4gUmlnaHQsIHRoYXQmIzM5O3Mgc3RhbmRhcmQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIE1vdmluZyBvbiwgYElPX1VSSU5HYCBpcywgYXMgZXhwZWN0ZWQsIHVzdWFsbHkgZW5hYmxlZC4gR29vZC4gYFBBR0VfUE9PTGAgYW5kIGBJTkVUYCBhcmUgYWxzbyBsb2dpY2FsbHkgdGllZCB0byBgTkVUYCwgc28gdGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLgoKVGhlIHJlYWwgbWVhdCBvZiB0aGlzIGlzIHRoZSBwYXRjaCBpdHNlbGYuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3ZlIGdvdCBhIGNoZWNrIGJlaW5nIGFkZGVkIHdpdGhpbiBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgIGluIGBpb191cmluZy96Y3J4LmNgLiBNeSBzcGlkZXktc2Vuc2UgaXMgdGluZ2xpbmcg4oCTIHRoYXQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBgaW9fcmVnaXN0ZXJfemNyeGAsIHdoaWNoIGlzLCBpZiBteSBtZW1vcnkgc2VydmVzLCByZWxhdGVkIHRvIGFuIGBpb191cmluZ2AgcmVnaXN0cmF0aW9uIG9wY29kZS4gVGltZSB0byBjb25maXJtIHRoYXQgaHlwb3RoZXNpcy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYGlvX3JlZ2lzdGVyX3pjcnhgIGluIGBpb191cmluZy96Y3J4LmNgIHRvIHNlZSBwcmVjaXNlbHkgd2hhdCYjMzk7cyBnb2luZyBvbiB0aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG5ldyBjaGVjayBpcyBldmFsdWF0aW5nIGFuZCB3aHkgaXQmIzM5O3MgYmVpbmcgaW50cm9kdWNlZCB3aXRoaW4gdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBMb29rcyBsaWtlIGEgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgcGllY2Ugb2Yga2VybmVsLWxldmVsIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX3JlZ2lzdGVyX3pjcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDEtXHRcdFx0YnJlYWs7XG5pb191cmluZy9yZWdpc3Rlci5jOjk0MjpcdFx0cmV0ID0gaW9fcmVnaXN0ZXJfemNyeChjdHgsIGFyZyk7XG5pb191cmluZy9yZWdpc3Rlci5jLTk0My1cdFx0YnJlYWs7XG4tLVxuaW9fdXJpbmcvemNyeC5jPTg2Nz1zdGF0aWMgaW50IHpjcnhfdmFsaWRhdGVfbm90aWZfc3RhdHMoc3RydWN0IGlvX3pjcnhfaWZxICppZnEsXG4tLVxuaW9fdXJpbmcvemNyeC5jLTg5My1cbmlvX3VyaW5nL3pjcnguYzo4OTQ6aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy96Y3J4LmMtODk1LVx0XHQgICAgIHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgX191c2VyICphcmcpXG4tLVxuaW9fdXJpbmcvemNyeC5oPTg4PWludCBpb196Y3J4X2N0cmwoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcsIHVuc2lnbmVkIG5yX2FyZyk7XG5pb191cmluZy96Y3J4Lmg6ODk6aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy96Y3J4LmgtOTAtXHRcdFx0IHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgX191c2VyICphcmcpO1xuLS1cbmlvX3VyaW5nL3pjcnguaD05Nj1zdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqaW9femNyeF9nZXRfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxuLS1cbmlvX3VyaW5nL3pjcnguaC05OC0jZWxzZVxuaW9fdXJpbmcvemNyeC5oOjk5OnN0YXRpYyBpbmxpbmUgaW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy96Y3J4LmgtMTAwLVx0XHRcdFx0ICAgc3RydWN0IGlvX3VyaW5nX3pjcnhfaWZxX3JlZyBfX3VzZXIgKmFyZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk5MAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDExMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2ggUmVsYXRlZCB0byBpb191cmluZyBEZXZpY2UgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byB0aGUgYGlvX3JlZ2lzdGVyX3pjcnhgIGZ1bmN0aW9uLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQmIzM5O3MgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBgaW9fdXJpbmdfcmVnaXN0ZXJgIHN5c3RlbSBjYWxsLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrOiBgIW5ldGRldl9uZWVkX29wc19sb2NrKGlmcS0mZ3Q7bmV0ZGV2KWAgYW5kLCBpZiB0aGF0IGNvbmRpdGlvbiBpcyB0cnVlLCBpdCByZXR1cm5zIGAtRU9QTk9UU1VQUGAuCgpFc3NlbnRpYWxseSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGlvX3VyaW5nIHN1YnN5c3RlbS4gV2hhdCBpdCYjMzk7cyBkb2luZyBpcyBwcmV2ZW50aW5nIHRoZSByZWdpc3RyYXRpb24gb2YgbmV0d29yayBkZXZpY2VzIHRoYXQgZG9uJiMzOTt0IHN1cHBvcnQgdGhpcyAmIzM0O29wcyBsb2NraW5nIG1vZGVsLCYjMzQ7IHdoYXRldmVyIHRoYXQgZW50YWlscy4gVGhpcyBmZWVscyBwcmV0dHkgc2lnbmlmaWNhbnQsIGEgY2hhbmdlIGF0IHRoZSBjb3JlIGxldmVsLiBEZWZpbml0ZWx5IHdvcnRoIGdpdmluZyB0aGlzIHNvbWUgZnV6emluZyBhdHRlbnRpb24uCgpJIG5lZWQgdG8gZGlnIGludG8gYG5ldGRldl9uZWVkX29wc19sb2NrYCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBjcml0ZXJpYSBhcmUgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIG5ldHdvcmsgZGV2aWNlIG5lZWRzIHRoaXMgb3BzIGxvY2suIFRoYXQgd2lsbCB0ZWxsIHRoZSB3aG9sZSBzdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0ZGV2X25lZWRfb3BzX2xvY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmM9MzE9aW50IHBoeV9saW5rX3RvcG9fYWRkX3BoeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfbGlua190b3BvbG9neS5jLTQ0LVx0ICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYzo0NTpcdGlmIChXQVJOX09OX09OQ0UobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSkpXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYy00Ni1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dhbi9sYXBiZXRoZXIuYz04Mj1zdGF0aWMgX19pbmxpbmVfXyBpbnQgZGV2X2lzX2V0aGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2FuL2xhcGJldGhlci5jLTgzLXtcbmRyaXZlcnMvbmV0L3dhbi9sYXBiZXRoZXIuYzo4NDpcdHJldHVybiBkZXYtXHUwMDNldHlwZSA9PSBBUlBIUkRfRVRIRVIgXHUwMDI2XHUwMDI2ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpO1xuZHJpdmVycy9uZXQvd2FuL2xhcGJldGhlci5jLTg1LX1cbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTIxNDc9c3RydWN0IG5ldF9kZXZpY2Uge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU4Ny1cdCAqICAgYW5kIG90aGVyIGNhbGxiYWNrcywgdGhhdCBpcyB0aGUgaW5zdGFuY2UgbG9jayBvbiBkZXZpY2VzIGZvclxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNTg4Olx0ICogICB3aGljaCBuZXRkZXZfbmVlZF9vcHNfbG9jaygpIHJldHVybnMgdHJ1ZSwgb3RoZXJ3aXNlIGJ5IHJ0bmxfbG9jaztcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU4OS1cdCAqXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1OTAtXHQgKiAtIGRvdWJsZSBvcHMgcHJvdGVjdGVkIC0gYWx3YXlzIHByb3RlY3RlZCBieSBydG5sX2xvY2sgYnV0IGZvclxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNTkxOlx0ICogICBkZXZpY2VzIGZvciB3aGljaCBuZXRkZXZfbmVlZF9vcHNfbG9jaygpIHJldHVybnMgdHJ1ZSAtIGFsc29cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU5Mi1cdCAqICAgdGhlIGluc3RhbmNlIGxvY2suXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD0yMT1uZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcl9pbnZpc2libGUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTI3LVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDoyODpzdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X25lZWRfb3BzX2xvY2soY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMjkte1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9Mzk9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9sb2NrX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC00MC17XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjQxOlx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTQyLVx0XHRuZXRkZXZfbG9jayhkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9NDU9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl91bmxvY2tfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTQ2LXtcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6NDc6XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNDgtXHRcdG5ldGRldl91bmxvY2soZGV2KTtcbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTUxPXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfbG9ja19vcHNfdG9fZnVsbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC01Mi17XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjUzOlx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTU0LVx0XHRuZXRkZXZfYXNzZXJ0X2xvY2tlZChkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9NTk9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl91bmxvY2tfZnVsbF90b19vcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNjAte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo2MTpcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC02Mi1cdFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTY3PXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTY4LXtcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6Njk6XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNzAtXHRcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZGV2LVx1MDAzZWxvY2spO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9ODM9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9hc3NlcnRfbG9ja2VkX29wcyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC04NC17XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjg1Olx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTg2LVx0XHRuZXRkZXZfYXNzZXJ0X2xvY2tlZChkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9ODk9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9sb2NrX29wc19jb21wYXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtOTAte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo5MTpcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC05Mi1cdFx0bmV0ZGV2X2xvY2soZGV2KTtcbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTk3PXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfdW5sb2NrX29wc19jb21wYXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtOTgte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo5OTpcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0xMDAtXHRcdG5ldGRldl91bmxvY2soZGV2KTtcbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTEwNj1zdGF0aWMgaW5saW5lIGludCBuZXRkZXZfaXNfbG9ja2VkX29wc19jb21wYXQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMTA3LXtcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6MTA4Olx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTEwOS1cdFx0cmV0dXJuIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZkZXYtXHUwMDNlbG9jayk7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oPTQzPXN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHgge1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaC05MS0gKlxuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oOjkyOiAqIE9wcyBhcmUgY2FsbGVkIHVuZGVyIHRoZSBpbnN0YW5jZSBsb2NrIGlmIG5ldGRldl9uZWVkX29wc19sb2NrKClcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaC05My0gKiByZXR1cm5zIHRydWUsIG90aGVyd2lzZSB1bmRlciBydG5sX2xvY2suXG4tLVxuaW9fdXJpbmcvemNyeC5jPTgxNz1zdGF0aWMgaW50IHpjcnhfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBpb196Y3J4X2lmcSAqaWZxLFxuLS1cbmlvX3VyaW5nL3pjcnguYy04MzUtXHQgKi9cbmlvX3VyaW5nL3pjcnguYzo4MzY6XHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGlmcS1cdTAwM2VuZXRkZXYpKSB7XG5pb191cmluZy96Y3J4LmMtODM3LVx0XHRyZXQgPSAtRU9QTk9UU1VQUDtcbi0tXG5uZXQvY29yZS9kZXYuYz0xMTMyNz1pbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2NvcmUvZGV2LmMtMTEzODEtXG5uZXQvY29yZS9kZXYuYzoxMTM4MjpcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIFx1MDAyNlx1MDAyNlxubmV0L2NvcmUvZGV2LmMtMTEzODMtXHQgICAgZGV2LVx1MDAzZW5ldGRldl9vcHMtXHUwMDNlbmRvX3NldF9yeF9tb2RlIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9jb3JlL2Rldi5jPTEyMzcwPXZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCxcbi0tXG5uZXQvY29yZS9kZXYuYy0xMjQwMy1cdFx0XHRjb250aW51ZTtcbm5ldC9jb3JlL2Rldi5jOjEyNDA0Olx0XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSkge1xubmV0L2NvcmUvZGV2LmMtMTI0MDUtXHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZkZXYtXHUwMDNlY2xvc2VfbGlzdCwgXHUwMDI2Y2xvc2VfaGVhZCk7XG4tLVxubmV0L2NvcmUvZGV2LmMtMTI0MTItXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgaGVhZCwgdW5yZWdfbGlzdCkge1xubmV0L2NvcmUvZGV2LmM6MTI0MTM6XHRcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbm5ldC9jb3JlL2Rldi5jLTEyNDE0LVx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZGV2LVx1MDAzZWNsb3NlX2xpc3QsIFx1MDAyNmNsb3NlX2hlYWQpO1xuLS1cbm5ldC9jb3JlL2Rldi5jPTEyNTMwPWludCBfX2Rldl9jaGFuZ2VfbmV0X25hbWVzcGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L2NvcmUvZGV2LmMtMTI2MjAtXG5uZXQvY29yZS9kZXYuYzoxMjYyMTpcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbm5ldC9jb3JlL2Rldi5jLTEyNjIyLVx0XHRuZXRkZXZfbG9jayhkZXYpO1xuLS1cbm5ldC9jb3JlL2Rldi5jLTEyNjkxLVx0ZGV2LVx1MDAzZW1vdmluZ19ucyA9IGZhbHNlO1xubmV0L2NvcmUvZGV2LmM6MTI2OTI6XHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5uZXQvY29yZS9kZXYuYy0xMjY5My1cdFx0bmV0ZGV2X3VubG9jayhkZXYpO1xuLS1cbm5ldC9jb3JlL2Rldi5oPTE5MD1zdGF0aWMgaW5saW5lIHZvaWQgbmV0aWZfc2V0X3VwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgdmFsdWUpXG4tLVxubmV0L2NvcmUvZGV2LmgtMTk2LVxubmV0L2NvcmUvZGV2Lmg6MTk3Olx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxubmV0L2NvcmUvZGV2LmgtMTk4LVx0XHRuZXRkZXZfbG9jayhkZXYpO1xubmV0L2NvcmUvZGV2LmgtMTk5LVx0ZGV2LVx1MDAzZXVwID0gdmFsdWU7XG5uZXQvY29yZS9kZXYuaDoyMDA6XHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5uZXQvY29yZS9kZXYuaC0yMDEtXHRcdG5ldGRldl91bmxvY2soZGV2KTtcbi0tXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jPTEzNjI9dm9pZCBfX2Rldl9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmMtMTM3NC1cdGlmIChvcHMtXHUwMDNlbmRvX3NldF9yeF9tb2RlX2FzeW5jIHx8IG9wcy1cdTAwM2VuZG9fY2hhbmdlX3J4X2ZsYWdzIHx8XG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jOjEzNzU6XHQgICAgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSkge1xubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYy0xMzc2LVx0XHRuZXRpZl9yeF9tb2RlX3F1ZXVlKGRldik7XG4tLVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYz0xMDEzPWludCBuZXRkZXZfbmxfYmluZF9yeF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy0xMDU2LVx0XHRlcnIgPSAtRU5PREVWO1xubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxMDU3Olx0ZWxzZSBpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKG5ldGRldikpXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTEwNTgtXHRcdGVyciA9IC1FT1BOT1RTVVBQO1xuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI0NT1pbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjUwLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjUxOlx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjUyLVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYz0zNjEwPV9fZGV2X2V0aHRvb2woc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaWZyZXEgKmlmciwgdm9pZCBfX3VzZXIgKnVzZXJhZGRyLFxuLS1cbm5ldC9ldGh0b29sL2lvY3RsLmMtMzYyMS1cbm5ldC9ldGh0b29sL2lvY3RsLmM6MzYyMjpcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIHx8XG5uZXQvZXRodG9vbC9pb2N0bC5jLTM2MjMtXHRcdCAgICBldGh0b29sX2NtZF9jaGFuZ2VzX2ZlYXR1cmVzKGV0aGNtZCkgfHxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTA3PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5jLTUzOS1cdGlmIChyZXFfaW5mby1cdTAwM2VkZXYpIHtcbm5ldC9ldGh0b29sL25ldGxpbmsuYzo1NDA6XHRcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhyZXFfaW5mby1cdTAwM2VkZXYpIHx8XG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtNTQxLVx0XHRcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKHJlcV9pbmZvLVx1MDAzZWRldiwgY21kKTtcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTk0PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kdW1wX29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy02MDgtXHRldGhubF9pbml0X3JlcGx5X2RhdGEoY3R4LVx1MDAzZXJlcGx5X2RhdGEsIGN0eC1cdTAwM2VvcHMsIGRldik7XG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6NjA5Olx0bmVlZF9ydG5sID0gIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikgfHxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy02MTAtXHRcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKGRldiwgY3R4LVx1MDAzZW9wcy1cdTAwM2VyZXF1ZXN0X2NtZCk7XG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5jPTkwMD1zdGF0aWMgaW50IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtOTMwLVx0ZGV2ID0gcmVxX2luZm8tXHUwMDNlZGV2O1xubmV0L2V0aHRvb2wvbmV0bGluay5jOjkzMTpcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIHx8XG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtOTMyLVx0XHQgICAgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubChkZXYsIGNtZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3MzEKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgaW9fdXJpbmcgWmVyby1Db3B5IFJYIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgbWFraW5nIGEgY3J1Y2lhbCBmdW5jdGlvbmFsIGNoYW5nZSByZWdhcmRpbmcgYGlvX3VyaW5nYCB6ZXJvLWNvcHkgUlggKHpjcngpLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgLCB3aGVyZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNoZWNrIHVzaW5nIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AuIEVzc2VudGlhbGx5LCB6Y3J4IHdpbGwgbm93ICpvbmx5KiB3b3JrIGlmIHRoZSBuZXR3b3JrIGRldmljZSB1dGlsaXplcyB0aGUgbmV3IG9wcyBsb2NraW5nIG1vZGVsLiBUaGlzIGlzIGltcG9ydGFudC4KCkdpdmVuIHRoaXMgZnVuY3Rpb25hbGl0eSBzaGlmdCwgbXkgZmlyc3QgdGhvdWdodCBpcyAmIzM0O1dvcnRoRnV6emluZz10cnVlJiMzNDsuIEl0JiMzOTtzIGEgY2xlYXIgY2hhbmdlIGluIGJlaGF2aW9yIGFuZCBhIGdvb2QgcGxhY2UgdG8gZm9jdXMgZnV6emluZyBlZmZvcnRzLgoKSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMsIHBhcnRpY3VsYXJseSBgaW9fcmVnaXN0ZXJfemNyeGAgYW5kIGB6Y3J4X3JlZ2lzdGVyX25ldGRldmAuIEdpdmVuIHRoYXQgYHpjcnhfcmVnaXN0ZXJfbmV0ZGV2YCBpcyBzdGF0aWMsIG15IGF0dGVudGlvbiBpcyBsaWtlbHkgYmV0dGVyIGRpcmVjdGVkIGF0IGBpb19yZWdpc3Rlcl96Y3J4YCBhcyB0aGUga2V5IGVudHJ5IHBvaW50LgoKTm93LCBmb3IgZW5hYmxpbmcgdGhpcyBmdW5jdGlvbmFsaXR5LiBUaGUgbmVjZXNzYXJ5IGNvbmZpZ3MgYXJlIGBJT19VUklOR19aQ1JYYCwgYElPX1VSSU5HYCwgYFBBR0VfUE9PTGAsIGBJTkVUYCwgYW5kIGBORVRfUlhfQlVTWV9QT0xMYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSB3ZWxsIHVuZGVyc3Rvb2QgYW5kIGV4cGxpY2l0bHkgY29uc2lkZXJlZCBmb3IgYW55IHRlc3RpbmcuCgpXYWl0LCBgSU9fVVJJTkdfWkNSWGAgaXMgYGRlZl9ib29sIHlgIGluIGBpb191cmluZy9LY29uZmlnYC4gVGhhdCBtZWFucyBpdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQsICppZiogdGhlIGRlcGVuZGVuY2llcyBhcmUgc2F0aXNmaWVkLiBJdHMgZGVwZW5kZW5jaWVzIGFyZSBgSU9fVVJJTkdgLCBgUEFHRV9QT09MYCwgYElORVRgLCBhbmQgYE5FVF9SWF9CVVNZX1BPTExgLiBgTkVUX1JYX0JVU1lfUE9MTGAgaXMgYWxzbyBlZmZlY3RpdmVseSBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gbW9zdCBjYXNlcywgYmVpbmcgYGJvb2xgLCBgZGVmYXVsdCB5IGlmICFQUkVFTVBUX1JUIHx8IChQUkVFTVBUX1JUICZhbXA7JmFtcDsgIU5FVENPTlNPTEUpYC4gSG93ZXZlciwgaXTigJlzIHN0aWxsIGdvb2QgdG8gZXhwbGljaXRseSBsaXN0IGFsbCBvZiB0aGUgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLgoKSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSBmb3IgYHpjcnhfcmVnaXN0ZXJfbmV0ZGV2YCBpbiBgaW9fdXJpbmcvemNyeC5jYCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBpbXBsZW1lbnRhdGlvbiBiZXR0ZXIuIFRoaXMgd2lsbCBjbGFyaWZ5IGhvdyB0aGUgbG9ja2luZyBjaGVjayBpbnRlcmFjdHMgd2l0aCB0aGUgZXhpc3RpbmcgY29kZSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6Y3J4X3JlZ2lzdGVyX25ldGRldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2lvX3VyaW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy96Y3J4LmM9NzU1PXN0YXRpYyBpbnQgaW1wb3J0X3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG4tLVxuaW9fdXJpbmcvemNyeC5jLTgxNi1cbmlvX3VyaW5nL3pjcnguYzo4MTc6c3RhdGljIGludCB6Y3J4X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgaW9femNyeF9pZnEgKmlmcSxcbmlvX3VyaW5nL3pjcnguYy04MTgtXHRcdFx0XHRzdHJ1Y3QgaW9fdXJpbmdfemNyeF9pZnFfcmVnICpyZWcsXG4tLVxuaW9fdXJpbmcvemNyeC5jPTg5ND1pbnQgaW9fcmVnaXN0ZXJfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbi0tXG5pb191cmluZy96Y3J4LmMtOTkyLVx0aWYgKCEocmVnLmZsYWdzIFx1MDAyNiBaQ1JYX1JFR19OT0RFVikpIHtcbmlvX3VyaW5nL3pjcnguYzo5OTM6XHRcdHJldCA9IHpjcnhfcmVnaXN0ZXJfbmV0ZGV2KGlmcSwgXHUwMDI2cmVnLCBcdTAwMjZhcmVhKTtcbmlvX3VyaW5nL3pjcnguYy05OTQtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODI2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBaQ1JYIERyaXZlciBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHpjcnhfcmVnaXN0ZXJfbmV0ZGV2YCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGZsYWdnZWQgYXMgYHN0YXRpY2AuIFRoYXQgbWVhbnMgaXQmIzM5O3MgaW50ZXJuYWwgdG8gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggaXMgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uICBOb3csIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIGRyaXZlciwgdGhlIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIG91dHNpZGUsIHNlZW1zIHRvIGJlIGBpb19yZWdpc3Rlcl96Y3J4YC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcywgKmlzKiBgaW9fcmVnaXN0ZXJfemNyeGAgZXhwb3J0ZWQgZm9yIG90aGVyIG1vZHVsZXMgdG8gdXNlLCBvciBpcyBpdCBhbHNvIGNvbmZpbmVkIHRvIHRoZSBgaW9fdXJpbmcvcmVnaXN0ZXIuY2AgZmlsZSBsaWtlIGB6Y3J4X3JlZ2lzdGVyX25ldGRldmA/IEtub3dpbmcgdGhhdCB3aWxsIGRldGVybWluZSB0aGUgZ2VuZXJhbCBhY2Nlc3Mgb2YgdGhlIGZ1bmN0aW9uYWxpdHkuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgdmlzaWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW9fcmVnaXN0ZXJfemNyeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2lvX3VyaW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy9yZWdpc3Rlci5jPTc1MD1zdGF0aWMgaW50IF9faW9fdXJpbmdfcmVnaXN0ZXIoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHVuc2lnbmVkIG9wY29kZSxcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jLTk0MS1cdFx0XHRicmVhaztcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6OTQyOlx0XHRyZXQgPSBpb19yZWdpc3Rlcl96Y3J4KGN0eCwgYXJnKTtcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtOTQzLVx0XHRicmVhaztcbi0tXG5pb191cmluZy96Y3J4LmM9ODY3PXN0YXRpYyBpbnQgemNyeF92YWxpZGF0ZV9ub3RpZl9zdGF0cyhzdHJ1Y3QgaW9femNyeF9pZnEgKmlmcSxcbi0tXG5pb191cmluZy96Y3J4LmMtODkzLVxuaW9fdXJpbmcvemNyeC5jOjg5NDppbnQgaW9fcmVnaXN0ZXJfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbmlvX3VyaW5nL3pjcnguYy04OTUtXHRcdCAgICAgc3RydWN0IGlvX3VyaW5nX3pjcnhfaWZxX3JlZyBfX3VzZXIgKmFyZylcbi0tXG5pb191cmluZy96Y3J4Lmg9ODg9aW50IGlvX3pjcnhfY3RybChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZywgdW5zaWduZWQgbnJfYXJnKTtcbmlvX3VyaW5nL3pjcnguaDo4OTppbnQgaW9fcmVnaXN0ZXJfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbmlvX3VyaW5nL3pjcnguaC05MC1cdFx0XHQgc3RydWN0IGlvX3VyaW5nX3pjcnhfaWZxX3JlZyBfX3VzZXIgKmFyZyk7XG4tLVxuaW9fdXJpbmcvemNyeC5oPTk2PXN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICppb196Y3J4X2dldF9yZWdpb24oc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG4tLVxuaW9fdXJpbmcvemNyeC5oLTk4LSNlbHNlXG5pb191cmluZy96Y3J4Lmg6OTk6c3RhdGljIGlubGluZSBpbnQgaW9fcmVnaXN0ZXJfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbmlvX3VyaW5nL3pjcnguaC0xMDAtXHRcdFx0XHQgICBzdHJ1Y3QgaW9fdXJpbmdfemNyeF9pZnFfcmVnIF9fdXNlciAqYXJnKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU1NAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKk5hcnJvd2luZyB0aGUgSW52ZXN0aWdhdGlvbioqCgpBbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBpb19yZWdpc3Rlcl96Y3J4YCBpcyB0aGUga2V5IGZ1bmN0aW9uIHRvIHJlYWxseSBob25lIGluIG9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHN5c3RlbS4gSSBzaG91bGQgZGVmaW5pdGVseSBzZWUgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQuIEJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgc2hvdWxkIGRvIGEgcXVpY2sgc3dlZXAgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBvYnZpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIGNoZWNrIGZvciBgSU9fVVJJTkdgLCBgUEFHRV9QT09MYCwgYElORVRgLCBhbmQgYE5FVF9SWF9CVVNZX1BPTExgIOKAkyB0aGVzZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzIHdoZW4geW91JiMzOTtyZSBkZWFsaW5nIHdpdGggSS9PIGFuZCBuZXR3b3JraW5nIHBlcmZvcm1hbmNlLiBKdXN0IHdhbnQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IHBhcnRpY3VsYXJseSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGBQQUdFX1BPT0xgIGNvbmZpZ3VyYXRpb24sIHRoYXQgc2VlbXMgbGlrZSBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZSB2ZXJ5IHJlbGF0ZWQgdG8gdGhlIHpjcnggZnVuY3Rpb25hbGl0eSwgaWYgdGhpcyBjb2RlIGlzIGRlc2lnbmVkIHRoZSB3YXkgSSBleHBlY3QgaXQgdG8gYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQQUdFX1BPT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NDg3PWNvbmZpZyBORVRfREVWTElOS1xuLS1cbm5ldC9LY29uZmlnLTQ5MC1cbm5ldC9LY29uZmlnOjQ5MTpjb25maWcgUEFHRV9QT09MXG5uZXQvS2NvbmZpZy00OTItXHRib29sXG5uZXQvS2NvbmZpZy00OTMtXG5uZXQvS2NvbmZpZzo0OTQ6Y29uZmlnIFBBR0VfUE9PTF9TVEFUU1xubmV0L0tjb25maWctNDk1LVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTU4CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIFBBR0VfUE9PTCBEZXBlbmRlbmN5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBjb25maWd1cmF0aW9uLCBhbmQgSSBzZWUgdGhpcyBgUEFHRV9QT09MYCBvcHRpb24g4oCTIGl0JiMzOTtzIGEgYm9vbGVhbiwgdHlwaWNhbGx5IHNvbWV0aGluZyBkcml2ZXJzIGRlY2lkZSBvbi4gSG1tLCBidXQgdGhlbiBJIG5vdGljZSBgSU9fVVJJTkdfWkNSWGAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgUEFHRV9QT09MYC4gVGhhdCBtZWFucyBpZiBgUEFHRV9QT09MYCBpc24mIzM5O3QgZW5hYmxlZCwgYElPX1VSSU5HX1pDUlhgIGlzIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQuCgpBbHJpZ2h0LCBzbyB0aGUgbmF0dXJhbCBpbmNsaW5hdGlvbiBpcyB0byB0aGluayBtYXliZSB3ZSBzaG91bGQganVzdCAqZm9yY2UqIGBQQUdFX1BPT0xgIG9uLCByaWdodD8gQnV0IHdhaXQgYSBtaW51dGUuIGBQQUdFX1BPT0xgIGlzIGEgYm9vbGVhbiB3aXRob3V0IGEgcHJvbXB0LiBUaGF0IGdlbmVyYWxseSBtZWFucyBpdCBjYW4gKm9ubHkqIGJlIHNlbGVjdGVkIGJ5IGFub3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb24sIG5vdCBkaXJlY3RseSBlbmFibGVkIGluIHRoZSBgLmNvbmZpZ2AgZmlsZS4gSSBjYW4mIzM5O3QganVzdCBzbGFwIGEgYFlgIG9uIGl0LgoKU28sIHRoZSBuZXh0IG9idmlvdXMgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIGV2ZW4gKnBvc3NpYmxlKiB0byBlbmFibGUgaXQgZGlyZWN0bHkuIEdpdmVuIHRoZSBsYWNrIG9mIGEgcHJvbXB0LCBJJiMzOTttIGZhaXJseSBjZXJ0YWluIEkgY2FuJiMzOTt0IGVuYWJsZSBgUEFHRV9QT09MYCBkaXJlY3RseSBpbiB0aGUgYC5jb25maWdgIHVubGVzcyBzb21ldGhpbmcgZWxzZSBzZWxlY3RzIGl0IGZvciBtZS4gVGhhdCYjMzk7cyB0aGUgcXVlc3Rpb24gSSBoYXZlIHRvIGFuc3dlciBub3cuIEkgbmVlZCB0byBzZWUgKndoYXQqIGV4YWN0bHkgc2VsZWN0cyBgUEFHRV9QT09MYCwgYW5kIHRoZW4gdHJhY2UgaG93IHRvIG1ha2Ugc3VyZSB0aGF0IHdoYXRldmVyJiMzOTtzIHNlbGVjdGluZyBpdCBpcyBlbmFibGVkLCBvciBpZiBpdCBtYWtlcyBzZW5zZSB0byBlbmFibGUgaXQgaW4gdGhpcyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgUEFHRV9QT09MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NDM1PWNvbmZpZyBWRVRIXG5kcml2ZXJzL25ldC9LY29uZmlnLTQzNi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZXRoZXJuZXQgcGFpciBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM3Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00NDM9Y29uZmlnIFZJUlRJT19ORVRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0Ny1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ4Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0Ny1cdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXG5kcml2ZXJzL25ldC9LY29uZmlnOjU0ODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ5LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4Ny1cdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4ODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNTg5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvS2NvbmZpZzo2MTE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMi1cdHNlbGVjdCBORVRfU0hBUEVSXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc9MTg9Y29uZmlnIE5FVF9BSVJPSEFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMS1cdHNlbGVjdCBORVRfQUlST0hBX05QVVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc9MTg9Y29uZmlnIEFMSUJBQkFfRUVBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiA2NEJJVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9NzI9Y29uZmlnIEJDTUdFTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04MC1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6ODE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgyLVx0c2VsZWN0IEJST0FEQ09NX1BIWSBpZiBBUkNIX0JDTTI4MzVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTIwNz1jb25maWcgQk5YVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjEzLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIxNDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjE1LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjU4PWNvbmZpZyBCTkdFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjEtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjYyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjMtXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjY5PWNvbmZpZyBCQ01BU1Bcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI3NS1cdHNlbGVjdCBNRElPX0JDTV9VTklNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6Mjc2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNzctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnPTY9Y29uZmlnIEVOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctOC1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy0xMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnPTE5PWNvbmZpZyBUU05FUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjMtXHRzZWxlY3QgUEhZTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnOjI0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz0yMz1jb25maWcgRkVDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzEtXHRzZWxlY3QgRklYRURfUEhZXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzozMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTMzLVx0aW1wbHkgUEFHRV9QT09MX1NUQVRTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc9MTg9Y29uZmlnIEdWRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz05MT1jb25maWcgSE5TM1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk0LVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzo5NTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTE0Nz1jb25maWcgSElCTUNHRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1My1cdHNlbGVjdCBSRUFMVEVLX1BIWVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6MTU0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTU1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZz02PWNvbmZpZyBISU5JQzNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTQtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc6MTU6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWc9ND1jb25maWcgTElCRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZy01LVx0dHJpc3RhdGUgXCYjMzQ7Q29tbW9uIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aClcJiMzNDsgaWYgQ09NUElMRV9URVNUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZzo2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWctNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9NTk9Y29uZmlnIE1WTkVUQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02My1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjU6XHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTg2PWNvbmZpZyBNVlBQMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MC1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6OTE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0zMT1jb25maWcgT0NURU9OVFgyX1BGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozNTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzYtXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMjAtXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MjE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMy1cdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnPTY9Y29uZmlnIE1MWDRfRU5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctOS1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZzoxMDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy0xMS1cdHNlbGVjdCBNTFg0X0NPUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0yOT1jb25maWcgTUxYNV9DT1JFX0VOXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzEtXHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IEVUSEVSTkVUIFx1MDAyNlx1MDAyNiBJTkVUIFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IE1MWDVfQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzozMzpcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTM0LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc9MzM9Y29uZmlnIE1MWFNXX1BDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzUtXHRkZXBlbmRzIG9uIFBDSSBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBNTFhTV19DT1JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjM2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNy1cdGRlZmF1bHQgbVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjctXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOS1cdHNlbGVjdCBQQ1NfWFBDU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc9MT1jb25maWcgTEFOOTY2WF9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTgtXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy0xMC1cdHNlbGVjdCBWQ0FQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTI4PWNvbmZpZyBMQU45NjlYX1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMC1cdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjMxOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE4PWNvbmZpZyBNSUNST1NPRlRfTUFOQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTIzLVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjI0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjUtXHRzZWxlY3QgTkVUX1NIQVBFUlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc9MjA9Y29uZmlnIElPTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNS1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI3LVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTMtXHRzZWxlY3QgQ1JDMzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMTQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz0yOT1jb25maWcgUkFWQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNS1cdHNlbGVjdCBNRElPX0JJVEJBTkdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZzozNjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNy1cdHNlbGVjdCBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZz0yNT1jb25maWcgU05JX05FVFNFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnLTI4LVx0c2VsZWN0IFBIWUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc6Mjk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0zMC1cdHNlbGVjdCBNSUlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTgtXHRzZWxlY3QgUENTX1hQQ1NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAtXHRzZWxlY3QgUEhZTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnPTI2PWNvbmZpZyBURUhVVElfVE40MFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTI4LVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnOjI5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzAtXHRzZWxlY3QgRldfTE9BREVSXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz01MD1jb25maWcgVElfQ1BTV1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTUtXHRzZWxlY3QgTUZEX1NZU0NPTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo1NjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTctXHRzZWxlY3QgUkVHTUFQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz02NT1jb25maWcgVElfQ1BTV19TV0lUQ0hERVZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTY5LVx0ZGVwZW5kcyBvbiBUSV9DUFRTIHx8ICFUSV9DUFRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjcwOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03MS1cdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTk2PWNvbmZpZyBUSV9LM19BTTY1X0NQU1dfTlVTU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAxLVx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTAyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDMtXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTIwND1jb25maWcgVElfSUNTU0dfUFJVRVRIX1NSMVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjA4LVx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIwOTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjEwLVx0ZGVwZW5kcyBvbiBQUlVfUkVNT1RFUFJPQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjEtXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI9Y29uZmlnIE1UNzZfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNS1cbi0tXG5rZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTM1LVx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXG5rZXJuZWwvYnBmL0tjb25maWc6MzY6XHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxua2VybmVsL2JwZi9LY29uZmlnLTM3LVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NjQzCgkJCQkJCQlvdXRwdXQ6IDEyMQoJCQkJCQkJdGhvdWdodHM6IDQ5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFplcm8tQ29weSBSWCBQYXRjaCBmb3IgaW9fdXJpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGBQQUdFX1BPT0xgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHNlZW1zIHRvIGJlIGVuYWJsZWQgZnJlcXVlbnRseSBkdWUgdG8gZGVwZW5kZW5jaWVzIGZyb20gYEJQRl9TWVNDQUxMYCwgYFZFVEhgLCBhbmQgYE5FVERFVlNJTWAsIHdoaWNoIGFyZSBjb21tb24gaW4gc3l6a2FsbGVyIGNvbmZpZ3MuIEkgcmVhbGl6ZSBJIGRvbiYjMzk7dCBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkIGBQQUdFX1BPT0xgIHRvIGBFbmFibGVDb25maWdzYCwgYnV0IEkgY2FuIHNlZSBpdCB3b3VsZG4mIzM5O3QgaHVydCwgdGhvdWdoIHNpbmNlIGl0JiMzOTtzIGEgYm9vbCB3aXRob3V0IGEgcHJvbXB0LCBpdCBtaWdodCBub3QgYmUgaWRlYWwuIEkgKmNvdWxkKiBhZGQgYFZFVEhgIG9yIGBCUEZfU1lTQ0FMTGAgaWYgSSB3YW50IHRvIGJlICpzdXJlKiB0byB0cmlnZ2VyIGl0LCBidXQgYWN0dWFsbHkgYElPX1VSSU5HX1pDUlhgIGRpcmVjdGx5IGRlcGVuZHMgb24gYFBBR0VfUE9PTGAsIHdoaWNoIGlzIGEgZ29vZCByZW1pbmRlci4KClNpbmNlIEkmIzM5O20gbG9va2luZyBhdCBpb191cmluZyB6ZXJvLWNvcHkgUlgsIEkmIzM5O2xsIGRlZmluaXRlbHkgbGlzdCBgSU9fVVJJTkdgIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAgaW4gYEVuYWJsZUNvbmZpZ3NgLiBBbHRob3VnaCBgSU9fVVJJTkdfWkNSWGAgaXMgYSBgZGVmX2Jvb2wgeWAsIGFuZCBub3QgdXNlci1zZWxlY3RhYmxlLCBsaXN0aW5nIGl0IGlzIGZpbmUuIEl0IG1pZ2h0IGV2ZW4gYmUgdXNlZnVsIGZvciB0aGUgZnV6emVyIHRvIGtub3cgYWJvdXQgdGhpcyBpbXBsaWNpdCBkZXBlbmRlbmN5LgoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBwYXRjaC4gSSYjMzk7bSBzZWVpbmcgaXQgY2hlY2tzIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2Agd2l0aGluIGB6Y3J4X3JlZ2lzdGVyX25ldGRldmAsIHdoaWNoIGlzIGNhbGxlZCB0aHJvdWdoIGBpb19yZWdpc3Rlcl96Y3J4YCwgYW5kIHRoZSBwYXRjaCByZWplY3RzIG5ldGRldnMgdGhhdCBkb24mIzM5O3QgdXNlIHRoZSBvcHMgbG9jay4gVGhpcyBpcyBhICpmdW5jdGlvbmFsIGNoYW5nZSouIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGBpb191cmluZ2AgemVyby1jb3B5IFJYIHJlZ2lzdHJhdGlvbiBwYXRoLCBhbmQgdGhlcmVmb3JlLCBJICptdXN0KiBmdXp6IHRoaXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enplciBjYW4gaGFuZGxlIGRpZmZlcmVudCBuZXR3b3JrIGRldmljZSB0eXBlcyBhbmQgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSByZWdyZXNzaW9ucyBvciBtZW1vcnkgbGVha3Mgb24gZXJyb3IgcGF0aHMuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrOyBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgIGlzIGluZGVlZCBzdGF0aWMsIHdoaWNoIG1lYW5zIHRoYXQgYGlvX3JlZ2lzdGVyX3pjcnhgIGlzIHRoZSAqb25seSogZW50cnkgcG9pbnQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSwgc28gdGhhdCYjMzk7cyB0aGUgY29ycmVjdCBzeW1ib2wgdG8gZm9jdXMgb24uIExvb2tzIGxpa2UgYGlvX3JlZ2lzdGVyX3pjcnhgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIEkgbmVlZCB0byBsb29rIGF0IGhlcmUuIEFscmlnaHQsIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU9fVVJJTkcmIzM0OywKICAgICYjMzQ7TkVUX1JYX0JVU1lfUE9MTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lvX3JlZ2lzdGVyX3pjcngmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGluIHRoZSBpb191cmluZyB6ZXJvLWNvcHkgUlggcmVnaXN0cmF0aW9uIHBhdGggdG8gcmVqZWN0IG5ldHdvcmsgZGV2aWNlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHRoZSBuZXRkZXYgb3BzIGxvY2tpbmcgbW9kZWwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBzdWJzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBlcnJvciBwYXRoIGlzIGhhbmRsZWQgY29ycmVjdGx5IHdpdGhvdXQgbWVtb3J5IGxlYWtzIG9yIG90aGVyIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT19VUklORyYjMzQ7LAogICAgJiMzNDtORVRfUlhfQlVTWV9QT0xMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fcmVnaXN0ZXJfemNyeCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgaW4gdGhlIGlvX3VyaW5nIHplcm8tY29weSBSWCByZWdpc3RyYXRpb24gcGF0aCB0byByZWplY3QgbmV0d29yayBkZXZpY2VzIHRoYXQgZG8gbm90IHN1cHBvcnQgdGhlIG5ldGRldiBvcHMgbG9ja2luZyBtb2RlbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGlvX3VyaW5nIHN1YnN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgd2l0aG91dCBtZW1vcnkgbGVha3Mgb3Igb3RoZXIgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzoyMi41NDQ1MDcyMTJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk3NDc4MjE5NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9fVVJJTkdcIixcbiAgICBcIk5FVF9SWF9CVVNZX1BPTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpb19yZWdpc3Rlcl96Y3J4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGluIHRoZSBpb191cmluZyB6ZXJvLWNvcHkgUlggcmVnaXN0cmF0aW9uIHBhdGggdG8gcmVqZWN0IG5ldHdvcmsgZGV2aWNlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHRoZSBuZXRkZXYgb3BzIGxvY2tpbmcgbW9kZWwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBzdWJzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBlcnJvciBwYXRoIGlzIGhhbmRsZWQgY29ycmVjdGx5IHdpdGhvdXQgbWVtb3J5IGxlYWtzIG9yIG90aGVyIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzoyMi41NDQ1MTQxODJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNTc0NTgzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY5NDcyOGZhMjgzZmYyYTdhYjRiM2FhZWU4MjgzZGRmZGVjY2I0ZDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAxNToyMzoyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pb191cmluZy96Y3J4LmMgYi9pb191cmluZy96Y3J4LmNcXG5pbmRleCBmMTQ2NGVhOGNhNjRhLi4yZWJhN2Q0ZTQ0ODNmIDEwMDY0NFxcbi0tLSBhL2lvX3VyaW5nL3pjcnguY1xcbisrKyBiL2lvX3VyaW5nL3pjcnguY1xcbkBAIC0xNyw2ICsxNyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZGV2X3J4X3F1ZXVlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvdGNwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvcnBzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZGV2X2xvY2suaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2N0cmFjZS9ldmVudHMvcGFnZV9wb29sLmhcXHUwMDNlXFxuIFxcbkBAIC04MjgsNiArODI5LDE1IEBAIHN0YXRpYyBpbnQgemNyeF9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGlvX3pjcnhfaWZxICppZnEsXFxuIFxcbiBcXHRuZXRkZXZfaG9sZChpZnEtXFx1MDAzZW5ldGRldiwgXFx1MDAyNmlmcS1cXHUwMDNlbmV0ZGV2X3RyYWNrZXIsIEdGUF9LRVJORUwpO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KCkgcmVxdWlyZXMgdGhlIG5ldGRldiBvcHMgbG9ja2luZ1xcbitcXHQgKiBtb2RlbC4gUmVqZWN0IGRldmljZXMgd2hpY2ggZG8gbm90IHN1cHBvcnQgaXQuXFxuK1xcdCAqL1xcbitcXHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGlmcS1cXHUwMDNlbmV0ZGV2KSkge1xcbitcXHRcXHRyZXQgPSAtRU9QTk9UU1VQUDtcXG4rXFx0XFx0Z290byBuZXRkZXZfcHV0X3VubG9jaztcXG4rXFx0fVxcbitcXG4gXFx0aWZxLVxcdTAwM2VkZXYgPSBuZXRkZXZfcXVldWVfZ2V0X2RtYV9kZXYoaWZxLVxcdTAwM2VuZXRkZXYsIGlmX3J4cSwgTkVUREVWX1FVRVVFX1RZUEVfUlgpO1xcbiBcXHRpZiAoIWlmcS1cXHUwMDNlZGV2KSB7XFxuIFxcdFxcdHJldCA9IC1FT1BOT1RTVVBQO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzoyMi45NzEwNzE1ODlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDkzMjEyNDkxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9fVVJJTkdcIixcbiAgICBcIk5FVF9SWF9CVVNZX1BPTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpb19yZWdpc3Rlcl96Y3J4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGluIHRoZSBpb191cmluZyB6ZXJvLWNvcHkgUlggcmVnaXN0cmF0aW9uIHBhdGggdG8gcmVqZWN0IG5ldHdvcmsgZGV2aWNlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHRoZSBuZXRkZXYgb3BzIGxvY2tpbmcgbW9kZWwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBzdWJzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBlcnJvciBwYXRoIGlzIGhhbmRsZWQgY29ycmVjdGx5IHdpdGhvdXQgbWVtb3J5IGxlYWtzIG9yIG90aGVyIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2OTQ3MjhmYTI4M2ZmMmE3YWI0YjNhYWVlODI4M2RkZmRlY2NiNGQxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAxNToyMzoyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3pjcnguYyBiL2lvX3VyaW5nL3pjcnguY1xuaW5kZXggZjE0NjRlYThjYTY0YS4uMmViYTdkNGU0NDgzZiAxMDA2NDRcbi0tLSBhL2lvX3VyaW5nL3pjcnguY1xuKysrIGIvaW9fdXJpbmcvemNyeC5jXG5AQCAtMTcsNiArMTcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRkZXZfcnhfcXVldWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC90Y3AuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9ycHMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY25ldC9uZXRkZXZfbG9jay5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjdHJhY2UvZXZlbnRzL3BhZ2VfcG9vbC5oXHUwMDNlXG4gXG5AQCAtODI4LDYgKzgyOSwxNSBAQCBzdGF0aWMgaW50IHpjcnhfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBpb196Y3J4X2lmcSAqaWZxLFxuIFxuIFx0bmV0ZGV2X2hvbGQoaWZxLVx1MDAzZW5ldGRldiwgXHUwMDI2aWZxLVx1MDAzZW5ldGRldl90cmFja2VyLCBHRlBfS0VSTkVMKTtcbiBcbitcdC8qXG4rXHQgKiBuZXRkZXZfcXVldWVfZ2V0X2RtYV9kZXYoKSByZXF1aXJlcyB0aGUgbmV0ZGV2IG9wcyBsb2NraW5nXG4rXHQgKiBtb2RlbC4gUmVqZWN0IGRldmljZXMgd2hpY2ggZG8gbm90IHN1cHBvcnQgaXQuXG4rXHQgKi9cbitcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soaWZxLVx1MDAzZW5ldGRldikpIHtcbitcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4rXHRcdGdvdG8gbmV0ZGV2X3B1dF91bmxvY2s7XG4rXHR9XG4rXG4gXHRpZnEtXHUwMDNlZGV2ID0gbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KGlmcS1cdTAwM2VuZXRkZXYsIGlmX3J4cSwgTkVUREVWX1FVRVVFX1RZUEVfUlgpO1xuIFx0aWYgKCFpZnEtXHUwMDNlZGV2KSB7XG4gXHRcdHJldCA9IC1FT1BOT1RTVVBQO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjM6MjIuOTcxMDcyODY5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ4MzUzNTEyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGlvX3VyaW5nIHpjcnggUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgaW9fdXJpbmcvemNyeC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBjaGFuZ2VzIGluIGB6Y3J4X3JlZ2lzdGVyX25ldGRldmAuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGNoZWNrLiBJdCBsb29rcyBsaWtlIGl04oCZcyBlbnN1cmluZyB0aGF0IHRoZSBuZXR3b3JrIGRldmljZSBzdXBwb3J0cyB0aGUgbmV0ZGV2IG9wcyBsb2NraW5nIG1vZGVsIGJlZm9yZSBwcm9jZWVkaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBjaGVjayBpcyBuZWNlc3NhcnkuIFNwZWNpZmljYWxseSwgdGhlIGNvZGUgYXBwZWFycyB0byBiZSB1c2luZyBgbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KClgIGFuZCB0aGlzIGZ1bmN0aW9uIHJlcXVpcmVzIHRoZSBuZXRkZXYgb3BzIGxvY2tpbmcgbW9kZWwuIElmIHRoZSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IGl0LCB0aGUgcGF0Y2ggcmlnaHRseSByZWplY3RzIGl0IHdpdGggYW4gYC1FT1BOT1RTVVBQYCBlcnJvci5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGdldCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgY29kZSBwYXRoLiBJIG5lZWQgdG8gdmVyaWZ5IHdoYXQgZXhhY3RseSBgbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KClgIG5lZWRzIGFuZCB3aHkgdGhpcyBsb2NraW5nIG1vZGVsIGlzIGltcG9ydGFudCBpbiB0aGlzIGNvbnRleHQuIEkgd2lsbCBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBpb191cmluZy96Y3J4LmNgIGZpbGUgaXRzZWxmIHRvIHNlZSBob3cgdGhlIGRldmljZSByZWdpc3RyYXRpb24gaXMgdXNlZCBhbmQgZXhwbG9yZSB0aGUgc3Vycm91bmRpbmcgY29kZS4gVGhlbiBJJ2xsIGNoZWNrIGhvdyB0aGlzIG1vZHVsZSBpcyBlbmFibGVkLiBJIG5lZWQgdG8gZmluZCBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IHRyaWdnZXIgdGhlIGluY2x1c2lvbiBvZiBgaW9fdXJpbmcvemNyeC5jYC4gVGhpcyB1bmRlcnN0YW5kaW5nIGlzIGNydWNpYWwgZm9yIGFzc2Vzc2luZyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIGFuZCBjb25maXJtaW5nIGl0cyBjb3JyZWN0bmVzcywgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiBgaW9fdXJpbmdgIGFuZCBpdHMgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLiBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgY2hhbmdlIGFmZmVjdHMgYW55IHNwZWNpZmljIGhhcmR3YXJlIG9yIGRyaXZlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzozMC40NTQ2MDk5NDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwNTMxMTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpjcnhfcmVnaXN0ZXJfbmV0ZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy96Y3J4LmM9NzU1PXN0YXRpYyBpbnQgaW1wb3J0X3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuLS1cXG5pb191cmluZy96Y3J4LmMtODE2LVxcbmlvX3VyaW5nL3pjcnguYzo4MTc6c3RhdGljIGludCB6Y3J4X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgaW9femNyeF9pZnEgKmlmcSxcXG5pb191cmluZy96Y3J4LmMtODE4LVxcdFxcdFxcdFxcdHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgKnJlZyxcXG4tLVxcbmlvX3VyaW5nL3pjcnguYz04OTQ9aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuLS1cXG5pb191cmluZy96Y3J4LmMtOTkyLVxcdGlmICghKHJlZy5mbGFncyBcXHUwMDI2IFpDUlhfUkVHX05PREVWKSkge1xcbmlvX3VyaW5nL3pjcnguYzo5OTM6XFx0XFx0cmV0ID0gemNyeF9yZWdpc3Rlcl9uZXRkZXYoaWZxLCBcXHUwMDI2cmVnLCBcXHUwMDI2YXJlYSk7XFxuaW9fdXJpbmcvemNyeC5jLTk5NC1cXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzozMC43MDUxNDU0MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMTk0MzEzNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYGlvX3VyaW5nL3pjcnguY2AgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIGluaXRpYWwgcXVlc3Rpb24gaXMgd2hhdCB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSBmb3IgdGhlIGBpb191cmluZy96Y3J4LmNgIG1vZHVsZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGRyaXZpbmcgdGhlIGJlaGF2aW9yIGFuZCB1bmRlcnN0YW5kIGhvdyBpdCdzIHNldCB1cC4gUHJvYmFibHksIEkgc2hvdWxkIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIGEgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlIGZpcnN0LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgbW9zdCBkZXZpY2UgZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbCB3aWxsIGhhdmUgYSBLY29uZmlnIGZyYWdtZW50IHRoYXQgZGVmaW5lcyB0aGVzZSBvcHRpb25zLCByaWdodD8gTWF5YmUgdGhlcmUncyBhIGAuY29uZmlnYCBlbnRyeSwgb3IgcGVyaGFwcyBpdCdzIGhhbmRsZWQgdGhyb3VnaCBhIG1vcmUgc29waGlzdGljYXRlZCBtZWNoYW5pc20gaW52b2x2aW5nIERUIGJpbmRpbmdzIG9yIHN5c2ZzIGVudHJpZXMuIFRoaXMgcmVhbGx5IGRlcGVuZHMgb24gd2hldGhlciBpdCdzIHN0YXRpY2FsbHkgY29tcGlsZWQgb3IgbW9kdWxhci5cblxuSSdtIHRoaW5raW5nLCBpcyBgemNyeC5jYCBhIG1vZHVsZSwgb3IgaXMgaXQgY29tcGlsZWQgaW50byB0aGUga2VybmVsPyBUaGF0IHdpbGwgZGlyZWN0IG15IHNlYXJjaC4gSWYgaXQncyBhIG1vZHVsZSwgSSBuZWVkIHRvIGtub3cgdGhlIHJpZ2h0IGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdG8gbG9hZCBpdCBvciB1bmxvYWQgaXQuIElmIGl0J3Mgc3RhdGljLCBJJ2xsIGhhdmUgdG8gZmluZCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24sIHBvdGVudGlhbGx5IGV4YW1pbmluZyB0aGUgYEtjb25maWdgIGZpbGVzIGluIHRoZSBzb3VyY2UgdHJlZSB0byB0cmFjZSBpdHMgZGVwZW5kZW5jaWVzLiBJJ20gYWxzbyBjb25zaWRlcmluZyBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgc3Vic3lzdGVtcyDigJMgd2hhdCBraW5kIG9mIG1lbW9yeSBtYW5hZ2VtZW50IHBvbGljaWVzLCBpbnRlcnJ1cHQgaGFuZGxpbmcgc3RyYXRlZ2llcywgYW5kIGVycm9yIHJlcG9ydGluZyBtZWNoYW5pc21zIGFyZSBhdCBwbGF5PyBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyBpdHMgc2V0dGluZ3MgaW1wYWN0IHBlcmZvcm1hbmNlIGFuZCBmdW5jdGlvbmFsaXR5LiBJIHdpbGwgYWxzbyBsb29rIGZvciBhbnkgZG9jdW1lbnRhdGlvbiwgbWF5YmUgY29tbWVudHMgaW4gdGhlIGNvZGUgb3IgaWYgYW55IGRvYyBmaWxlcyBoYXZlIGJlZW4gZ2VuZXJhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTk3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjM6MzUuODI0NTc5OTIxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjM3ODkwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6Y3J4XFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19JT19VUklORylcXHRcXHQrPSBpb191cmluZy5vIG9wZGVmLm8ga2J1Zi5vIHJzcmMubyBub3RpZi5vIFxcXFxcXG4tLVxcbmlvX3VyaW5nL01ha2VmaWxlLTE4LVxcbmlvX3VyaW5nL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19JT19VUklOR19aQ1JYKVxcdCs9IHpjcngub1xcbmlvX3VyaW5nL01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19JT19XUSlcXHRcXHQrPSBpby13cS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjIzOjM2LjAxNjk2MzgxNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NTM3MzYyMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBDT05GSUdfSU9fVVJJTkdfWkNSWGAgRGVwZW5kZW5jeSBDaGFpbioqXG5cblJpZ2h0LCBzbyBgQ09ORklHX0lPX1VSSU5HX1pDUlhgLi4uIHRoYXQncyB0aGUgb25lIHdlJ3JlIGludGVyZXN0ZWQgaW4uIE9rYXksIGxldCdzIGRyaWxsIGRvd24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIEkgYWxyZWFkeSBrbm93IHdoYXQgaXQgKmlzKiwgYnV0IEknbSBnZXR0aW5nIGEgaGlnaC1sZXZlbCB2aWV3IGFuZCB3YW50IHRvIHNlZSBob3cgdGhpcyBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTGV0J3Mgc2VlIHdoYXQgKm90aGVyKiB0aGluZ3MgYXJlIHB1bGxlZCBpbiB3aGVuIHRoYXQncyBlbmFibGVkLiBJdCdzIHRpbWUgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIGl0IGluIHRoaXMgc3BlY2lmaWMgY29udGV4dCwgYW55IHBvdGVudGlhbCBjb25mbGljdHMsIGFuZCB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uIG92ZXJoZWFkLiBHb3R0YSBtYWtlIHN1cmUgSSdtIG5vdCBicmluZ2luZyBpbiBhIGJ1bmNoIG9mIHN0dWZmIEkgZG9uJ3QgcmVhbGx5IG5lZWQuIExldCdzIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MDIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzo0MC45NzA3MDI1NjNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2MjMzMDc4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU9fVVJJTkdfWkNSWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvS2NvbmZpZy01LVxcbmlvX3VyaW5nL0tjb25maWc6Njpjb25maWcgSU9fVVJJTkdfWkNSWFxcbmlvX3VyaW5nL0tjb25maWctNy1cXHRkZWZfYm9vbCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjIzOjQyLjYzMzAzODAzMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjA4Mzc2MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIGEgS2VybmVsIENvbmZpZ3VyYXRpb24gRmxhZyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkganVzdCBzYXcgc29tZXRoaW5nIHRoYXQncyBtYWtpbmcgbWUgcmFpc2UgYW4gZXllYnJvdy4gYElPX1VSSU5HX1pDUlhgIGlzIGRlZmluZWQgYXMgYGRlZl9ib29sIHlgPyBUaGF0IGZlZWxz4oCmIHVuZXhwZWN0ZWQsIGFuZCBJIHdhbnQgdG8gdmVyaWZ5IHRoYXQuIEl0J3MgdGltZSB0byBkb3VibGUtY2hlY2sgdGhhdCBrZXJuZWwgY29uZmlndXJhdGlvbi4gTGV0J3MgaGVhZCBvdmVyIHRvIHRoZSBgaW9fdXJpbmcvS2NvbmZpZ2AgZmlsZSBhbmQgY29uZmlybSB0aGF0IHRoYXQgYm9vbGVhbiBkZWZpbml0aW9uIGlzIHdoYXQgSSB0aGluayBpdCBpcy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBiZWZvcmUgSSBtb3ZlIGZvcndhcmQsIHNvIGxldCdzIGdldCB0aGF0IHZlcmlmaWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODE0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjM6NDYuNzUzODc5MTA0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxMDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImlvX3VyaW5nL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgaW9fdXJpbmcgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgSU9fVVJJTkdfWkNSWFxcbiAgIDc6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBJT19VUklOR1xcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBQQUdFX1BPT0xcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBORVRfUlhfQlVTWV9QT0xMXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBJT19VUklOR19CUEZcXG4gIDE0OlxcdFxcdGRlZl9ib29sIHlcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gQlBGXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIE5FVFxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgSU9fVVJJTkdfQlBGX09QU1xcbiAgMTk6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBJT19VUklOR1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzo0Ni43NTM5NzMyOTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQxMDMzNzY5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgSU9fVVJJTkdfWkNSWCBEZXBlbmRlbmN5IENoYWluKipcblxuUmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBgSU9fVVJJTkdfWkNSWGAgYW5kIGl0cyBpbnRlcmRlcGVuZGVuY2llcy4gSXQncyBhIGtleSBwYXJ0IG9mIHRoZSBtb2Rlcm4gbmV0d29yayBzdGFjaywgYnV0IGxpa2UgYW55IGN1dHRpbmctZWRnZSBmZWF0dXJlLCBpdCdzIHJlbGlhbnQgb24gYSBmZXcgZm91bmRhdGlvbmFsIGNvbXBvbmVudHMuIEkga25vdyBgSU9fVVJJTkdgIGl0c2VsZiBpcyBlc3NlbnRpYWwsIG9idmlvdXNseS4gVGhlbiB3ZSBoYXZlIGBQQUdFX1BPT0xgIOKAkyBjYW4ndCBkbyB6ZXJvLWNvcHkgd2l0aG91dCBlZmZpY2llbnQgcGFnZSBtYW5hZ2VtZW50LCB0aGF0J3MgY2xlYXIuIGBJTkVUYCBpcyBhbm90aGVyIG9idmlvdXMgb25lLiBCdXQgaXTigJlzIHRoYXQgYE5FVF9SWF9CVVNZX1BPTExgIGRlcGVuZGVuY3kgdGhhdCdzIG1ha2luZyBtZSBwYXVzZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhhdCBzcGVjaWZpY2FsbHkgdGllcyBpbnRvIGBJT19VUklOR19aQ1JYYC4gVGltZSB0byBjaGVjayBpdCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMzIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjIzOjUxLjE2NDMxMjkxOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzNTE2OTE1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1JYX0JVU1lfUE9MTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MzQyPWNvbmZpZyBDR1JPVVBfTkVUX0NMQVNTSURcXG4tLVxcbm5ldC9LY29uZmlnLTM0OS1cXG5uZXQvS2NvbmZpZzozNTA6Y29uZmlnIE5FVF9SWF9CVVNZX1BPTExcXG5uZXQvS2NvbmZpZy0zNTEtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzo1Mi45OTk0ODY0NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM2NzAyOTU0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgYE5FVF9SWF9CVVNZX1BPTExgIGluIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBuZXR3b3JrIHN0YWNrJ3MgY29uZmlndXJhdGlvbi4gUmlnaHQsIGxldCdzIHN0YXJ0IHdpdGggdGhlIGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgbmV0d29yay1yZWxhdGVkIHNldHRpbmdzLiBNeSBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRvIGxvb2sgZGlyZWN0bHkgaW50byBgbmV0L0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBkZWZpbml0aW9uLCBkZXBlbmRlbmNpZXMsIGFuZCBwb3RlbnRpYWwgaGVscCB0ZXh0IGZvciBhbnl0aGluZyBuZXR3b3JrLXNwZWNpZmljIGFuZCBjb25maWd1cmFibGUgd2l0aGluIHRoZSBrZXJuZWwuIFNwZWNpZmljYWxseSwgSSdtIGFmdGVyIGBORVRfUlhfQlVTWV9QT0xMYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0IGtub2IgY29udHJvbHMsIGl0cyBpbXBsaWNhdGlvbnMsIGFuZCBob3cgaXQncyBkZWZpbmVkIHdpdGhpbiB0aGUgYnJvYWRlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gY29udGV4dC4gSG9wZWZ1bGx5LCBgbmV0L0tjb25maWdgIHdpbGwgcHJvdmlkZSBtZSB3aXRoIHRoZSBuZWNlc3NhcnkgYW5zd2Vycy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU3NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjIzOjU3LjM2NjUxODg3NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNDUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNDU6XFx0XFx0c2VsZWN0IFNPQ0tfQ0dST1VQX0RBVEFcXG4gMzQ2OlxcdFxcdGhlbHBcXG4gMzQ3OlxcdFxcdCAgQ2dyb3VwIHN1YnN5c3RlbSBmb3IgdXNlIGFzIGdlbmVyYWwgcHVycG9zZSBzb2NrZXQgY2xhc3NpZCBtYXJrZXIgdGhhdCBpc1xcbiAzNDg6XFx0XFx0ICBiZWluZyB1c2VkIGluIGNsc19jZ3JvdXAgYW5kIGZvciBuZXRmaWx0ZXIgbWF0Y2hpbmcuXFxuIDM0OTpcXHRcXG4gMzUwOlxcdGNvbmZpZyBORVRfUlhfQlVTWV9QT0xMXFxuIDM1MTpcXHRcXHRib29sXFxuIDM1MjpcXHRcXHRkZWZhdWx0IHkgaWYgIVBSRUVNUFRfUlQgfHwgKFBSRUVNUFRfUlQgXFx1MDAyNlxcdTAwMjYgIU5FVENPTlNPTEUpXFxuIDM1MzpcXHRcXG4gMzU0OlxcdGNvbmZpZyBCUUxcXG4gMzU1OlxcdFxcdGJvb2xcXG4gMzU2OlxcdFxcdHByb21wdCBcXFwiRW5hYmxlIEJ5dGUgUXVldWUgTGltaXRzXFxcIlxcbiAzNTc6XFx0XFx0ZGVwZW5kcyBvbiBTWVNGU1xcbiAzNTg6XFx0XFx0c2VsZWN0IERRTFxcbiAzNTk6XFx0XFx0ZGVmYXVsdCB5XFxuIDM2MDpcXHRcXG4gMzYxOlxcdGNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxcbiAzNjI6XFx0XFx0Ym9vbCBcXFwiZW5hYmxlIEJQRiBTVFJFQU1fUEFSU0VSXFxcIlxcbiAzNjM6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDM2NDpcXHRcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjIzOjU3LjM2NjU5MTIyNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3Mjg0NzIyNzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIGEgS2VybmVsIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhhdCBgTkVUX1JYX0JVU1lfUE9MTGAgaGFzIGEgY29uZGl0aW9uYWwgZGVmYXVsdCBiYXNlZCBvbiBgUFJFRU1QVF9SVGAgYW5kIGBORVRDT05TT0xFYC4gUmlnaHQsIHRoYXQncyBzdGFuZGFyZCBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gTW92aW5nIG9uLCBgSU9fVVJJTkdgIGlzLCBhcyBleHBlY3RlZCwgdXN1YWxseSBlbmFibGVkLiBHb29kLiBgUEFHRV9QT09MYCBhbmQgYElORVRgIGFyZSBhbHNvIGxvZ2ljYWxseSB0aWVkIHRvIGBORVRgLCBzbyB0aGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UuXG5cblRoZSByZWFsIG1lYXQgb2YgdGhpcyBpcyB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBsb29rcyBsaWtlIHdlJ3ZlIGdvdCBhIGNoZWNrIGJlaW5nIGFkZGVkIHdpdGhpbiBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgIGluIGBpb191cmluZy96Y3J4LmNgLiBNeSBzcGlkZXktc2Vuc2UgaXMgdGluZ2xpbmcg4oCTIHRoYXQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBgaW9fcmVnaXN0ZXJfemNyeGAsIHdoaWNoIGlzLCBpZiBteSBtZW1vcnkgc2VydmVzLCByZWxhdGVkIHRvIGFuIGBpb191cmluZ2AgcmVnaXN0cmF0aW9uIG9wY29kZS4gVGltZSB0byBjb25maXJtIHRoYXQgaHlwb3RoZXNpcy4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgaW9fcmVnaXN0ZXJfemNyeGAgaW4gYGlvX3VyaW5nL3pjcnguY2AgdG8gc2VlIHByZWNpc2VseSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBuZXcgY2hlY2sgaXMgZXZhbHVhdGluZyBhbmQgd2h5IGl0J3MgYmVpbmcgaW50cm9kdWNlZCB3aXRoaW4gdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBMb29rcyBsaWtlIGEgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgcGllY2Ugb2Yga2VybmVsLWxldmVsIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNzQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyNDowNC42NTEzMTY5ODFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTI1NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX3JlZ2lzdGVyX3pjcnhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW9fdXJpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImlvX3VyaW5nL3JlZ2lzdGVyLmM9NzUwPXN0YXRpYyBpbnQgX19pb191cmluZ19yZWdpc3RlcihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdW5zaWduZWQgb3Bjb2RlLFxcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDEtXFx0XFx0XFx0YnJlYWs7XFxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo5NDI6XFx0XFx0cmV0ID0gaW9fcmVnaXN0ZXJfemNyeChjdHgsIGFyZyk7XFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDMtXFx0XFx0YnJlYWs7XFxuLS1cXG5pb191cmluZy96Y3J4LmM9ODY3PXN0YXRpYyBpbnQgemNyeF92YWxpZGF0ZV9ub3RpZl9zdGF0cyhzdHJ1Y3QgaW9femNyeF9pZnEgKmlmcSxcXG4tLVxcbmlvX3VyaW5nL3pjcnguYy04OTMtXFxuaW9fdXJpbmcvemNyeC5jOjg5NDppbnQgaW9fcmVnaXN0ZXJfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG5pb191cmluZy96Y3J4LmMtODk1LVxcdFxcdCAgICAgc3RydWN0IGlvX3VyaW5nX3pjcnhfaWZxX3JlZyBfX3VzZXIgKmFyZylcXG4tLVxcbmlvX3VyaW5nL3pjcnguaD04OD1pbnQgaW9femNyeF9jdHJsKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB2b2lkIF9fdXNlciAqYXJnLCB1bnNpZ25lZCBucl9hcmcpO1xcbmlvX3VyaW5nL3pjcnguaDo4OTppbnQgaW9fcmVnaXN0ZXJfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG5pb191cmluZy96Y3J4LmgtOTAtXFx0XFx0XFx0IHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgX191c2VyICphcmcpO1xcbi0tXFxuaW9fdXJpbmcvemNyeC5oPTk2PXN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICppb196Y3J4X2dldF9yZWdpb24oc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuLS1cXG5pb191cmluZy96Y3J4LmgtOTgtI2Vsc2VcXG5pb191cmluZy96Y3J4Lmg6OTk6c3RhdGljIGlubGluZSBpbnQgaW9fcmVnaXN0ZXJfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG5pb191cmluZy96Y3J4LmgtMTAwLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgX191c2VyICphcmcpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjI0OjA0LjY5NzQ0OTE1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1NjA4NDMwNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoIFJlbGF0ZWQgdG8gaW9fdXJpbmcgRGV2aWNlIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHRoZSBgaW9fcmVnaXN0ZXJfemNyeGAgZnVuY3Rpb24uIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCBpdCdzIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgYGlvX3VyaW5nX3JlZ2lzdGVyYCBzeXN0ZW0gY2FsbC4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjazogYCFuZXRkZXZfbmVlZF9vcHNfbG9jayhpZnEtXHUwMDNlbmV0ZGV2KWAgYW5kLCBpZiB0aGF0IGNvbmRpdGlvbiBpcyB0cnVlLCBpdCByZXR1cm5zIGAtRU9QTk9UU1VQUGAuXG5cbkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBrZXJuZWwncyBpb191cmluZyBzdWJzeXN0ZW0uIFdoYXQgaXQncyBkb2luZyBpcyBwcmV2ZW50aW5nIHRoZSByZWdpc3RyYXRpb24gb2YgbmV0d29yayBkZXZpY2VzIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0aGlzIFwib3BzIGxvY2tpbmcgbW9kZWwsXCIgd2hhdGV2ZXIgdGhhdCBlbnRhaWxzLiBUaGlzIGZlZWxzIHByZXR0eSBzaWduaWZpY2FudCwgYSBjaGFuZ2UgYXQgdGhlIGNvcmUgbGV2ZWwuIERlZmluaXRlbHkgd29ydGggZ2l2aW5nIHRoaXMgc29tZSBmdXp6aW5nIGF0dGVudGlvbi5cblxuSSBuZWVkIHRvIGRpZyBpbnRvIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgY3JpdGVyaWEgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBuZXR3b3JrIGRldmljZSBuZWVkcyB0aGlzIG9wcyBsb2NrLiBUaGF0IHdpbGwgdGVsbCB0aGUgd2hvbGUgc3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5OTAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjQ6MTMuMjU4Mjk0MTQ1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY5MzYzMTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGRldl9uZWVkX29wc19sb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYz0zMT1pbnQgcGh5X2xpbmtfdG9wb19hZGRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYy00NC1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYzo0NTpcXHRpZiAoV0FSTl9PTl9PTkNFKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfbGlua190b3BvbG9neS5jLTQ2LVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dhbi9sYXBiZXRoZXIuYz04Mj1zdGF0aWMgX19pbmxpbmVfXyBpbnQgZGV2X2lzX2V0aGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dhbi9sYXBiZXRoZXIuYy04My17XFxuZHJpdmVycy9uZXQvd2FuL2xhcGJldGhlci5jOjg0OlxcdHJldHVybiBkZXYtXFx1MDAzZXR5cGUgPT0gQVJQSFJEX0VUSEVSIFxcdTAwMjZcXHUwMDI2ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpO1xcbmRyaXZlcnMvbmV0L3dhbi9sYXBiZXRoZXIuYy04NS19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTIxNDc9c3RydWN0IG5ldF9kZXZpY2Uge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTg3LVxcdCAqICAgYW5kIG90aGVyIGNhbGxiYWNrcywgdGhhdCBpcyB0aGUgaW5zdGFuY2UgbG9jayBvbiBkZXZpY2VzIGZvclxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjU4ODpcXHQgKiAgIHdoaWNoIG5ldGRldl9uZWVkX29wc19sb2NrKCkgcmV0dXJucyB0cnVlLCBvdGhlcndpc2UgYnkgcnRubF9sb2NrO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU4OS1cXHQgKlxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU5MC1cXHQgKiAtIGRvdWJsZSBvcHMgcHJvdGVjdGVkIC0gYWx3YXlzIHByb3RlY3RlZCBieSBydG5sX2xvY2sgYnV0IGZvclxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjU5MTpcXHQgKiAgIGRldmljZXMgZm9yIHdoaWNoIG5ldGRldl9uZWVkX29wc19sb2NrKCkgcmV0dXJucyB0cnVlIC0gYWxzb1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU5Mi1cXHQgKiAgIHRoZSBpbnN0YW5jZSBsb2NrLlxcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD0yMT1uZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcl9pbnZpc2libGUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMjctXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDoyODpzdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X25lZWRfb3BzX2xvY2soY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTI5LXtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9Mzk9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9sb2NrX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNDAte1xcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6NDE6XFx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC00Mi1cXHRcXHRuZXRkZXZfbG9jayhkZXYpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD00NT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3VubG9ja19vcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTQ2LXtcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjQ3OlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNDgtXFx0XFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD01MT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X2xvY2tfb3BzX3RvX2Z1bGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTUyLXtcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjUzOlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNTQtXFx0XFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9NTk9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl91bmxvY2tfZnVsbF90b19vcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTYwLXtcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjYxOlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNjItXFx0XFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9Njc9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9hc3NlcnRfbG9ja2VkX29wc19jb21wYXQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTY4LXtcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjY5OlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNzAtXFx0XFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9ODM9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9hc3NlcnRfbG9ja2VkX29wcyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtODQte1xcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6ODU6XFx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC04Ni1cXHRcXHRuZXRkZXZfYXNzZXJ0X2xvY2tlZChkZXYpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD04OT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X2xvY2tfb3BzX2NvbXBhdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtOTAte1xcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6OTE6XFx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC05Mi1cXHRcXHRuZXRkZXZfbG9jayhkZXYpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD05Nz1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3VubG9ja19vcHNfY29tcGF0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC05OC17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo5OTpcXHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTEwMC1cXHRcXHRuZXRkZXZfdW5sb2NrKGRldik7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTEwNj1zdGF0aWMgaW5saW5lIGludCBuZXRkZXZfaXNfbG9ja2VkX29wc19jb21wYXQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTEwNy17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDoxMDg6XFx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0xMDktXFx0XFx0cmV0dXJuIGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaD00Mz1zdHJ1Y3QgbmV0ZGV2X3F1ZXVlX3N0YXRzX3R4IHtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaC05MS0gKlxcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaDo5MjogKiBPcHMgYXJlIGNhbGxlZCB1bmRlciB0aGUgaW5zdGFuY2UgbG9jayBpZiBuZXRkZXZfbmVlZF9vcHNfbG9jaygpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oLTkzLSAqIHJldHVybnMgdHJ1ZSwgb3RoZXJ3aXNlIHVuZGVyIHJ0bmxfbG9jay5cXG4tLVxcbmlvX3VyaW5nL3pjcnguYz04MTc9c3RhdGljIGludCB6Y3J4X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgaW9femNyeF9pZnEgKmlmcSxcXG4tLVxcbmlvX3VyaW5nL3pjcnguYy04MzUtXFx0ICovXFxuaW9fdXJpbmcvemNyeC5jOjgzNjpcXHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGlmcS1cXHUwMDNlbmV0ZGV2KSkge1xcbmlvX3VyaW5nL3pjcnguYy04MzctXFx0XFx0cmV0ID0gLUVPUE5PVFNVUFA7XFxuLS1cXG5uZXQvY29yZS9kZXYuYz0xMTMyNz1pbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvY29yZS9kZXYuYy0xMTM4MS1cXG5uZXQvY29yZS9kZXYuYzoxMTM4MjpcXHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9jb3JlL2Rldi5jLTExMzgzLVxcdCAgICBkZXYtXFx1MDAzZW5ldGRldl9vcHMtXFx1MDAzZW5kb19zZXRfcnhfbW9kZSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTIzNzA9dm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTI0MDMtXFx0XFx0XFx0Y29udGludWU7XFxubmV0L2NvcmUvZGV2LmM6MTI0MDQ6XFx0XFx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpIHtcXG5uZXQvY29yZS9kZXYuYy0xMjQwNS1cXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZkZXYtXFx1MDAzZWNsb3NlX2xpc3QsIFxcdTAwMjZjbG9zZV9oZWFkKTtcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTEyNDEyLVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGV2LCBoZWFkLCB1bnJlZ19saXN0KSB7XFxubmV0L2NvcmUvZGV2LmM6MTI0MTM6XFx0XFx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbm5ldC9jb3JlL2Rldi5jLTEyNDE0LVxcdFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRldi1cXHUwMDNlY2xvc2VfbGlzdCwgXFx1MDAyNmNsb3NlX2hlYWQpO1xcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTI1MzA9aW50IF9fZGV2X2NoYW5nZV9uZXRfbmFtZXNwYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTEyNjIwLVxcbm5ldC9jb3JlL2Rldi5jOjEyNjIxOlxcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5uZXQvY29yZS9kZXYuYy0xMjYyMi1cXHRcXHRuZXRkZXZfbG9jayhkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTI2OTEtXFx0ZGV2LVxcdTAwM2Vtb3ZpbmdfbnMgPSBmYWxzZTtcXG5uZXQvY29yZS9kZXYuYzoxMjY5MjpcXHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXFxubmV0L2NvcmUvZGV2LmMtMTI2OTMtXFx0XFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2Lmg9MTkwPXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRpZl9zZXRfdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCB2YWx1ZSlcXG4tLVxcbm5ldC9jb3JlL2Rldi5oLTE5Ni1cXG5uZXQvY29yZS9kZXYuaDoxOTc6XFx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbm5ldC9jb3JlL2Rldi5oLTE5OC1cXHRcXHRuZXRkZXZfbG9jayhkZXYpO1xcbm5ldC9jb3JlL2Rldi5oLTE5OS1cXHRkZXYtXFx1MDAzZXVwID0gdmFsdWU7XFxubmV0L2NvcmUvZGV2Lmg6MjAwOlxcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5uZXQvY29yZS9kZXYuaC0yMDEtXFx0XFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYz0xMzYyPXZvaWQgX19kZXZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmMtMTM3NC1cXHRpZiAob3BzLVxcdTAwM2VuZG9fc2V0X3J4X21vZGVfYXN5bmMgfHwgb3BzLVxcdTAwM2VuZG9fY2hhbmdlX3J4X2ZsYWdzIHx8XFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYzoxMzc1OlxcdCAgICBuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKSB7XFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYy0xMzc2LVxcdFxcdG5ldGlmX3J4X21vZGVfcXVldWUoZGV2KTtcXG4tLVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM9MTAxMz1pbnQgbmV0ZGV2X25sX2JpbmRfcnhfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy0xMDU2LVxcdFxcdGVyciA9IC1FTk9ERVY7XFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxMDU3OlxcdGVsc2UgaWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhuZXRkZXYpKVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTA1OC1cXHRcXHRlcnIgPSAtRU9QTk9UU1VQUDtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI0NT1pbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNTAtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjUxOlxcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNTItXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxubmV0L2V0aHRvb2wvaW9jdGwuYz0zNjEwPV9fZGV2X2V0aHRvb2woc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaWZyZXEgKmlmciwgdm9pZCBfX3VzZXIgKnVzZXJhZGRyLFxcbi0tXFxubmV0L2V0aHRvb2wvaW9jdGwuYy0zNjIxLVxcbm5ldC9ldGh0b29sL2lvY3RsLmM6MzYyMjpcXHRuZWVkX3J0bmwgPSAhbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSB8fFxcbm5ldC9ldGh0b29sL2lvY3RsLmMtMzYyMy1cXHRcXHQgICAgZXRodG9vbF9jbWRfY2hhbmdlc19mZWF0dXJlcyhldGhjbWQpIHx8XFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTA3PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtNTM5LVxcdGlmIChyZXFfaW5mby1cXHUwMDNlZGV2KSB7XFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjU0MDpcXHRcXHRuZWVkX3J0bmwgPSAhbmV0ZGV2X25lZWRfb3BzX2xvY2socmVxX2luZm8tXFx1MDAzZWRldikgfHxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtNTQxLVxcdFxcdFxcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKHJlcV9pbmZvLVxcdTAwM2VkZXYsIGNtZCk7XFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTk0PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kdW1wX29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTYwOC1cXHRldGhubF9pbml0X3JlcGx5X2RhdGEoY3R4LVxcdTAwM2VyZXBseV9kYXRhLCBjdHgtXFx1MDAzZW9wcywgZGV2KTtcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6NjA5OlxcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIHx8XFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTYxMC1cXHRcXHQgICAgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubChkZXYsIGN0eC1cXHUwMDNlb3BzLVxcdTAwM2VyZXF1ZXN0X2NtZCk7XFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9OTAwPXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9zZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTkzMC1cXHRkZXYgPSByZXFfaW5mby1cXHUwMDNlZGV2O1xcbm5ldC9ldGh0b29sL25ldGxpbmsuYzo5MzE6XFx0bmVlZF9ydG5sID0gIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikgfHxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtOTMyLVxcdFxcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKGRldiwgY21kKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjQ6MTQuODI3NjY2OTA3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NDg0MDA5NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgaW9fdXJpbmcgWmVyby1Db3B5IFJYIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbWFraW5nIGEgY3J1Y2lhbCBmdW5jdGlvbmFsIGNoYW5nZSByZWdhcmRpbmcgYGlvX3VyaW5nYCB6ZXJvLWNvcHkgUlggKHpjcngpLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgLCB3aGVyZSB0aGV5J3ZlIGFkZGVkIGEgY2hlY2sgdXNpbmcgYG5ldGRldl9uZWVkX29wc19sb2NrYC4gRXNzZW50aWFsbHksIHpjcnggd2lsbCBub3cgKm9ubHkqIHdvcmsgaWYgdGhlIG5ldHdvcmsgZGV2aWNlIHV0aWxpemVzIHRoZSBuZXcgb3BzIGxvY2tpbmcgbW9kZWwuIFRoaXMgaXMgaW1wb3J0YW50LlxuXG5HaXZlbiB0aGlzIGZ1bmN0aW9uYWxpdHkgc2hpZnQsIG15IGZpcnN0IHRob3VnaHQgaXMgXCJXb3J0aEZ1enppbmc9dHJ1ZVwiLiBJdCdzIGEgY2xlYXIgY2hhbmdlIGluIGJlaGF2aW9yIGFuZCBhIGdvb2QgcGxhY2UgdG8gZm9jdXMgZnV6emluZyBlZmZvcnRzLlxuXG5JIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSByZWxhdGVkIGZ1bmN0aW9ucywgcGFydGljdWxhcmx5IGBpb19yZWdpc3Rlcl96Y3J4YCBhbmQgYHpjcnhfcmVnaXN0ZXJfbmV0ZGV2YC4gR2l2ZW4gdGhhdCBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgIGlzIHN0YXRpYywgbXkgYXR0ZW50aW9uIGlzIGxpa2VseSBiZXR0ZXIgZGlyZWN0ZWQgYXQgYGlvX3JlZ2lzdGVyX3pjcnhgIGFzIHRoZSBrZXkgZW50cnkgcG9pbnQuXG5cbk5vdywgZm9yIGVuYWJsaW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4gVGhlIG5lY2Vzc2FyeSBjb25maWdzIGFyZSBgSU9fVVJJTkdfWkNSWGAsIGBJT19VUklOR2AsIGBQQUdFX1BPT0xgLCBgSU5FVGAsIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGVzZSBjb25maWd1cmF0aW9ucyBhcmUgd2VsbCB1bmRlcnN0b29kIGFuZCBleHBsaWNpdGx5IGNvbnNpZGVyZWQgZm9yIGFueSB0ZXN0aW5nLlxuXG5XYWl0LCBgSU9fVVJJTkdfWkNSWGAgaXMgYGRlZl9ib29sIHlgIGluIGBpb191cmluZy9LY29uZmlnYC4gVGhhdCBtZWFucyBpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdCwgKmlmKiB0aGUgZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQuIEl0cyBkZXBlbmRlbmNpZXMgYXJlIGBJT19VUklOR2AsIGBQQUdFX1BPT0xgLCBgSU5FVGAsIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAuIGBORVRfUlhfQlVTWV9QT0xMYCBpcyBhbHNvIGVmZmVjdGl2ZWx5IGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBtb3N0IGNhc2VzLCBiZWluZyBgYm9vbGAsIGBkZWZhdWx0IHkgaWYgIVBSRUVNUFRfUlQgfHwgKFBSRUVNUFRfUlQgXHUwMDI2XHUwMDI2ICFORVRDT05TT0xFKWAuIEhvd2V2ZXIsIGl04oCZcyBzdGlsbCBnb29kIHRvIGV4cGxpY2l0bHkgbGlzdCBhbGwgb2YgdGhlIHJlcXVpcmVkIGRlcGVuZGVuY2llcy5cblxuSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBjb2RlIGZvciBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgIGluIGBpb191cmluZy96Y3J4LmNgIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGltcGxlbWVudGF0aW9uIGJldHRlci4gVGhpcyB3aWxsIGNsYXJpZnkgaG93IHRoZSBsb2NraW5nIGNoZWNrIGludGVyYWN0cyB3aXRoIHRoZSBleGlzdGluZyBjb2RlIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3MzEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjQ6MjIuNTc2MDcwMTM3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODQzNDQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6Y3J4X3JlZ2lzdGVyX25ldGRldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpb191cmluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvemNyeC5jPTc1NT1zdGF0aWMgaW50IGltcG9ydF96Y3J4KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbi0tXFxuaW9fdXJpbmcvemNyeC5jLTgxNi1cXG5pb191cmluZy96Y3J4LmM6ODE3OnN0YXRpYyBpbnQgemNyeF9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGlvX3pjcnhfaWZxICppZnEsXFxuaW9fdXJpbmcvemNyeC5jLTgxOC1cXHRcXHRcXHRcXHRzdHJ1Y3QgaW9fdXJpbmdfemNyeF9pZnFfcmVnICpyZWcsXFxuLS1cXG5pb191cmluZy96Y3J4LmM9ODk0PWludCBpb19yZWdpc3Rlcl96Y3J4KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbi0tXFxuaW9fdXJpbmcvemNyeC5jLTk5Mi1cXHRpZiAoIShyZWcuZmxhZ3MgXFx1MDAyNiBaQ1JYX1JFR19OT0RFVikpIHtcXG5pb191cmluZy96Y3J4LmM6OTkzOlxcdFxcdHJldCA9IHpjcnhfcmVnaXN0ZXJfbmV0ZGV2KGlmcSwgXFx1MDAyNnJlZywgXFx1MDAyNmFyZWEpO1xcbmlvX3VyaW5nL3pjcnguYy05OTQtXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjQ6MjIuNjU0NTEwMDQ1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MzY2MzAwMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBaQ1JYIERyaXZlciBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB6Y3J4X3JlZ2lzdGVyX25ldGRldmAgZnVuY3Rpb24sIGFuZCBpdCdzIGZsYWdnZWQgYXMgYHN0YXRpY2AuIFRoYXQgbWVhbnMgaXQncyBpbnRlcm5hbCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LCB3aGljaCBpcyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gIE5vdywgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgZHJpdmVyLCB0aGUgZnVuY3Rpb24gY2FsbGVkIGZyb20gb3V0c2lkZSwgc2VlbXMgdG8gYmUgYGlvX3JlZ2lzdGVyX3pjcnhgLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gbm93IGlzLCAqaXMqIGBpb19yZWdpc3Rlcl96Y3J4YCBleHBvcnRlZCBmb3Igb3RoZXIgbW9kdWxlcyB0byB1c2UsIG9yIGlzIGl0IGFsc28gY29uZmluZWQgdG8gdGhlIGBpb191cmluZy9yZWdpc3Rlci5jYCBmaWxlIGxpa2UgYHpjcnhfcmVnaXN0ZXJfbmV0ZGV2YD8gS25vd2luZyB0aGF0IHdpbGwgZGV0ZXJtaW5lIHRoZSBnZW5lcmFsIGFjY2VzcyBvZiB0aGUgZnVuY3Rpb25hbGl0eS4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IGl0cyB2aXNpYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDgyNiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjI0OjI5LjA5MTE0MjY5NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0MTk0NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9fcmVnaXN0ZXJfemNyeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpb191cmluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jLTk0MS1cXHRcXHRcXHRicmVhaztcXG5pb191cmluZy9yZWdpc3Rlci5jOjk0MjpcXHRcXHRyZXQgPSBpb19yZWdpc3Rlcl96Y3J4KGN0eCwgYXJnKTtcXG5pb191cmluZy9yZWdpc3Rlci5jLTk0My1cXHRcXHRicmVhaztcXG4tLVxcbmlvX3VyaW5nL3pjcnguYz04Njc9c3RhdGljIGludCB6Y3J4X3ZhbGlkYXRlX25vdGlmX3N0YXRzKHN0cnVjdCBpb196Y3J4X2lmcSAqaWZxLFxcbi0tXFxuaW9fdXJpbmcvemNyeC5jLTg5My1cXG5pb191cmluZy96Y3J4LmM6ODk0OmludCBpb19yZWdpc3Rlcl96Y3J4KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbmlvX3VyaW5nL3pjcnguYy04OTUtXFx0XFx0ICAgICBzdHJ1Y3QgaW9fdXJpbmdfemNyeF9pZnFfcmVnIF9fdXNlciAqYXJnKVxcbi0tXFxuaW9fdXJpbmcvemNyeC5oPTg4PWludCBpb196Y3J4X2N0cmwoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcsIHVuc2lnbmVkIG5yX2FyZyk7XFxuaW9fdXJpbmcvemNyeC5oOjg5OmludCBpb19yZWdpc3Rlcl96Y3J4KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbmlvX3VyaW5nL3pjcnguaC05MC1cXHRcXHRcXHQgc3RydWN0IGlvX3VyaW5nX3pjcnhfaWZxX3JlZyBfX3VzZXIgKmFyZyk7XFxuLS1cXG5pb191cmluZy96Y3J4Lmg9OTY9c3RydWN0IGlvX21hcHBlZF9yZWdpb24gKmlvX3pjcnhfZ2V0X3JlZ2lvbihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG4tLVxcbmlvX3VyaW5nL3pjcnguaC05OC0jZWxzZVxcbmlvX3VyaW5nL3pjcnguaDo5OTpzdGF0aWMgaW5saW5lIGludCBpb19yZWdpc3Rlcl96Y3J4KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbmlvX3VyaW5nL3pjcnguaC0xMDAtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGlvX3VyaW5nX3pjcnhfaWZxX3JlZyBfX3VzZXIgKmFyZylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjQ6MjkuMTM3NTY1Nzk1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NDY0NjYxNDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipOYXJyb3dpbmcgdGhlIEludmVzdGlnYXRpb24qKlxuXG5BbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBpb19yZWdpc3Rlcl96Y3J4YCBpcyB0aGUga2V5IGZ1bmN0aW9uIHRvIHJlYWxseSBob25lIGluIG9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHN5c3RlbS4gSSBzaG91bGQgZGVmaW5pdGVseSBzZWUgaG93IGl0J3MgYmVpbmcgdXNlZC4gQmVmb3JlIGRpdmluZyB0b28gZGVlcCwgSSBzaG91bGQgZG8gYSBxdWljayBzd2VlcCBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgb2J2aW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBpbXBhY3QgdGhpcy4gTGV0J3Mgc2VlLi4uIEknbGwgY2hlY2sgZm9yIGBJT19VUklOR2AsIGBQQUdFX1BPT0xgLCBgSU5FVGAsIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAg4oCTIHRoZXNlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgd2hlbiB5b3UncmUgZGVhbGluZyB3aXRoIEkvTyBhbmQgbmV0d29ya2luZyBwZXJmb3JtYW5jZS4gSnVzdCB3YW50IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEknbGwgbmVlZCB0byBwYXkgcGFydGljdWxhcmx5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYFBBR0VfUE9PTGAgY29uZmlndXJhdGlvbiwgdGhhdCBzZWVtcyBsaWtlIHNvbWV0aGluZyB0aGF0IGNvdWxkIGJlIHZlcnkgcmVsYXRlZCB0byB0aGUgemNyeCBmdW5jdGlvbmFsaXR5LCBpZiB0aGlzIGNvZGUgaXMgZGVzaWduZWQgdGhlIHdheSBJIGV4cGVjdCBpdCB0byBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NTQsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyNDo0Ni42MDIyMjk5NTdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTgzNjM2MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBBR0VfUE9PTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9NDg3PWNvbmZpZyBORVRfREVWTElOS1xcbi0tXFxubmV0L0tjb25maWctNDkwLVxcbm5ldC9LY29uZmlnOjQ5MTpjb25maWcgUEFHRV9QT09MXFxubmV0L0tjb25maWctNDkyLVxcdGJvb2xcXG5uZXQvS2NvbmZpZy00OTMtXFxubmV0L0tjb25maWc6NDk0OmNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcXG5uZXQvS2NvbmZpZy00OTUtXFx0ZGVmYXVsdCBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjI0OjQ4LjUwMDU5ODE5OFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDU3NzEzMTE2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBQQUdFX1BPT0wgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGNvbmZpZ3VyYXRpb24sIGFuZCBJIHNlZSB0aGlzIGBQQUdFX1BPT0xgIG9wdGlvbiDigJMgaXQncyBhIGJvb2xlYW4sIHR5cGljYWxseSBzb21ldGhpbmcgZHJpdmVycyBkZWNpZGUgb24uIEhtbSwgYnV0IHRoZW4gSSBub3RpY2UgYElPX1VSSU5HX1pDUlhgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFBBR0VfUE9PTGAuIFRoYXQgbWVhbnMgaWYgYFBBR0VfUE9PTGAgaXNuJ3QgZW5hYmxlZCwgYElPX1VSSU5HX1pDUlhgIGlzIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQuXG5cbkFscmlnaHQsIHNvIHRoZSBuYXR1cmFsIGluY2xpbmF0aW9uIGlzIHRvIHRoaW5rIG1heWJlIHdlIHNob3VsZCBqdXN0ICpmb3JjZSogYFBBR0VfUE9PTGAgb24sIHJpZ2h0PyBCdXQgd2FpdCBhIG1pbnV0ZS4gYFBBR0VfUE9PTGAgaXMgYSBib29sZWFuIHdpdGhvdXQgYSBwcm9tcHQuIFRoYXQgZ2VuZXJhbGx5IG1lYW5zIGl0IGNhbiAqb25seSogYmUgc2VsZWN0ZWQgYnkgYW5vdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbiwgbm90IGRpcmVjdGx5IGVuYWJsZWQgaW4gdGhlIGAuY29uZmlnYCBmaWxlLiBJIGNhbid0IGp1c3Qgc2xhcCBhIGBZYCBvbiBpdC5cblxuU28sIHRoZSBuZXh0IG9idmlvdXMgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGlmIGl0J3MgZXZlbiAqcG9zc2libGUqIHRvIGVuYWJsZSBpdCBkaXJlY3RseS4gR2l2ZW4gdGhlIGxhY2sgb2YgYSBwcm9tcHQsIEknbSBmYWlybHkgY2VydGFpbiBJIGNhbid0IGVuYWJsZSBgUEFHRV9QT09MYCBkaXJlY3RseSBpbiB0aGUgYC5jb25maWdgIHVubGVzcyBzb21ldGhpbmcgZWxzZSBzZWxlY3RzIGl0IGZvciBtZS4gVGhhdCdzIHRoZSBxdWVzdGlvbiBJIGhhdmUgdG8gYW5zd2VyIG5vdy4gSSBuZWVkIHRvIHNlZSAqd2hhdCogZXhhY3RseSBzZWxlY3RzIGBQQUdFX1BPT0xgLCBhbmQgdGhlbiB0cmFjZSBob3cgdG8gbWFrZSBzdXJlIHRoYXQgd2hhdGV2ZXIncyBzZWxlY3RpbmcgaXQgaXMgZW5hYmxlZCwgb3IgaWYgaXQgbWFrZXMgc2Vuc2UgdG8gZW5hYmxlIGl0IGluIHRoaXMgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5NTgsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjQ6NTkuMDc3NzM2NDM0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc3MTc0MzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBQQUdFX1BPT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NDM1PWNvbmZpZyBWRVRIXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzYtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgZXRoZXJuZXQgcGFpciBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0Mzc6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDM4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDQzPWNvbmZpZyBWSVJUSU9fTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0Ny1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDg6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTQ0PWNvbmZpZyBYRU5fTkVUREVWX0ZST05URU5EXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0Ny1cXHRzZWxlY3QgWEVOX1hFTkJVU19GUk9OVEVORFxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTQ4OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0OS1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTg0PWNvbmZpZyBWTVhORVQzXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4Ny1cXHRkZXBlbmRzIG9uIFBBR0VfU0laRV9MRVNTX1RIQU5fNjRLQlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTg4OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTYwND1jb25maWcgTkVUREVWU0lNXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9LY29uZmlnOjYxMTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTItXFx0c2VsZWN0IE5FVF9TSEFQRVJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnPTE4PWNvbmZpZyBORVRfQUlST0hBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMS1cXHRzZWxlY3QgTkVUX0FJUk9IQV9OUFVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnPTE4PWNvbmZpZyBBTElCQUJBX0VFQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIxLVxcdGRlcGVuZHMgb24gNjRCSVRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc6MjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZy0yMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTcyPWNvbmZpZyBCQ01HRU5FVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04MC1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzo4MTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04Mi1cXHRzZWxlY3QgQlJPQURDT01fUEhZIGlmIEFSQ0hfQkNNMjgzNVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yMDc9Y29uZmlnIEJOWFRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjEzLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjE0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIxNS1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI1OD1jb25maWcgQk5HRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjEtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYzLVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI2OT1jb25maWcgQkNNQVNQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI3NS1cXHRzZWxlY3QgTURJT19CQ01fVU5JTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNzY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjc3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZz02PWNvbmZpZyBFTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctOC1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZzo5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctMTAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZz0xOT1jb25maWcgVFNORVBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjMtXFx0c2VsZWN0IFBIWUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWc6MjQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc9MjM9Y29uZmlnIEZFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzEtXFx0c2VsZWN0IEZJWEVEX1BIWVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjMyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zMy1cXHRpbXBseSBQQUdFX1BPT0xfU1RBVFNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnPTE4PWNvbmZpZyBHVkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTIxLVxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc9OTE9Y29uZmlnIEhOUzNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk0LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjk1OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz0xNDc9Y29uZmlnIEhJQk1DR0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1My1cXHRzZWxlY3QgUkVBTFRFS19QSFlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzoxNTQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc9Nj1jb25maWcgSElOSUMzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTQtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZzoxNTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnLTE2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnPTQ9Y29uZmlnIExJQkVUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnLTUtXFx0dHJpc3RhdGUgXFxcIkNvbW1vbiBFdGhlcm5ldCBsaWJyYXJ5IChsaWJldGgpXFxcIiBpZiBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZzo2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZy03LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz01OT1jb25maWcgTVZORVRBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjMtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2NTpcXHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTY2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz04Nj1jb25maWcgTVZQUDJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MC1cXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo5MTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9MzE9Y29uZmlnIE9DVEVPTlRYMl9QRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjM1OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM2LVxcdHNlbGVjdCBDUllQVE9fTElCX0FFUyBpZiBNQUNTRUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9MTQ9Y29uZmlnIE5FVF9NRURJQVRFS19TT0NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMjAtXFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoyMTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMy1cXHRzZWxlY3QgUENTX01US19MWU5YSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnPTY9Y29uZmlnIE1MWDRfRU5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy05LVxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc6MTA6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy0xMS1cXHRzZWxlY3QgTUxYNF9DT1JFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0yOT1jb25maWcgTUxYNV9DT1JFX0VOXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0zMS1cXHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXFx1MDAyNlxcdTAwMjYgRVRIRVJORVQgXFx1MDAyNlxcdTAwMjYgSU5FVCBcXHUwMDI2XFx1MDAyNiBQQ0kgXFx1MDAyNlxcdTAwMjYgTUxYNV9DT1JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjMzOlxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0zNC1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnPTMzPWNvbmZpZyBNTFhTV19QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzUtXFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IE1MWFNXX0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjM2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTM3LVxcdGRlZmF1bHQgbVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTIwPWNvbmZpZyBGQk5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI3LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyODpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI5LVxcdHNlbGVjdCBQQ1NfWFBDU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZz0xPWNvbmZpZyBMQU45NjZYX1NXSVRDSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy04LVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTEwLVxcdHNlbGVjdCBWQ0FQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9Mjg9Y29uZmlnIExBTjk2OVhfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMzAtXFx0ZGVwZW5kcyBvbiBTUEFSWDVfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjMxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTg9Y29uZmlnIE1JQ1JPU09GVF9NQU5BXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yMy1cXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjI0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yNS1cXHRzZWxlY3QgTkVUX1NIQVBFUlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZz0yMD1jb25maWcgSU9OSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjUtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjctXFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz0xMTA9Y29uZmlnIFJUQVNFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTEzLVxcdHNlbGVjdCBDUkMzMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMTQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnPTI5PWNvbmZpZyBSQVZCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctMzUtXFx0c2VsZWN0IE1ESU9fQklUQkFOR1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZzozNjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTM3LVxcdHNlbGVjdCBQSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnPTI1PWNvbmZpZyBTTklfTkVUU0VDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0yOC1cXHRzZWxlY3QgUEhZTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc6Mjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnLTMwLVxcdHNlbGVjdCBNSUlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mj1jb25maWcgU1RNTUFDX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04LVxcdHNlbGVjdCBQQ1NfWFBDU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMC1cXHRzZWxlY3QgUEhZTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWc9MjY9Y29uZmlnIFRFSFVUSV9UTjQwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0yOC1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnOjI5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0zMC1cXHRzZWxlY3QgRldfTE9BREVSXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTUwPWNvbmZpZyBUSV9DUFNXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTU1LVxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo1NjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy01Ny1cXHRzZWxlY3QgUkVHTUFQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTY1PWNvbmZpZyBUSV9DUFNXX1NXSVRDSERFVlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy02OS1cXHRkZXBlbmRzIG9uIFRJX0NQVFMgfHwgIVRJX0NQVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjcwOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTcxLVxcdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9OTY9Y29uZmlnIFRJX0szX0FNNjVfQ1BTV19OVVNTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMS1cXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTAyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMy1cXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9MjA0PWNvbmZpZyBUSV9JQ1NTR19QUlVFVEhfU1IxXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwOC1cXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIwOTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMTAtXFx0ZGVwZW5kcyBvbiBQUlVfUkVNT1RFUFJPQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTE5PWNvbmZpZyBMSUJXWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIxLVxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6MjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yMy1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9Mj1jb25maWcgTVQ3Nl9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctMzUtXFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXFxua2VybmVsL2JwZi9LY29uZmlnOjM2OlxcdHNlbGVjdCBQQUdFX1BPT0wgaWYgTkVUXFxua2VybmVsL2JwZi9LY29uZmlnLTM3LVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyNTowMC42NTQ5MTY2OTVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE1NjMxMDE1NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBaZXJvLUNvcHkgUlggUGF0Y2ggZm9yIGlvX3VyaW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgYFBBR0VfUE9PTGAgY29uZmlndXJhdGlvbiBvcHRpb24gc2VlbXMgdG8gYmUgZW5hYmxlZCBmcmVxdWVudGx5IGR1ZSB0byBkZXBlbmRlbmNpZXMgZnJvbSBgQlBGX1NZU0NBTExgLCBgVkVUSGAsIGFuZCBgTkVUREVWU0lNYCwgd2hpY2ggYXJlIGNvbW1vbiBpbiBzeXprYWxsZXIgY29uZmlncy4gSSByZWFsaXplIEkgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IGFkZCBgUEFHRV9QT09MYCB0byBgRW5hYmxlQ29uZmlnc2AsIGJ1dCBJIGNhbiBzZWUgaXQgd291bGRuJ3QgaHVydCwgdGhvdWdoIHNpbmNlIGl0J3MgYSBib29sIHdpdGhvdXQgYSBwcm9tcHQsIGl0IG1pZ2h0IG5vdCBiZSBpZGVhbC4gSSAqY291bGQqIGFkZCBgVkVUSGAgb3IgYEJQRl9TWVNDQUxMYCBpZiBJIHdhbnQgdG8gYmUgKnN1cmUqIHRvIHRyaWdnZXIgaXQsIGJ1dCBhY3R1YWxseSBgSU9fVVJJTkdfWkNSWGAgZGlyZWN0bHkgZGVwZW5kcyBvbiBgUEFHRV9QT09MYCwgd2hpY2ggaXMgYSBnb29kIHJlbWluZGVyLlxuXG5TaW5jZSBJJ20gbG9va2luZyBhdCBpb191cmluZyB6ZXJvLWNvcHkgUlgsIEknbGwgZGVmaW5pdGVseSBsaXN0IGBJT19VUklOR2AgYW5kIGBORVRfUlhfQlVTWV9QT0xMYCBpbiBgRW5hYmxlQ29uZmlnc2AuIEFsdGhvdWdoIGBJT19VUklOR19aQ1JYYCBpcyBhIGBkZWZfYm9vbCB5YCwgYW5kIG5vdCB1c2VyLXNlbGVjdGFibGUsIGxpc3RpbmcgaXQgaXMgZmluZS4gSXQgbWlnaHQgZXZlbiBiZSB1c2VmdWwgZm9yIHRoZSBmdXp6ZXIgdG8ga25vdyBhYm91dCB0aGlzIGltcGxpY2l0IGRlcGVuZGVuY3kuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgcGF0Y2guIEknbSBzZWVpbmcgaXQgY2hlY2tzIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2Agd2l0aGluIGB6Y3J4X3JlZ2lzdGVyX25ldGRldmAsIHdoaWNoIGlzIGNhbGxlZCB0aHJvdWdoIGBpb19yZWdpc3Rlcl96Y3J4YCwgYW5kIHRoZSBwYXRjaCByZWplY3RzIG5ldGRldnMgdGhhdCBkb24ndCB1c2UgdGhlIG9wcyBsb2NrLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwgY2hhbmdlKi4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiB0aGUgYGlvX3VyaW5nYCB6ZXJvLWNvcHkgUlggcmVnaXN0cmF0aW9uIHBhdGgsIGFuZCB0aGVyZWZvcmUsIEkgKm11c3QqIGZ1enogdGhpcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emVyIGNhbiBoYW5kbGUgZGlmZmVyZW50IG5ldHdvcmsgZGV2aWNlIHR5cGVzIGFuZCB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGxlYWtzIG9uIGVycm9yIHBhdGhzLlxuXG5MZXQncyBkb3VibGUtY2hlY2s7IGB6Y3J4X3JlZ2lzdGVyX25ldGRldmAgaXMgaW5kZWVkIHN0YXRpYywgd2hpY2ggbWVhbnMgdGhhdCBgaW9fcmVnaXN0ZXJfemNyeGAgaXMgdGhlICpvbmx5KiBlbnRyeSBwb2ludCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LCBzbyB0aGF0J3MgdGhlIGNvcnJlY3Qgc3ltYm9sIHRvIGZvY3VzIG9uLiBMb29rcyBsaWtlIGBpb19yZWdpc3Rlcl96Y3J4YCBpcyB0aGUgb25seSBmdW5jdGlvbiBJIG5lZWQgdG8gbG9vayBhdCBoZXJlLiBBbHJpZ2h0LCBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjY0MywiT3V0cHV0VG9rZW5zIjoxMjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjU6MTIuMjE4MDIxMDUzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQyOTU5NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklPX1VSSU5HXCIsXG4gICAgXCJORVRfUlhfQlVTWV9QT0xMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW9fcmVnaXN0ZXJfemNyeFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBpbiB0aGUgaW9fdXJpbmcgemVyby1jb3B5IFJYIHJlZ2lzdHJhdGlvbiBwYXRoIHRvIHJlamVjdCBuZXR3b3JrIGRldmljZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0aGUgbmV0ZGV2IG9wcyBsb2NraW5nIG1vZGVsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgaW9fdXJpbmcgc3Vic3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZXJyb3IgcGF0aCBpcyBoYW5kbGVkIGNvcnJlY3RseSB3aXRob3V0IG1lbW9yeSBsZWFrcyBvciBvdGhlciByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiLFxuICAgIFwiTkVUX1JYX0JVU1lfUE9MTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvX3JlZ2lzdGVyX3pjcnhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgaW4gdGhlIGlvX3VyaW5nIHplcm8tY29weSBSWCByZWdpc3RyYXRpb24gcGF0aCB0byByZWplY3QgbmV0d29yayBkZXZpY2VzIHRoYXQgZG8gbm90IHN1cHBvcnQgdGhlIG5ldGRldiBvcHMgbG9ja2luZyBtb2RlbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGlvX3VyaW5nIHN1YnN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgd2l0aG91dCBtZW1vcnkgbGVha3Mgb3Igb3RoZXIgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow8kshv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 15:03:50 +0000 UTC FinishedAt: 2026-08-05 15:25:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "c21bb4193868a8de71fc4693fa741e195fdf5d86", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING", "NET_RX_BUSY_POLL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "c21bb4193868a8de71fc4693fa741e195fdf5d86", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING", "NET_RX_BUSY_POLL" ], "series_id": "6ad96a14-bbed-4660-9e21-3ef2944a2c15" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "io_register_zcrx" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPX1VSSU5HJiMzNDssCiAgICAmIzM0O05FVF9SWF9CVVNZX1BPTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpb19yZWdpc3Rlcl96Y3J4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBpbiB0aGUgaW9fdXJpbmcgemVyby1jb3B5IFJYIHJlZ2lzdHJhdGlvbiBwYXRoIHRvIHJlamVjdCBuZXR3b3JrIGRldmljZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0aGUgbmV0ZGV2IG9wcyBsb2NraW5nIG1vZGVsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgaW9fdXJpbmcgc3Vic3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZXJyb3IgcGF0aCBpcyBoYW5kbGVkIGNvcnJlY3RseSB3aXRob3V0IG1lbW9yeSBsZWFrcyBvciBvdGhlciByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNToyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDY5NDcyOGZhMjgzZmYyYTdhYjRiM2FhZWU4MjgzZGRmZGVjY2I0ZDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDE1OjIzOjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3pjcnguYyBiL2lvX3VyaW5nL3pjcnguY1xuaW5kZXggZjE0NjRlYThjYTY0YS4uMmViYTdkNGU0NDgzZiAxMDA2NDRcbi0tLSBhL2lvX3VyaW5nL3pjcnguY1xuJiM0MzsmIzQzOyYjNDM7IGIvaW9fdXJpbmcvemNyeC5jXG5AQCAtMTcsNiAmIzQzOzE3LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X3J4X3F1ZXVlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvdGNwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcnBzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L25ldGRldl9sb2NrLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvcGFnZV9wb29sLmhcdTAwM2VcbiBcbkBAIC04MjgsNiAmIzQzOzgyOSwxNSBAQCBzdGF0aWMgaW50IHpjcnhfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBpb196Y3J4X2lmcSAqaWZxLFxuIFxuIFx0bmV0ZGV2X2hvbGQoaWZxLVx1MDAzZW5ldGRldiwgXHUwMDI2aWZxLVx1MDAzZW5ldGRldl90cmFja2VyLCBHRlBfS0VSTkVMKTtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIG5ldGRldl9xdWV1ZV9nZXRfZG1hX2RldigpIHJlcXVpcmVzIHRoZSBuZXRkZXYgb3BzIGxvY2tpbmdcbiYjNDM7XHQgKiBtb2RlbC4gUmVqZWN0IGRldmljZXMgd2hpY2ggZG8gbm90IHN1cHBvcnQgaXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhpZnEtXHUwMDNlbmV0ZGV2KSkge1xuJiM0MztcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4mIzQzO1x0XHRnb3RvIG5ldGRldl9wdXRfdW5sb2NrO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZnEtXHUwMDNlZGV2ID0gbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KGlmcS1cdTAwM2VuZXRkZXYsIGlmX3J4cSwgTkVUREVWX1FVRVVFX1RZUEVfUlgpO1xuIFx0aWYgKCFpZnEtXHUwMDNlZGV2KSB7XG4gXHRcdHJldCA9IC1FT1BOT1RTVVBQO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT19VUklORyYjMzQ7LAogICAgJiMzNDtORVRfUlhfQlVTWV9QT0xMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fcmVnaXN0ZXJfemNyeCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgaW4gdGhlIGlvX3VyaW5nIHplcm8tY29weSBSWCByZWdpc3RyYXRpb24gcGF0aCB0byByZWplY3QgbmV0d29yayBkZXZpY2VzIHRoYXQgZG8gbm90IHN1cHBvcnQgdGhlIG5ldGRldiBvcHMgbG9ja2luZyBtb2RlbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGlvX3VyaW5nIHN1YnN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgd2l0aG91dCBtZW1vcnkgbGVha3Mgb3Igb3RoZXIgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OTQ3MjhmYTI4M2ZmMmE3YWI0YjNhYWVlODI4M2RkZmRlY2NiNGQxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgNSAxNToyMzoyMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3pjcnguYyBiL2lvX3VyaW5nL3pjcnguYwppbmRleCBmMTQ2NGVhOGNhNjRhLi4yZWJhN2Q0ZTQ0ODNmIDEwMDY0NAotLS0gYS9pb191cmluZy96Y3J4LmMKJiM0MzsmIzQzOyYjNDM7IGIvaW9fdXJpbmcvemNyeC5jCkBAIC0xNyw2ICYjNDM7MTcsNyBAQAogI2luY2x1ZGUgJmx0O25ldC9uZXRkZXZfcnhfcXVldWUuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvdGNwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3Jwcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtuZXQvbmV0ZGV2X2xvY2suaCZndDsKIAogI2luY2x1ZGUgJmx0O3RyYWNlL2V2ZW50cy9wYWdlX3Bvb2wuaCZndDsKIApAQCAtODI4LDYgJiM0Mzs4MjksMTUgQEAgc3RhdGljIGludCB6Y3J4X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgaW9femNyeF9pZnEgKmlmcSwKIAogCW5ldGRldl9ob2xkKGlmcS0mZ3Q7bmV0ZGV2LCAmYW1wO2lmcS0mZ3Q7bmV0ZGV2X3RyYWNrZXIsIEdGUF9LRVJORUwpOwogCiYjNDM7CS8qCiYjNDM7CSAqIG5ldGRldl9xdWV1ZV9nZXRfZG1hX2RldigpIHJlcXVpcmVzIHRoZSBuZXRkZXYgb3BzIGxvY2tpbmcKJiM0MzsJICogbW9kZWwuIFJlamVjdCBkZXZpY2VzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IGl0LgomIzQzOwkgKi8KJiM0MzsJaWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhpZnEtJmd0O25ldGRldikpIHsKJiM0MzsJCXJldCA9IC1FT1BOT1RTVVBQOwomIzQzOwkJZ290byBuZXRkZXZfcHV0X3VubG9jazsKJiM0MzsJfQomIzQzOwogCWlmcS0mZ3Q7ZGV2ID0gbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KGlmcS0mZ3Q7bmV0ZGV2LCBpZl9yeHEsIE5FVERFVl9RVUVVRV9UWVBFX1JYKTsKIAlpZiAoIWlmcS0mZ3Q7ZGV2KSB7CiAJCXJldCA9IC1FT1BOT1RTVVBQOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjMyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaW9fdXJpbmcgemNyeCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGlvX3VyaW5nL3pjcnguY2AsIHNwZWNpZmljYWxseSB0aGUgY2hhbmdlcyBpbiBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBjaGVjay4gSXQgbG9va3MgbGlrZSBpdOKAmXMgZW5zdXJpbmcgdGhhdCB0aGUgbmV0d29yayBkZXZpY2Ugc3VwcG9ydHMgdGhlIG5ldGRldiBvcHMgbG9ja2luZyBtb2RlbCBiZWZvcmUgcHJvY2VlZGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgY2hlY2sgaXMgbmVjZXNzYXJ5LiBTcGVjaWZpY2FsbHksIHRoZSBjb2RlIGFwcGVhcnMgdG8gYmUgdXNpbmcgYG5ldGRldl9xdWV1ZV9nZXRfZG1hX2RldigpYCBhbmQgdGhpcyBmdW5jdGlvbiByZXF1aXJlcyB0aGUgbmV0ZGV2IG9wcyBsb2NraW5nIG1vZGVsLiBJZiB0aGUgZGV2aWNlIGRvZXNuJiMzOTt0IHN1cHBvcnQgaXQsIHRoZSBwYXRjaCByaWdodGx5IHJlamVjdHMgaXQgd2l0aCBhbiBgLUVPUE5PVFNVUFBgIGVycm9yLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGdldCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgY29kZSBwYXRoLiBJIG5lZWQgdG8gdmVyaWZ5IHdoYXQgZXhhY3RseSBgbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KClgIG5lZWRzIGFuZCB3aHkgdGhpcyBsb2NraW5nIG1vZGVsIGlzIGltcG9ydGFudCBpbiB0aGlzIGNvbnRleHQuIEkgd2lsbCBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBpb191cmluZy96Y3J4LmNgIGZpbGUgaXRzZWxmIHRvIHNlZSBob3cgdGhlIGRldmljZSByZWdpc3RyYXRpb24gaXMgdXNlZCBhbmQgZXhwbG9yZSB0aGUgc3Vycm91bmRpbmcgY29kZS4gVGhlbiBJJiMzOTtsbCBjaGVjayBob3cgdGhpcyBtb2R1bGUgaXMgZW5hYmxlZC4gSSBuZWVkIHRvIGZpbmQgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBpbmNsdXNpb24gb2YgYGlvX3VyaW5nL3pjcnguY2AuIFRoaXMgdW5kZXJzdGFuZGluZyBpcyBjcnVjaWFsIGZvciBhc3Nlc3NpbmcgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSBhbmQgY29uZmlybWluZyBpdHMgY29ycmVjdG5lc3MsIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgYGlvX3VyaW5nYCBhbmQgaXRzIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucy4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBhZmZlY3RzIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBvciBkcml2ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pjcnhfcmVnaXN0ZXJfbmV0ZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW9fdXJpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2lvX3VyaW5nL3pjcnguYz03NTU9c3RhdGljIGludCBpbXBvcnRfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbi0tXG5pb191cmluZy96Y3J4LmMtODE2LVxuaW9fdXJpbmcvemNyeC5jOjgxNzpzdGF0aWMgaW50IHpjcnhfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBpb196Y3J4X2lmcSAqaWZxLFxuaW9fdXJpbmcvemNyeC5jLTgxOC1cdFx0XHRcdHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgKnJlZyxcbi0tXG5pb191cmluZy96Y3J4LmM9ODk0PWludCBpb19yZWdpc3Rlcl96Y3J4KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxuLS1cbmlvX3VyaW5nL3pjcnguYy05OTItXHRpZiAoIShyZWcuZmxhZ3MgXHUwMDI2IFpDUlhfUkVHX05PREVWKSkge1xuaW9fdXJpbmcvemNyeC5jOjk5MzpcdFx0cmV0ID0gemNyeF9yZWdpc3Rlcl9uZXRkZXYoaWZxLCBcdTAwMjZyZWcsIFx1MDAyNmFyZWEpO1xuaW9fdXJpbmcvemNyeC5jLTk5NC1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgaW9fdXJpbmcvemNyeC5jYCBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBhcmUgZm9yIHRoZSBgaW9fdXJpbmcvemNyeC5jYCBtb2R1bGUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZHJpdmluZyB0aGUgYmVoYXZpb3IgYW5kIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIHNldCB1cC4gUHJvYmFibHksIEkgc2hvdWxkIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIGEgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlIGZpcnN0LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgbW9zdCBkZXZpY2UgZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbCB3aWxsIGhhdmUgYSBLY29uZmlnIGZyYWdtZW50IHRoYXQgZGVmaW5lcyB0aGVzZSBvcHRpb25zLCByaWdodD8gTWF5YmUgdGhlcmUmIzM5O3MgYSBgLmNvbmZpZ2AgZW50cnksIG9yIHBlcmhhcHMgaXQmIzM5O3MgaGFuZGxlZCB0aHJvdWdoIGEgbW9yZSBzb3BoaXN0aWNhdGVkIG1lY2hhbmlzbSBpbnZvbHZpbmcgRFQgYmluZGluZ3Mgb3Igc3lzZnMgZW50cmllcy4gVGhpcyByZWFsbHkgZGVwZW5kcyBvbiB3aGV0aGVyIGl0JiMzOTtzIHN0YXRpY2FsbHkgY29tcGlsZWQgb3IgbW9kdWxhci4KCkkmIzM5O20gdGhpbmtpbmcsIGlzIGB6Y3J4LmNgIGEgbW9kdWxlLCBvciBpcyBpdCBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWw/IFRoYXQgd2lsbCBkaXJlY3QgbXkgc2VhcmNoLiBJZiBpdCYjMzk7cyBhIG1vZHVsZSwgSSBuZWVkIHRvIGtub3cgdGhlIHJpZ2h0IGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdG8gbG9hZCBpdCBvciB1bmxvYWQgaXQuIElmIGl0JiMzOTtzIHN0YXRpYywgSSYjMzk7bGwgaGF2ZSB0byBmaW5kIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiwgcG90ZW50aWFsbHkgZXhhbWluaW5nIHRoZSBgS2NvbmZpZ2AgZmlsZXMgaW4gdGhlIHNvdXJjZSB0cmVlIHRvIHRyYWNlIGl0cyBkZXBlbmRlbmNpZXMuIEkmIzM5O20gYWxzbyBjb25zaWRlcmluZyBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgc3Vic3lzdGVtcyDigJMgd2hhdCBraW5kIG9mIG1lbW9yeSBtYW5hZ2VtZW50IHBvbGljaWVzLCBpbnRlcnJ1cHQgaGFuZGxpbmcgc3RyYXRlZ2llcywgYW5kIGVycm9yIHJlcG9ydGluZyBtZWNoYW5pc21zIGFyZSBhdCBwbGF5PyBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyBpdHMgc2V0dGluZ3MgaW1wYWN0IHBlcmZvcm1hbmNlIGFuZCBmdW5jdGlvbmFsaXR5LiBJIHdpbGwgYWxzbyBsb29rIGZvciBhbnkgZG9jdW1lbnRhdGlvbiwgbWF5YmUgY29tbWVudHMgaW4gdGhlIGNvZGUgb3IgaWYgYW55IGRvYyBmaWxlcyBoYXZlIGJlZW4gZ2VuZXJhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pjcnhcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW9fdXJpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2lvX3VyaW5nL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX0lPX1VSSU5HKVx0XHQmIzQzOz0gaW9fdXJpbmcubyBvcGRlZi5vIGtidWYubyByc3JjLm8gbm90aWYubyBcXFxuLS1cbmlvX3VyaW5nL01ha2VmaWxlLTE4LVxuaW9fdXJpbmcvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX0lPX1VSSU5HX1pDUlgpXHQmIzQzOz0gemNyeC5vXG5pb191cmluZy9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfSU9fV1EpXHRcdCYjNDM7PSBpby13cS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUwMgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgQ09ORklHX0lPX1VSSU5HX1pDUlhgIERlcGVuZGVuY3kgQ2hhaW4qKgoKUmlnaHQsIHNvIGBDT05GSUdfSU9fVVJJTkdfWkNSWGAuLi4gdGhhdCYjMzk7cyB0aGUgb25lIHdlJiMzOTtyZSBpbnRlcmVzdGVkIGluLiBPa2F5LCBsZXQmIzM5O3MgZHJpbGwgZG93bi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gSSBhbHJlYWR5IGtub3cgd2hhdCBpdCAqaXMqLCBidXQgSSYjMzk7bSBnZXR0aW5nIGEgaGlnaC1sZXZlbCB2aWV3IGFuZCB3YW50IHRvIHNlZSBob3cgdGhpcyBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0ICpvdGhlciogdGhpbmdzIGFyZSBwdWxsZWQgaW4gd2hlbiB0aGF0JiMzOTtzIGVuYWJsZWQuIEl0JiMzOTtzIHRpbWUgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIGl0IGluIHRoaXMgc3BlY2lmaWMgY29udGV4dCwgYW55IHBvdGVudGlhbCBjb25mbGljdHMsIGFuZCB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uIG92ZXJoZWFkLiBHb3R0YSBtYWtlIHN1cmUgSSYjMzk7bSBub3QgYnJpbmdpbmcgaW4gYSBidW5jaCBvZiBzdHVmZiBJIGRvbiYjMzk7dCByZWFsbHkgbmVlZC4gTGV0JiMzOTtzIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElPX1VSSU5HX1pDUlgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvS2NvbmZpZy01LVxuaW9fdXJpbmcvS2NvbmZpZzo2OmNvbmZpZyBJT19VUklOR19aQ1JYXG5pb191cmluZy9LY29uZmlnLTctXHRkZWZfYm9vbCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgxNAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIGEgS2VybmVsIENvbmZpZ3VyYXRpb24gRmxhZyoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIGp1c3Qgc2F3IHNvbWV0aGluZyB0aGF0JiMzOTtzIG1ha2luZyBtZSByYWlzZSBhbiBleWVicm93LiBgSU9fVVJJTkdfWkNSWGAgaXMgZGVmaW5lZCBhcyBgZGVmX2Jvb2wgeWA/IFRoYXQgZmVlbHPigKYgdW5leHBlY3RlZCwgYW5kIEkgd2FudCB0byB2ZXJpZnkgdGhhdC4gSXQmIzM5O3MgdGltZSB0byBkb3VibGUtY2hlY2sgdGhhdCBrZXJuZWwgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIGhlYWQgb3ZlciB0byB0aGUgYGlvX3VyaW5nL0tjb25maWdgIGZpbGUgYW5kIGNvbmZpcm0gdGhhdCB0aGF0IGJvb2xlYW4gZGVmaW5pdGlvbiBpcyB3aGF0IEkgdGhpbmsgaXQgaXMuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYmVmb3JlIEkgbW92ZSBmb3J3YXJkLCBzbyBsZXQmIzM5O3MgZ2V0IHRoYXQgdmVyaWZpZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW9fdXJpbmcvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIGlvX3VyaW5nIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIElPX1VSSU5HX1pDUlhcbiAgIDc6XHRcdGRlZl9ib29sIHlcbiAgIDg6XHRcdGRlcGVuZHMgb24gSU9fVVJJTkdcbiAgIDk6XHRcdGRlcGVuZHMgb24gUEFHRV9QT09MXG4gIDEwOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgMTE6XHRcdGRlcGVuZHMgb24gTkVUX1JYX0JVU1lfUE9MTFxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBJT19VUklOR19CUEZcbiAgMTQ6XHRcdGRlZl9ib29sIHlcbiAgMTU6XHRcdGRlcGVuZHMgb24gQlBGXG4gIDE2Olx0XHRkZXBlbmRzIG9uIE5FVFxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBJT19VUklOR19CUEZfT1BTXG4gIDE5Olx0XHRkZWZfYm9vbCB5XG4gIDIwOlx0XHRkZXBlbmRzIG9uIElPX1VSSU5HXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMzIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBvd24gcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBJT19VUklOR19aQ1JYIERlcGVuZGVuY3kgQ2hhaW4qKgoKUmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYElPX1VSSU5HX1pDUlhgIGFuZCBpdHMgaW50ZXJkZXBlbmRlbmNpZXMuIEl0JiMzOTtzIGEga2V5IHBhcnQgb2YgdGhlIG1vZGVybiBuZXR3b3JrIHN0YWNrLCBidXQgbGlrZSBhbnkgY3V0dGluZy1lZGdlIGZlYXR1cmUsIGl0JiMzOTtzIHJlbGlhbnQgb24gYSBmZXcgZm91bmRhdGlvbmFsIGNvbXBvbmVudHMuIEkga25vdyBgSU9fVVJJTkdgIGl0c2VsZiBpcyBlc3NlbnRpYWwsIG9idmlvdXNseS4gVGhlbiB3ZSBoYXZlIGBQQUdFX1BPT0xgIOKAkyBjYW4mIzM5O3QgZG8gemVyby1jb3B5IHdpdGhvdXQgZWZmaWNpZW50IHBhZ2UgbWFuYWdlbWVudCwgdGhhdCYjMzk7cyBjbGVhci4gYElORVRgIGlzIGFub3RoZXIgb2J2aW91cyBvbmUuIEJ1dCBpdOKAmXMgdGhhdCBgTkVUX1JYX0JVU1lfUE9MTGAgZGVwZW5kZW5jeSB0aGF0JiMzOTtzIG1ha2luZyBtZSBwYXVzZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhhdCBzcGVjaWZpY2FsbHkgdGllcyBpbnRvIGBJT19VUklOR19aQ1JYYC4gVGltZSB0byBjaGVjayBpdCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfUlhfQlVTWV9QT0xMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTM0Mj1jb25maWcgQ0dST1VQX05FVF9DTEFTU0lEXG4tLVxubmV0L0tjb25maWctMzQ5LVxubmV0L0tjb25maWc6MzUwOmNvbmZpZyBORVRfUlhfQlVTWV9QT0xMXG5uZXQvS2NvbmZpZy0zNTEtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NzQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBgTkVUX1JYX0JVU1lfUE9MTGAgaW4gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBuZXR3b3JrIHN0YWNrJiMzOTtzIGNvbmZpZ3VyYXRpb24uIFJpZ2h0LCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgZnVuZGFtZW50YWwgY29uZmlndXJhdGlvbiBmaWxlIGZvciBuZXR3b3JrLXJlbGF0ZWQgc2V0dGluZ3MuIE15IGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdG8gbG9vayBkaXJlY3RseSBpbnRvIGBuZXQvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiwgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsIGhlbHAgdGV4dCBmb3IgYW55dGhpbmcgbmV0d29yay1zcGVjaWZpYyBhbmQgY29uZmlndXJhYmxlIHdpdGhpbiB0aGUga2VybmVsLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gYWZ0ZXIgYE5FVF9SWF9CVVNZX1BPTExgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoYXQga25vYiBjb250cm9scywgaXRzIGltcGxpY2F0aW9ucywgYW5kIGhvdyBpdCYjMzk7cyBkZWZpbmVkIHdpdGhpbiB0aGUgYnJvYWRlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gY29udGV4dC4gSG9wZWZ1bGx5LCBgbmV0L0tjb25maWdgIHdpbGwgcHJvdmlkZSBtZSB3aXRoIHRoZSBuZWNlc3NhcnkgYW5zd2Vycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzQ1Olx0XHRzZWxlY3QgU09DS19DR1JPVVBfREFUQVxuIDM0NjpcdFx0aGVscFxuIDM0NzpcdFx0ICBDZ3JvdXAgc3Vic3lzdGVtIGZvciB1c2UgYXMgZ2VuZXJhbCBwdXJwb3NlIHNvY2tldCBjbGFzc2lkIG1hcmtlciB0aGF0IGlzXG4gMzQ4Olx0XHQgIGJlaW5nIHVzZWQgaW4gY2xzX2Nncm91cCBhbmQgZm9yIG5ldGZpbHRlciBtYXRjaGluZy5cbiAzNDk6XHRcbiAzNTA6XHRjb25maWcgTkVUX1JYX0JVU1lfUE9MTFxuIDM1MTpcdFx0Ym9vbFxuIDM1MjpcdFx0ZGVmYXVsdCB5IGlmICFQUkVFTVBUX1JUIHx8IChQUkVFTVBUX1JUIFx1MDAyNlx1MDAyNiAhTkVUQ09OU09MRSlcbiAzNTM6XHRcbiAzNTQ6XHRjb25maWcgQlFMXG4gMzU1Olx0XHRib29sXG4gMzU2Olx0XHRwcm9tcHQgXCYjMzQ7RW5hYmxlIEJ5dGUgUXVldWUgTGltaXRzXCYjMzQ7XG4gMzU3Olx0XHRkZXBlbmRzIG9uIFNZU0ZTXG4gMzU4Olx0XHRzZWxlY3QgRFFMXG4gMzU5Olx0XHRkZWZhdWx0IHlcbiAzNjA6XHRcbiAzNjE6XHRjb25maWcgQlBGX1NUUkVBTV9QQVJTRVJcbiAzNjI6XHRcdGJvb2wgXCYjMzQ7ZW5hYmxlIEJQRiBTVFJFQU1fUEFSU0VSXCYjMzQ7XG4gMzYzOlx0XHRkZXBlbmRzIG9uIElORVRcbiAzNjQ6XHRcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA3NAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBhIEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhhdCBgTkVUX1JYX0JVU1lfUE9MTGAgaGFzIGEgY29uZGl0aW9uYWwgZGVmYXVsdCBiYXNlZCBvbiBgUFJFRU1QVF9SVGAgYW5kIGBORVRDT05TT0xFYC4gUmlnaHQsIHRoYXQmIzM5O3Mgc3RhbmRhcmQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIE1vdmluZyBvbiwgYElPX1VSSU5HYCBpcywgYXMgZXhwZWN0ZWQsIHVzdWFsbHkgZW5hYmxlZC4gR29vZC4gYFBBR0VfUE9PTGAgYW5kIGBJTkVUYCBhcmUgYWxzbyBsb2dpY2FsbHkgdGllZCB0byBgTkVUYCwgc28gdGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLgoKVGhlIHJlYWwgbWVhdCBvZiB0aGlzIGlzIHRoZSBwYXRjaCBpdHNlbGYuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3ZlIGdvdCBhIGNoZWNrIGJlaW5nIGFkZGVkIHdpdGhpbiBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgIGluIGBpb191cmluZy96Y3J4LmNgLiBNeSBzcGlkZXktc2Vuc2UgaXMgdGluZ2xpbmcg4oCTIHRoYXQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBgaW9fcmVnaXN0ZXJfemNyeGAsIHdoaWNoIGlzLCBpZiBteSBtZW1vcnkgc2VydmVzLCByZWxhdGVkIHRvIGFuIGBpb191cmluZ2AgcmVnaXN0cmF0aW9uIG9wY29kZS4gVGltZSB0byBjb25maXJtIHRoYXQgaHlwb3RoZXNpcy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYGlvX3JlZ2lzdGVyX3pjcnhgIGluIGBpb191cmluZy96Y3J4LmNgIHRvIHNlZSBwcmVjaXNlbHkgd2hhdCYjMzk7cyBnb2luZyBvbiB0aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG5ldyBjaGVjayBpcyBldmFsdWF0aW5nIGFuZCB3aHkgaXQmIzM5O3MgYmVpbmcgaW50cm9kdWNlZCB3aXRoaW4gdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBMb29rcyBsaWtlIGEgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgcGllY2Ugb2Yga2VybmVsLWxldmVsIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX3JlZ2lzdGVyX3pjcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDEtXHRcdFx0YnJlYWs7XG5pb191cmluZy9yZWdpc3Rlci5jOjk0MjpcdFx0cmV0ID0gaW9fcmVnaXN0ZXJfemNyeChjdHgsIGFyZyk7XG5pb191cmluZy9yZWdpc3Rlci5jLTk0My1cdFx0YnJlYWs7XG4tLVxuaW9fdXJpbmcvemNyeC5jPTg2Nz1zdGF0aWMgaW50IHpjcnhfdmFsaWRhdGVfbm90aWZfc3RhdHMoc3RydWN0IGlvX3pjcnhfaWZxICppZnEsXG4tLVxuaW9fdXJpbmcvemNyeC5jLTg5My1cbmlvX3VyaW5nL3pjcnguYzo4OTQ6aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy96Y3J4LmMtODk1LVx0XHQgICAgIHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgX191c2VyICphcmcpXG4tLVxuaW9fdXJpbmcvemNyeC5oPTg4PWludCBpb196Y3J4X2N0cmwoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcsIHVuc2lnbmVkIG5yX2FyZyk7XG5pb191cmluZy96Y3J4Lmg6ODk6aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy96Y3J4LmgtOTAtXHRcdFx0IHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgX191c2VyICphcmcpO1xuLS1cbmlvX3VyaW5nL3pjcnguaD05Nj1zdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqaW9femNyeF9nZXRfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxuLS1cbmlvX3VyaW5nL3pjcnguaC05OC0jZWxzZVxuaW9fdXJpbmcvemNyeC5oOjk5OnN0YXRpYyBpbmxpbmUgaW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy96Y3J4LmgtMTAwLVx0XHRcdFx0ICAgc3RydWN0IGlvX3VyaW5nX3pjcnhfaWZxX3JlZyBfX3VzZXIgKmFyZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk5MAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDExMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2ggUmVsYXRlZCB0byBpb191cmluZyBEZXZpY2UgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byB0aGUgYGlvX3JlZ2lzdGVyX3pjcnhgIGZ1bmN0aW9uLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQmIzM5O3MgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBgaW9fdXJpbmdfcmVnaXN0ZXJgIHN5c3RlbSBjYWxsLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrOiBgIW5ldGRldl9uZWVkX29wc19sb2NrKGlmcS0mZ3Q7bmV0ZGV2KWAgYW5kLCBpZiB0aGF0IGNvbmRpdGlvbiBpcyB0cnVlLCBpdCByZXR1cm5zIGAtRU9QTk9UU1VQUGAuCgpFc3NlbnRpYWxseSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGlvX3VyaW5nIHN1YnN5c3RlbS4gV2hhdCBpdCYjMzk7cyBkb2luZyBpcyBwcmV2ZW50aW5nIHRoZSByZWdpc3RyYXRpb24gb2YgbmV0d29yayBkZXZpY2VzIHRoYXQgZG9uJiMzOTt0IHN1cHBvcnQgdGhpcyAmIzM0O29wcyBsb2NraW5nIG1vZGVsLCYjMzQ7IHdoYXRldmVyIHRoYXQgZW50YWlscy4gVGhpcyBmZWVscyBwcmV0dHkgc2lnbmlmaWNhbnQsIGEgY2hhbmdlIGF0IHRoZSBjb3JlIGxldmVsLiBEZWZpbml0ZWx5IHdvcnRoIGdpdmluZyB0aGlzIHNvbWUgZnV6emluZyBhdHRlbnRpb24uCgpJIG5lZWQgdG8gZGlnIGludG8gYG5ldGRldl9uZWVkX29wc19sb2NrYCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBjcml0ZXJpYSBhcmUgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIG5ldHdvcmsgZGV2aWNlIG5lZWRzIHRoaXMgb3BzIGxvY2suIFRoYXQgd2lsbCB0ZWxsIHRoZSB3aG9sZSBzdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0ZGV2X25lZWRfb3BzX2xvY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmM9MzE9aW50IHBoeV9saW5rX3RvcG9fYWRkX3BoeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfbGlua190b3BvbG9neS5jLTQ0LVx0ICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYzo0NTpcdGlmIChXQVJOX09OX09OQ0UobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSkpXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYy00Ni1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dhbi9sYXBiZXRoZXIuYz04Mj1zdGF0aWMgX19pbmxpbmVfXyBpbnQgZGV2X2lzX2V0aGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2FuL2xhcGJldGhlci5jLTgzLXtcbmRyaXZlcnMvbmV0L3dhbi9sYXBiZXRoZXIuYzo4NDpcdHJldHVybiBkZXYtXHUwMDNldHlwZSA9PSBBUlBIUkRfRVRIRVIgXHUwMDI2XHUwMDI2ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpO1xuZHJpdmVycy9uZXQvd2FuL2xhcGJldGhlci5jLTg1LX1cbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTIxNDc9c3RydWN0IG5ldF9kZXZpY2Uge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU4Ny1cdCAqICAgYW5kIG90aGVyIGNhbGxiYWNrcywgdGhhdCBpcyB0aGUgaW5zdGFuY2UgbG9jayBvbiBkZXZpY2VzIGZvclxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNTg4Olx0ICogICB3aGljaCBuZXRkZXZfbmVlZF9vcHNfbG9jaygpIHJldHVybnMgdHJ1ZSwgb3RoZXJ3aXNlIGJ5IHJ0bmxfbG9jaztcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU4OS1cdCAqXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1OTAtXHQgKiAtIGRvdWJsZSBvcHMgcHJvdGVjdGVkIC0gYWx3YXlzIHByb3RlY3RlZCBieSBydG5sX2xvY2sgYnV0IGZvclxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNTkxOlx0ICogICBkZXZpY2VzIGZvciB3aGljaCBuZXRkZXZfbmVlZF9vcHNfbG9jaygpIHJldHVybnMgdHJ1ZSAtIGFsc29cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU5Mi1cdCAqICAgdGhlIGluc3RhbmNlIGxvY2suXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD0yMT1uZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcl9pbnZpc2libGUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTI3LVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDoyODpzdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X25lZWRfb3BzX2xvY2soY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMjkte1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9Mzk9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9sb2NrX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC00MC17XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjQxOlx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTQyLVx0XHRuZXRkZXZfbG9jayhkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9NDU9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl91bmxvY2tfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTQ2LXtcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6NDc6XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNDgtXHRcdG5ldGRldl91bmxvY2soZGV2KTtcbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTUxPXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfbG9ja19vcHNfdG9fZnVsbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC01Mi17XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjUzOlx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTU0LVx0XHRuZXRkZXZfYXNzZXJ0X2xvY2tlZChkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9NTk9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl91bmxvY2tfZnVsbF90b19vcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNjAte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo2MTpcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC02Mi1cdFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTY3PXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTY4LXtcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6Njk6XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNzAtXHRcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZGV2LVx1MDAzZWxvY2spO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9ODM9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9hc3NlcnRfbG9ja2VkX29wcyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC04NC17XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjg1Olx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTg2LVx0XHRuZXRkZXZfYXNzZXJ0X2xvY2tlZChkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9ODk9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9sb2NrX29wc19jb21wYXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtOTAte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo5MTpcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC05Mi1cdFx0bmV0ZGV2X2xvY2soZGV2KTtcbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTk3PXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfdW5sb2NrX29wc19jb21wYXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtOTgte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo5OTpcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0xMDAtXHRcdG5ldGRldl91bmxvY2soZGV2KTtcbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTEwNj1zdGF0aWMgaW5saW5lIGludCBuZXRkZXZfaXNfbG9ja2VkX29wc19jb21wYXQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMTA3LXtcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6MTA4Olx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTEwOS1cdFx0cmV0dXJuIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZkZXYtXHUwMDNlbG9jayk7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oPTQzPXN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHgge1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaC05MS0gKlxuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oOjkyOiAqIE9wcyBhcmUgY2FsbGVkIHVuZGVyIHRoZSBpbnN0YW5jZSBsb2NrIGlmIG5ldGRldl9uZWVkX29wc19sb2NrKClcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaC05My0gKiByZXR1cm5zIHRydWUsIG90aGVyd2lzZSB1bmRlciBydG5sX2xvY2suXG4tLVxuaW9fdXJpbmcvemNyeC5jPTgxNz1zdGF0aWMgaW50IHpjcnhfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBpb196Y3J4X2lmcSAqaWZxLFxuLS1cbmlvX3VyaW5nL3pjcnguYy04MzUtXHQgKi9cbmlvX3VyaW5nL3pjcnguYzo4MzY6XHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGlmcS1cdTAwM2VuZXRkZXYpKSB7XG5pb191cmluZy96Y3J4LmMtODM3LVx0XHRyZXQgPSAtRU9QTk9UU1VQUDtcbi0tXG5uZXQvY29yZS9kZXYuYz0xMTMyNz1pbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2NvcmUvZGV2LmMtMTEzODEtXG5uZXQvY29yZS9kZXYuYzoxMTM4MjpcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIFx1MDAyNlx1MDAyNlxubmV0L2NvcmUvZGV2LmMtMTEzODMtXHQgICAgZGV2LVx1MDAzZW5ldGRldl9vcHMtXHUwMDNlbmRvX3NldF9yeF9tb2RlIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9jb3JlL2Rldi5jPTEyMzcwPXZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCxcbi0tXG5uZXQvY29yZS9kZXYuYy0xMjQwMy1cdFx0XHRjb250aW51ZTtcbm5ldC9jb3JlL2Rldi5jOjEyNDA0Olx0XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSkge1xubmV0L2NvcmUvZGV2LmMtMTI0MDUtXHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZkZXYtXHUwMDNlY2xvc2VfbGlzdCwgXHUwMDI2Y2xvc2VfaGVhZCk7XG4tLVxubmV0L2NvcmUvZGV2LmMtMTI0MTItXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgaGVhZCwgdW5yZWdfbGlzdCkge1xubmV0L2NvcmUvZGV2LmM6MTI0MTM6XHRcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbm5ldC9jb3JlL2Rldi5jLTEyNDE0LVx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZGV2LVx1MDAzZWNsb3NlX2xpc3QsIFx1MDAyNmNsb3NlX2hlYWQpO1xuLS1cbm5ldC9jb3JlL2Rldi5jPTEyNTMwPWludCBfX2Rldl9jaGFuZ2VfbmV0X25hbWVzcGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L2NvcmUvZGV2LmMtMTI2MjAtXG5uZXQvY29yZS9kZXYuYzoxMjYyMTpcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbm5ldC9jb3JlL2Rldi5jLTEyNjIyLVx0XHRuZXRkZXZfbG9jayhkZXYpO1xuLS1cbm5ldC9jb3JlL2Rldi5jLTEyNjkxLVx0ZGV2LVx1MDAzZW1vdmluZ19ucyA9IGZhbHNlO1xubmV0L2NvcmUvZGV2LmM6MTI2OTI6XHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5uZXQvY29yZS9kZXYuYy0xMjY5My1cdFx0bmV0ZGV2X3VubG9jayhkZXYpO1xuLS1cbm5ldC9jb3JlL2Rldi5oPTE5MD1zdGF0aWMgaW5saW5lIHZvaWQgbmV0aWZfc2V0X3VwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgdmFsdWUpXG4tLVxubmV0L2NvcmUvZGV2LmgtMTk2LVxubmV0L2NvcmUvZGV2Lmg6MTk3Olx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxubmV0L2NvcmUvZGV2LmgtMTk4LVx0XHRuZXRkZXZfbG9jayhkZXYpO1xubmV0L2NvcmUvZGV2LmgtMTk5LVx0ZGV2LVx1MDAzZXVwID0gdmFsdWU7XG5uZXQvY29yZS9kZXYuaDoyMDA6XHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5uZXQvY29yZS9kZXYuaC0yMDEtXHRcdG5ldGRldl91bmxvY2soZGV2KTtcbi0tXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jPTEzNjI9dm9pZCBfX2Rldl9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmMtMTM3NC1cdGlmIChvcHMtXHUwMDNlbmRvX3NldF9yeF9tb2RlX2FzeW5jIHx8IG9wcy1cdTAwM2VuZG9fY2hhbmdlX3J4X2ZsYWdzIHx8XG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jOjEzNzU6XHQgICAgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSkge1xubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYy0xMzc2LVx0XHRuZXRpZl9yeF9tb2RlX3F1ZXVlKGRldik7XG4tLVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYz0xMDEzPWludCBuZXRkZXZfbmxfYmluZF9yeF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy0xMDU2LVx0XHRlcnIgPSAtRU5PREVWO1xubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxMDU3Olx0ZWxzZSBpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKG5ldGRldikpXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTEwNTgtXHRcdGVyciA9IC1FT1BOT1RTVVBQO1xuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI0NT1pbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjUwLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjUxOlx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjUyLVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYz0zNjEwPV9fZGV2X2V0aHRvb2woc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaWZyZXEgKmlmciwgdm9pZCBfX3VzZXIgKnVzZXJhZGRyLFxuLS1cbm5ldC9ldGh0b29sL2lvY3RsLmMtMzYyMS1cbm5ldC9ldGh0b29sL2lvY3RsLmM6MzYyMjpcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIHx8XG5uZXQvZXRodG9vbC9pb2N0bC5jLTM2MjMtXHRcdCAgICBldGh0b29sX2NtZF9jaGFuZ2VzX2ZlYXR1cmVzKGV0aGNtZCkgfHxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTA3PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5jLTUzOS1cdGlmIChyZXFfaW5mby1cdTAwM2VkZXYpIHtcbm5ldC9ldGh0b29sL25ldGxpbmsuYzo1NDA6XHRcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhyZXFfaW5mby1cdTAwM2VkZXYpIHx8XG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtNTQxLVx0XHRcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKHJlcV9pbmZvLVx1MDAzZWRldiwgY21kKTtcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTk0PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kdW1wX29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy02MDgtXHRldGhubF9pbml0X3JlcGx5X2RhdGEoY3R4LVx1MDAzZXJlcGx5X2RhdGEsIGN0eC1cdTAwM2VvcHMsIGRldik7XG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6NjA5Olx0bmVlZF9ydG5sID0gIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikgfHxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy02MTAtXHRcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKGRldiwgY3R4LVx1MDAzZW9wcy1cdTAwM2VyZXF1ZXN0X2NtZCk7XG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5jPTkwMD1zdGF0aWMgaW50IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtOTMwLVx0ZGV2ID0gcmVxX2luZm8tXHUwMDNlZGV2O1xubmV0L2V0aHRvb2wvbmV0bGluay5jOjkzMTpcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIHx8XG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtOTMyLVx0XHQgICAgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubChkZXYsIGNtZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3MzEKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgaW9fdXJpbmcgWmVyby1Db3B5IFJYIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgbWFraW5nIGEgY3J1Y2lhbCBmdW5jdGlvbmFsIGNoYW5nZSByZWdhcmRpbmcgYGlvX3VyaW5nYCB6ZXJvLWNvcHkgUlggKHpjcngpLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgLCB3aGVyZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNoZWNrIHVzaW5nIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AuIEVzc2VudGlhbGx5LCB6Y3J4IHdpbGwgbm93ICpvbmx5KiB3b3JrIGlmIHRoZSBuZXR3b3JrIGRldmljZSB1dGlsaXplcyB0aGUgbmV3IG9wcyBsb2NraW5nIG1vZGVsLiBUaGlzIGlzIGltcG9ydGFudC4KCkdpdmVuIHRoaXMgZnVuY3Rpb25hbGl0eSBzaGlmdCwgbXkgZmlyc3QgdGhvdWdodCBpcyAmIzM0O1dvcnRoRnV6emluZz10cnVlJiMzNDsuIEl0JiMzOTtzIGEgY2xlYXIgY2hhbmdlIGluIGJlaGF2aW9yIGFuZCBhIGdvb2QgcGxhY2UgdG8gZm9jdXMgZnV6emluZyBlZmZvcnRzLgoKSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMsIHBhcnRpY3VsYXJseSBgaW9fcmVnaXN0ZXJfemNyeGAgYW5kIGB6Y3J4X3JlZ2lzdGVyX25ldGRldmAuIEdpdmVuIHRoYXQgYHpjcnhfcmVnaXN0ZXJfbmV0ZGV2YCBpcyBzdGF0aWMsIG15IGF0dGVudGlvbiBpcyBsaWtlbHkgYmV0dGVyIGRpcmVjdGVkIGF0IGBpb19yZWdpc3Rlcl96Y3J4YCBhcyB0aGUga2V5IGVudHJ5IHBvaW50LgoKTm93LCBmb3IgZW5hYmxpbmcgdGhpcyBmdW5jdGlvbmFsaXR5LiBUaGUgbmVjZXNzYXJ5IGNvbmZpZ3MgYXJlIGBJT19VUklOR19aQ1JYYCwgYElPX1VSSU5HYCwgYFBBR0VfUE9PTGAsIGBJTkVUYCwgYW5kIGBORVRfUlhfQlVTWV9QT0xMYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSB3ZWxsIHVuZGVyc3Rvb2QgYW5kIGV4cGxpY2l0bHkgY29uc2lkZXJlZCBmb3IgYW55IHRlc3RpbmcuCgpXYWl0LCBgSU9fVVJJTkdfWkNSWGAgaXMgYGRlZl9ib29sIHlgIGluIGBpb191cmluZy9LY29uZmlnYC4gVGhhdCBtZWFucyBpdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQsICppZiogdGhlIGRlcGVuZGVuY2llcyBhcmUgc2F0aXNmaWVkLiBJdHMgZGVwZW5kZW5jaWVzIGFyZSBgSU9fVVJJTkdgLCBgUEFHRV9QT09MYCwgYElORVRgLCBhbmQgYE5FVF9SWF9CVVNZX1BPTExgLiBgTkVUX1JYX0JVU1lfUE9MTGAgaXMgYWxzbyBlZmZlY3RpdmVseSBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gbW9zdCBjYXNlcywgYmVpbmcgYGJvb2xgLCBgZGVmYXVsdCB5IGlmICFQUkVFTVBUX1JUIHx8IChQUkVFTVBUX1JUICZhbXA7JmFtcDsgIU5FVENPTlNPTEUpYC4gSG93ZXZlciwgaXTigJlzIHN0aWxsIGdvb2QgdG8gZXhwbGljaXRseSBsaXN0IGFsbCBvZiB0aGUgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLgoKSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSBmb3IgYHpjcnhfcmVnaXN0ZXJfbmV0ZGV2YCBpbiBgaW9fdXJpbmcvemNyeC5jYCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBpbXBsZW1lbnRhdGlvbiBiZXR0ZXIuIFRoaXMgd2lsbCBjbGFyaWZ5IGhvdyB0aGUgbG9ja2luZyBjaGVjayBpbnRlcmFjdHMgd2l0aCB0aGUgZXhpc3RpbmcgY29kZSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6Y3J4X3JlZ2lzdGVyX25ldGRldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2lvX3VyaW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy96Y3J4LmM9NzU1PXN0YXRpYyBpbnQgaW1wb3J0X3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG4tLVxuaW9fdXJpbmcvemNyeC5jLTgxNi1cbmlvX3VyaW5nL3pjcnguYzo4MTc6c3RhdGljIGludCB6Y3J4X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgaW9femNyeF9pZnEgKmlmcSxcbmlvX3VyaW5nL3pjcnguYy04MTgtXHRcdFx0XHRzdHJ1Y3QgaW9fdXJpbmdfemNyeF9pZnFfcmVnICpyZWcsXG4tLVxuaW9fdXJpbmcvemNyeC5jPTg5ND1pbnQgaW9fcmVnaXN0ZXJfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbi0tXG5pb191cmluZy96Y3J4LmMtOTkyLVx0aWYgKCEocmVnLmZsYWdzIFx1MDAyNiBaQ1JYX1JFR19OT0RFVikpIHtcbmlvX3VyaW5nL3pjcnguYzo5OTM6XHRcdHJldCA9IHpjcnhfcmVnaXN0ZXJfbmV0ZGV2KGlmcSwgXHUwMDI2cmVnLCBcdTAwMjZhcmVhKTtcbmlvX3VyaW5nL3pjcnguYy05OTQtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODI2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBaQ1JYIERyaXZlciBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHpjcnhfcmVnaXN0ZXJfbmV0ZGV2YCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGZsYWdnZWQgYXMgYHN0YXRpY2AuIFRoYXQgbWVhbnMgaXQmIzM5O3MgaW50ZXJuYWwgdG8gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggaXMgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uICBOb3csIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIGRyaXZlciwgdGhlIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIG91dHNpZGUsIHNlZW1zIHRvIGJlIGBpb19yZWdpc3Rlcl96Y3J4YC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcywgKmlzKiBgaW9fcmVnaXN0ZXJfemNyeGAgZXhwb3J0ZWQgZm9yIG90aGVyIG1vZHVsZXMgdG8gdXNlLCBvciBpcyBpdCBhbHNvIGNvbmZpbmVkIHRvIHRoZSBgaW9fdXJpbmcvcmVnaXN0ZXIuY2AgZmlsZSBsaWtlIGB6Y3J4X3JlZ2lzdGVyX25ldGRldmA/IEtub3dpbmcgdGhhdCB3aWxsIGRldGVybWluZSB0aGUgZ2VuZXJhbCBhY2Nlc3Mgb2YgdGhlIGZ1bmN0aW9uYWxpdHkuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgdmlzaWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTU6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW9fcmVnaXN0ZXJfemNyeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2lvX3VyaW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy9yZWdpc3Rlci5jPTc1MD1zdGF0aWMgaW50IF9faW9fdXJpbmdfcmVnaXN0ZXIoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHVuc2lnbmVkIG9wY29kZSxcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jLTk0MS1cdFx0XHRicmVhaztcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6OTQyOlx0XHRyZXQgPSBpb19yZWdpc3Rlcl96Y3J4KGN0eCwgYXJnKTtcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtOTQzLVx0XHRicmVhaztcbi0tXG5pb191cmluZy96Y3J4LmM9ODY3PXN0YXRpYyBpbnQgemNyeF92YWxpZGF0ZV9ub3RpZl9zdGF0cyhzdHJ1Y3QgaW9femNyeF9pZnEgKmlmcSxcbi0tXG5pb191cmluZy96Y3J4LmMtODkzLVxuaW9fdXJpbmcvemNyeC5jOjg5NDppbnQgaW9fcmVnaXN0ZXJfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbmlvX3VyaW5nL3pjcnguYy04OTUtXHRcdCAgICAgc3RydWN0IGlvX3VyaW5nX3pjcnhfaWZxX3JlZyBfX3VzZXIgKmFyZylcbi0tXG5pb191cmluZy96Y3J4Lmg9ODg9aW50IGlvX3pjcnhfY3RybChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZywgdW5zaWduZWQgbnJfYXJnKTtcbmlvX3VyaW5nL3pjcnguaDo4OTppbnQgaW9fcmVnaXN0ZXJfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbmlvX3VyaW5nL3pjcnguaC05MC1cdFx0XHQgc3RydWN0IGlvX3VyaW5nX3pjcnhfaWZxX3JlZyBfX3VzZXIgKmFyZyk7XG4tLVxuaW9fdXJpbmcvemNyeC5oPTk2PXN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICppb196Y3J4X2dldF9yZWdpb24oc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG4tLVxuaW9fdXJpbmcvemNyeC5oLTk4LSNlbHNlXG5pb191cmluZy96Y3J4Lmg6OTk6c3RhdGljIGlubGluZSBpbnQgaW9fcmVnaXN0ZXJfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbmlvX3VyaW5nL3pjcnguaC0xMDAtXHRcdFx0XHQgICBzdHJ1Y3QgaW9fdXJpbmdfemNyeF9pZnFfcmVnIF9fdXNlciAqYXJnKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU1NAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKk5hcnJvd2luZyB0aGUgSW52ZXN0aWdhdGlvbioqCgpBbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBpb19yZWdpc3Rlcl96Y3J4YCBpcyB0aGUga2V5IGZ1bmN0aW9uIHRvIHJlYWxseSBob25lIGluIG9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHN5c3RlbS4gSSBzaG91bGQgZGVmaW5pdGVseSBzZWUgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQuIEJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgc2hvdWxkIGRvIGEgcXVpY2sgc3dlZXAgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBvYnZpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIGNoZWNrIGZvciBgSU9fVVJJTkdgLCBgUEFHRV9QT09MYCwgYElORVRgLCBhbmQgYE5FVF9SWF9CVVNZX1BPTExgIOKAkyB0aGVzZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzIHdoZW4geW91JiMzOTtyZSBkZWFsaW5nIHdpdGggSS9PIGFuZCBuZXR3b3JraW5nIHBlcmZvcm1hbmNlLiBKdXN0IHdhbnQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IHBhcnRpY3VsYXJseSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGBQQUdFX1BPT0xgIGNvbmZpZ3VyYXRpb24sIHRoYXQgc2VlbXMgbGlrZSBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZSB2ZXJ5IHJlbGF0ZWQgdG8gdGhlIHpjcnggZnVuY3Rpb25hbGl0eSwgaWYgdGhpcyBjb2RlIGlzIGRlc2lnbmVkIHRoZSB3YXkgSSBleHBlY3QgaXQgdG8gYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQQUdFX1BPT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NDg3PWNvbmZpZyBORVRfREVWTElOS1xuLS1cbm5ldC9LY29uZmlnLTQ5MC1cbm5ldC9LY29uZmlnOjQ5MTpjb25maWcgUEFHRV9QT09MXG5uZXQvS2NvbmZpZy00OTItXHRib29sXG5uZXQvS2NvbmZpZy00OTMtXG5uZXQvS2NvbmZpZzo0OTQ6Y29uZmlnIFBBR0VfUE9PTF9TVEFUU1xubmV0L0tjb25maWctNDk1LVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTU4CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIFBBR0VfUE9PTCBEZXBlbmRlbmN5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBjb25maWd1cmF0aW9uLCBhbmQgSSBzZWUgdGhpcyBgUEFHRV9QT09MYCBvcHRpb24g4oCTIGl0JiMzOTtzIGEgYm9vbGVhbiwgdHlwaWNhbGx5IHNvbWV0aGluZyBkcml2ZXJzIGRlY2lkZSBvbi4gSG1tLCBidXQgdGhlbiBJIG5vdGljZSBgSU9fVVJJTkdfWkNSWGAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgUEFHRV9QT09MYC4gVGhhdCBtZWFucyBpZiBgUEFHRV9QT09MYCBpc24mIzM5O3QgZW5hYmxlZCwgYElPX1VSSU5HX1pDUlhgIGlzIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQuCgpBbHJpZ2h0LCBzbyB0aGUgbmF0dXJhbCBpbmNsaW5hdGlvbiBpcyB0byB0aGluayBtYXliZSB3ZSBzaG91bGQganVzdCAqZm9yY2UqIGBQQUdFX1BPT0xgIG9uLCByaWdodD8gQnV0IHdhaXQgYSBtaW51dGUuIGBQQUdFX1BPT0xgIGlzIGEgYm9vbGVhbiB3aXRob3V0IGEgcHJvbXB0LiBUaGF0IGdlbmVyYWxseSBtZWFucyBpdCBjYW4gKm9ubHkqIGJlIHNlbGVjdGVkIGJ5IGFub3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb24sIG5vdCBkaXJlY3RseSBlbmFibGVkIGluIHRoZSBgLmNvbmZpZ2AgZmlsZS4gSSBjYW4mIzM5O3QganVzdCBzbGFwIGEgYFlgIG9uIGl0LgoKU28sIHRoZSBuZXh0IG9idmlvdXMgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIGV2ZW4gKnBvc3NpYmxlKiB0byBlbmFibGUgaXQgZGlyZWN0bHkuIEdpdmVuIHRoZSBsYWNrIG9mIGEgcHJvbXB0LCBJJiMzOTttIGZhaXJseSBjZXJ0YWluIEkgY2FuJiMzOTt0IGVuYWJsZSBgUEFHRV9QT09MYCBkaXJlY3RseSBpbiB0aGUgYC5jb25maWdgIHVubGVzcyBzb21ldGhpbmcgZWxzZSBzZWxlY3RzIGl0IGZvciBtZS4gVGhhdCYjMzk7cyB0aGUgcXVlc3Rpb24gSSBoYXZlIHRvIGFuc3dlciBub3cuIEkgbmVlZCB0byBzZWUgKndoYXQqIGV4YWN0bHkgc2VsZWN0cyBgUEFHRV9QT09MYCwgYW5kIHRoZW4gdHJhY2UgaG93IHRvIG1ha2Ugc3VyZSB0aGF0IHdoYXRldmVyJiMzOTtzIHNlbGVjdGluZyBpdCBpcyBlbmFibGVkLCBvciBpZiBpdCBtYWtlcyBzZW5zZSB0byBlbmFibGUgaXQgaW4gdGhpcyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgUEFHRV9QT09MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NDM1PWNvbmZpZyBWRVRIXG5kcml2ZXJzL25ldC9LY29uZmlnLTQzNi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZXRoZXJuZXQgcGFpciBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM3Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00NDM9Y29uZmlnIFZJUlRJT19ORVRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0Ny1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ4Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0Ny1cdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXG5kcml2ZXJzL25ldC9LY29uZmlnOjU0ODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ5LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4Ny1cdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4ODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNTg5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvS2NvbmZpZzo2MTE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMi1cdHNlbGVjdCBORVRfU0hBUEVSXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc9MTg9Y29uZmlnIE5FVF9BSVJPSEFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMS1cdHNlbGVjdCBORVRfQUlST0hBX05QVVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc9MTg9Y29uZmlnIEFMSUJBQkFfRUVBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiA2NEJJVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9NzI9Y29uZmlnIEJDTUdFTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04MC1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6ODE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgyLVx0c2VsZWN0IEJST0FEQ09NX1BIWSBpZiBBUkNIX0JDTTI4MzVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTIwNz1jb25maWcgQk5YVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjEzLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIxNDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjE1LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjU4PWNvbmZpZyBCTkdFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjEtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjYyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjMtXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjY5PWNvbmZpZyBCQ01BU1Bcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI3NS1cdHNlbGVjdCBNRElPX0JDTV9VTklNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6Mjc2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNzctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnPTY9Y29uZmlnIEVOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctOC1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy0xMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnPTE5PWNvbmZpZyBUU05FUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjMtXHRzZWxlY3QgUEhZTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnOjI0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz0yMz1jb25maWcgRkVDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzEtXHRzZWxlY3QgRklYRURfUEhZXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzozMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTMzLVx0aW1wbHkgUEFHRV9QT09MX1NUQVRTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc9MTg9Y29uZmlnIEdWRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz05MT1jb25maWcgSE5TM1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk0LVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzo5NTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTE0Nz1jb25maWcgSElCTUNHRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1My1cdHNlbGVjdCBSRUFMVEVLX1BIWVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6MTU0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTU1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZz02PWNvbmZpZyBISU5JQzNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTQtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc6MTU6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWc9ND1jb25maWcgTElCRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZy01LVx0dHJpc3RhdGUgXCYjMzQ7Q29tbW9uIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aClcJiMzNDsgaWYgQ09NUElMRV9URVNUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZzo2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWctNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9NTk9Y29uZmlnIE1WTkVUQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02My1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjU6XHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTg2PWNvbmZpZyBNVlBQMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MC1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6OTE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0zMT1jb25maWcgT0NURU9OVFgyX1BGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozNTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzYtXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMjAtXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MjE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMy1cdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnPTY9Y29uZmlnIE1MWDRfRU5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctOS1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZzoxMDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy0xMS1cdHNlbGVjdCBNTFg0X0NPUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0yOT1jb25maWcgTUxYNV9DT1JFX0VOXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzEtXHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IEVUSEVSTkVUIFx1MDAyNlx1MDAyNiBJTkVUIFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IE1MWDVfQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzozMzpcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTM0LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc9MzM9Y29uZmlnIE1MWFNXX1BDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzUtXHRkZXBlbmRzIG9uIFBDSSBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBNTFhTV19DT1JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjM2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNy1cdGRlZmF1bHQgbVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjctXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOS1cdHNlbGVjdCBQQ1NfWFBDU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc9MT1jb25maWcgTEFOOTY2WF9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTgtXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy0xMC1cdHNlbGVjdCBWQ0FQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTI4PWNvbmZpZyBMQU45NjlYX1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMC1cdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjMxOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE4PWNvbmZpZyBNSUNST1NPRlRfTUFOQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTIzLVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjI0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjUtXHRzZWxlY3QgTkVUX1NIQVBFUlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc9MjA9Y29uZmlnIElPTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNS1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI3LVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTMtXHRzZWxlY3QgQ1JDMzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMTQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz0yOT1jb25maWcgUkFWQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNS1cdHNlbGVjdCBNRElPX0JJVEJBTkdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZzozNjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNy1cdHNlbGVjdCBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZz0yNT1jb25maWcgU05JX05FVFNFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnLTI4LVx0c2VsZWN0IFBIWUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc6Mjk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0zMC1cdHNlbGVjdCBNSUlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTgtXHRzZWxlY3QgUENTX1hQQ1NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAtXHRzZWxlY3QgUEhZTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnPTI2PWNvbmZpZyBURUhVVElfVE40MFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTI4LVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnOjI5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzAtXHRzZWxlY3QgRldfTE9BREVSXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz01MD1jb25maWcgVElfQ1BTV1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTUtXHRzZWxlY3QgTUZEX1NZU0NPTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo1NjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTctXHRzZWxlY3QgUkVHTUFQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz02NT1jb25maWcgVElfQ1BTV19TV0lUQ0hERVZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTY5LVx0ZGVwZW5kcyBvbiBUSV9DUFRTIHx8ICFUSV9DUFRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjcwOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03MS1cdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTk2PWNvbmZpZyBUSV9LM19BTTY1X0NQU1dfTlVTU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAxLVx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTAyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDMtXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTIwND1jb25maWcgVElfSUNTU0dfUFJVRVRIX1NSMVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjA4LVx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIwOTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjEwLVx0ZGVwZW5kcyBvbiBQUlVfUkVNT1RFUFJPQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjEtXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI9Y29uZmlnIE1UNzZfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNS1cbi0tXG5rZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTM1LVx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXG5rZXJuZWwvYnBmL0tjb25maWc6MzY6XHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxua2VybmVsL2JwZi9LY29uZmlnLTM3LVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE1OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NjQzCgkJCQkJCQlvdXRwdXQ6IDEyMQoJCQkJCQkJdGhvdWdodHM6IDQ5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFplcm8tQ29weSBSWCBQYXRjaCBmb3IgaW9fdXJpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGBQQUdFX1BPT0xgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHNlZW1zIHRvIGJlIGVuYWJsZWQgZnJlcXVlbnRseSBkdWUgdG8gZGVwZW5kZW5jaWVzIGZyb20gYEJQRl9TWVNDQUxMYCwgYFZFVEhgLCBhbmQgYE5FVERFVlNJTWAsIHdoaWNoIGFyZSBjb21tb24gaW4gc3l6a2FsbGVyIGNvbmZpZ3MuIEkgcmVhbGl6ZSBJIGRvbiYjMzk7dCBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkIGBQQUdFX1BPT0xgIHRvIGBFbmFibGVDb25maWdzYCwgYnV0IEkgY2FuIHNlZSBpdCB3b3VsZG4mIzM5O3QgaHVydCwgdGhvdWdoIHNpbmNlIGl0JiMzOTtzIGEgYm9vbCB3aXRob3V0IGEgcHJvbXB0LCBpdCBtaWdodCBub3QgYmUgaWRlYWwuIEkgKmNvdWxkKiBhZGQgYFZFVEhgIG9yIGBCUEZfU1lTQ0FMTGAgaWYgSSB3YW50IHRvIGJlICpzdXJlKiB0byB0cmlnZ2VyIGl0LCBidXQgYWN0dWFsbHkgYElPX1VSSU5HX1pDUlhgIGRpcmVjdGx5IGRlcGVuZHMgb24gYFBBR0VfUE9PTGAsIHdoaWNoIGlzIGEgZ29vZCByZW1pbmRlci4KClNpbmNlIEkmIzM5O20gbG9va2luZyBhdCBpb191cmluZyB6ZXJvLWNvcHkgUlgsIEkmIzM5O2xsIGRlZmluaXRlbHkgbGlzdCBgSU9fVVJJTkdgIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAgaW4gYEVuYWJsZUNvbmZpZ3NgLiBBbHRob3VnaCBgSU9fVVJJTkdfWkNSWGAgaXMgYSBgZGVmX2Jvb2wgeWAsIGFuZCBub3QgdXNlci1zZWxlY3RhYmxlLCBsaXN0aW5nIGl0IGlzIGZpbmUuIEl0IG1pZ2h0IGV2ZW4gYmUgdXNlZnVsIGZvciB0aGUgZnV6emVyIHRvIGtub3cgYWJvdXQgdGhpcyBpbXBsaWNpdCBkZXBlbmRlbmN5LgoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBwYXRjaC4gSSYjMzk7bSBzZWVpbmcgaXQgY2hlY2tzIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2Agd2l0aGluIGB6Y3J4X3JlZ2lzdGVyX25ldGRldmAsIHdoaWNoIGlzIGNhbGxlZCB0aHJvdWdoIGBpb19yZWdpc3Rlcl96Y3J4YCwgYW5kIHRoZSBwYXRjaCByZWplY3RzIG5ldGRldnMgdGhhdCBkb24mIzM5O3QgdXNlIHRoZSBvcHMgbG9jay4gVGhpcyBpcyBhICpmdW5jdGlvbmFsIGNoYW5nZSouIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGBpb191cmluZ2AgemVyby1jb3B5IFJYIHJlZ2lzdHJhdGlvbiBwYXRoLCBhbmQgdGhlcmVmb3JlLCBJICptdXN0KiBmdXp6IHRoaXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enplciBjYW4gaGFuZGxlIGRpZmZlcmVudCBuZXR3b3JrIGRldmljZSB0eXBlcyBhbmQgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSByZWdyZXNzaW9ucyBvciBtZW1vcnkgbGVha3Mgb24gZXJyb3IgcGF0aHMuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrOyBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgIGlzIGluZGVlZCBzdGF0aWMsIHdoaWNoIG1lYW5zIHRoYXQgYGlvX3JlZ2lzdGVyX3pjcnhgIGlzIHRoZSAqb25seSogZW50cnkgcG9pbnQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSwgc28gdGhhdCYjMzk7cyB0aGUgY29ycmVjdCBzeW1ib2wgdG8gZm9jdXMgb24uIExvb2tzIGxpa2UgYGlvX3JlZ2lzdGVyX3pjcnhgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIEkgbmVlZCB0byBsb29rIGF0IGhlcmUuIEFscmlnaHQsIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU9fVVJJTkcmIzM0OywKICAgICYjMzQ7TkVUX1JYX0JVU1lfUE9MTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lvX3JlZ2lzdGVyX3pjcngmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGluIHRoZSBpb191cmluZyB6ZXJvLWNvcHkgUlggcmVnaXN0cmF0aW9uIHBhdGggdG8gcmVqZWN0IG5ldHdvcmsgZGV2aWNlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHRoZSBuZXRkZXYgb3BzIGxvY2tpbmcgbW9kZWwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBzdWJzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBlcnJvciBwYXRoIGlzIGhhbmRsZWQgY29ycmVjdGx5IHdpdGhvdXQgbWVtb3J5IGxlYWtzIG9yIG90aGVyIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT19VUklORyYjMzQ7LAogICAgJiMzNDtORVRfUlhfQlVTWV9QT0xMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fcmVnaXN0ZXJfemNyeCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgaW4gdGhlIGlvX3VyaW5nIHplcm8tY29weSBSWCByZWdpc3RyYXRpb24gcGF0aCB0byByZWplY3QgbmV0d29yayBkZXZpY2VzIHRoYXQgZG8gbm90IHN1cHBvcnQgdGhlIG5ldGRldiBvcHMgbG9ja2luZyBtb2RlbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGlvX3VyaW5nIHN1YnN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgd2l0aG91dCBtZW1vcnkgbGVha3Mgb3Igb3RoZXIgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzoyMi41NDQ1MDcyMTJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk3NDc4MjE5NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9fVVJJTkdcIixcbiAgICBcIk5FVF9SWF9CVVNZX1BPTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpb19yZWdpc3Rlcl96Y3J4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGluIHRoZSBpb191cmluZyB6ZXJvLWNvcHkgUlggcmVnaXN0cmF0aW9uIHBhdGggdG8gcmVqZWN0IG5ldHdvcmsgZGV2aWNlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHRoZSBuZXRkZXYgb3BzIGxvY2tpbmcgbW9kZWwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBzdWJzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBlcnJvciBwYXRoIGlzIGhhbmRsZWQgY29ycmVjdGx5IHdpdGhvdXQgbWVtb3J5IGxlYWtzIG9yIG90aGVyIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzoyMi41NDQ1MTQxODJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNTc0NTgzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY5NDcyOGZhMjgzZmYyYTdhYjRiM2FhZWU4MjgzZGRmZGVjY2I0ZDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAxNToyMzoyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pb191cmluZy96Y3J4LmMgYi9pb191cmluZy96Y3J4LmNcXG5pbmRleCBmMTQ2NGVhOGNhNjRhLi4yZWJhN2Q0ZTQ0ODNmIDEwMDY0NFxcbi0tLSBhL2lvX3VyaW5nL3pjcnguY1xcbisrKyBiL2lvX3VyaW5nL3pjcnguY1xcbkBAIC0xNyw2ICsxNyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZGV2X3J4X3F1ZXVlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvdGNwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvcnBzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZGV2X2xvY2suaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2N0cmFjZS9ldmVudHMvcGFnZV9wb29sLmhcXHUwMDNlXFxuIFxcbkBAIC04MjgsNiArODI5LDE1IEBAIHN0YXRpYyBpbnQgemNyeF9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGlvX3pjcnhfaWZxICppZnEsXFxuIFxcbiBcXHRuZXRkZXZfaG9sZChpZnEtXFx1MDAzZW5ldGRldiwgXFx1MDAyNmlmcS1cXHUwMDNlbmV0ZGV2X3RyYWNrZXIsIEdGUF9LRVJORUwpO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KCkgcmVxdWlyZXMgdGhlIG5ldGRldiBvcHMgbG9ja2luZ1xcbitcXHQgKiBtb2RlbC4gUmVqZWN0IGRldmljZXMgd2hpY2ggZG8gbm90IHN1cHBvcnQgaXQuXFxuK1xcdCAqL1xcbitcXHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGlmcS1cXHUwMDNlbmV0ZGV2KSkge1xcbitcXHRcXHRyZXQgPSAtRU9QTk9UU1VQUDtcXG4rXFx0XFx0Z290byBuZXRkZXZfcHV0X3VubG9jaztcXG4rXFx0fVxcbitcXG4gXFx0aWZxLVxcdTAwM2VkZXYgPSBuZXRkZXZfcXVldWVfZ2V0X2RtYV9kZXYoaWZxLVxcdTAwM2VuZXRkZXYsIGlmX3J4cSwgTkVUREVWX1FVRVVFX1RZUEVfUlgpO1xcbiBcXHRpZiAoIWlmcS1cXHUwMDNlZGV2KSB7XFxuIFxcdFxcdHJldCA9IC1FT1BOT1RTVVBQO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzoyMi45NzEwNzE1ODlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDkzMjEyNDkxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9fVVJJTkdcIixcbiAgICBcIk5FVF9SWF9CVVNZX1BPTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpb19yZWdpc3Rlcl96Y3J4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGluIHRoZSBpb191cmluZyB6ZXJvLWNvcHkgUlggcmVnaXN0cmF0aW9uIHBhdGggdG8gcmVqZWN0IG5ldHdvcmsgZGV2aWNlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHRoZSBuZXRkZXYgb3BzIGxvY2tpbmcgbW9kZWwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBzdWJzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBlcnJvciBwYXRoIGlzIGhhbmRsZWQgY29ycmVjdGx5IHdpdGhvdXQgbWVtb3J5IGxlYWtzIG9yIG90aGVyIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2OTQ3MjhmYTI4M2ZmMmE3YWI0YjNhYWVlODI4M2RkZmRlY2NiNGQxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAxNToyMzoyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3pjcnguYyBiL2lvX3VyaW5nL3pjcnguY1xuaW5kZXggZjE0NjRlYThjYTY0YS4uMmViYTdkNGU0NDgzZiAxMDA2NDRcbi0tLSBhL2lvX3VyaW5nL3pjcnguY1xuKysrIGIvaW9fdXJpbmcvemNyeC5jXG5AQCAtMTcsNiArMTcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRkZXZfcnhfcXVldWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC90Y3AuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9ycHMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY25ldC9uZXRkZXZfbG9jay5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjdHJhY2UvZXZlbnRzL3BhZ2VfcG9vbC5oXHUwMDNlXG4gXG5AQCAtODI4LDYgKzgyOSwxNSBAQCBzdGF0aWMgaW50IHpjcnhfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBpb196Y3J4X2lmcSAqaWZxLFxuIFxuIFx0bmV0ZGV2X2hvbGQoaWZxLVx1MDAzZW5ldGRldiwgXHUwMDI2aWZxLVx1MDAzZW5ldGRldl90cmFja2VyLCBHRlBfS0VSTkVMKTtcbiBcbitcdC8qXG4rXHQgKiBuZXRkZXZfcXVldWVfZ2V0X2RtYV9kZXYoKSByZXF1aXJlcyB0aGUgbmV0ZGV2IG9wcyBsb2NraW5nXG4rXHQgKiBtb2RlbC4gUmVqZWN0IGRldmljZXMgd2hpY2ggZG8gbm90IHN1cHBvcnQgaXQuXG4rXHQgKi9cbitcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soaWZxLVx1MDAzZW5ldGRldikpIHtcbitcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4rXHRcdGdvdG8gbmV0ZGV2X3B1dF91bmxvY2s7XG4rXHR9XG4rXG4gXHRpZnEtXHUwMDNlZGV2ID0gbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KGlmcS1cdTAwM2VuZXRkZXYsIGlmX3J4cSwgTkVUREVWX1FVRVVFX1RZUEVfUlgpO1xuIFx0aWYgKCFpZnEtXHUwMDNlZGV2KSB7XG4gXHRcdHJldCA9IC1FT1BOT1RTVVBQO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjM6MjIuOTcxMDcyODY5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ4MzUzNTEyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGlvX3VyaW5nIHpjcnggUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgaW9fdXJpbmcvemNyeC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBjaGFuZ2VzIGluIGB6Y3J4X3JlZ2lzdGVyX25ldGRldmAuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGNoZWNrLiBJdCBsb29rcyBsaWtlIGl04oCZcyBlbnN1cmluZyB0aGF0IHRoZSBuZXR3b3JrIGRldmljZSBzdXBwb3J0cyB0aGUgbmV0ZGV2IG9wcyBsb2NraW5nIG1vZGVsIGJlZm9yZSBwcm9jZWVkaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBjaGVjayBpcyBuZWNlc3NhcnkuIFNwZWNpZmljYWxseSwgdGhlIGNvZGUgYXBwZWFycyB0byBiZSB1c2luZyBgbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KClgIGFuZCB0aGlzIGZ1bmN0aW9uIHJlcXVpcmVzIHRoZSBuZXRkZXYgb3BzIGxvY2tpbmcgbW9kZWwuIElmIHRoZSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IGl0LCB0aGUgcGF0Y2ggcmlnaHRseSByZWplY3RzIGl0IHdpdGggYW4gYC1FT1BOT1RTVVBQYCBlcnJvci5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGdldCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgY29kZSBwYXRoLiBJIG5lZWQgdG8gdmVyaWZ5IHdoYXQgZXhhY3RseSBgbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KClgIG5lZWRzIGFuZCB3aHkgdGhpcyBsb2NraW5nIG1vZGVsIGlzIGltcG9ydGFudCBpbiB0aGlzIGNvbnRleHQuIEkgd2lsbCBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBpb191cmluZy96Y3J4LmNgIGZpbGUgaXRzZWxmIHRvIHNlZSBob3cgdGhlIGRldmljZSByZWdpc3RyYXRpb24gaXMgdXNlZCBhbmQgZXhwbG9yZSB0aGUgc3Vycm91bmRpbmcgY29kZS4gVGhlbiBJJ2xsIGNoZWNrIGhvdyB0aGlzIG1vZHVsZSBpcyBlbmFibGVkLiBJIG5lZWQgdG8gZmluZCBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IHRyaWdnZXIgdGhlIGluY2x1c2lvbiBvZiBgaW9fdXJpbmcvemNyeC5jYC4gVGhpcyB1bmRlcnN0YW5kaW5nIGlzIGNydWNpYWwgZm9yIGFzc2Vzc2luZyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIGFuZCBjb25maXJtaW5nIGl0cyBjb3JyZWN0bmVzcywgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiBgaW9fdXJpbmdgIGFuZCBpdHMgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLiBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgY2hhbmdlIGFmZmVjdHMgYW55IHNwZWNpZmljIGhhcmR3YXJlIG9yIGRyaXZlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzozMC40NTQ2MDk5NDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwNTMxMTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpjcnhfcmVnaXN0ZXJfbmV0ZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy96Y3J4LmM9NzU1PXN0YXRpYyBpbnQgaW1wb3J0X3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuLS1cXG5pb191cmluZy96Y3J4LmMtODE2LVxcbmlvX3VyaW5nL3pjcnguYzo4MTc6c3RhdGljIGludCB6Y3J4X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgaW9femNyeF9pZnEgKmlmcSxcXG5pb191cmluZy96Y3J4LmMtODE4LVxcdFxcdFxcdFxcdHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgKnJlZyxcXG4tLVxcbmlvX3VyaW5nL3pjcnguYz04OTQ9aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuLS1cXG5pb191cmluZy96Y3J4LmMtOTkyLVxcdGlmICghKHJlZy5mbGFncyBcXHUwMDI2IFpDUlhfUkVHX05PREVWKSkge1xcbmlvX3VyaW5nL3pjcnguYzo5OTM6XFx0XFx0cmV0ID0gemNyeF9yZWdpc3Rlcl9uZXRkZXYoaWZxLCBcXHUwMDI2cmVnLCBcXHUwMDI2YXJlYSk7XFxuaW9fdXJpbmcvemNyeC5jLTk5NC1cXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzozMC43MDUxNDU0MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMTk0MzEzNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYGlvX3VyaW5nL3pjcnguY2AgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIGluaXRpYWwgcXVlc3Rpb24gaXMgd2hhdCB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSBmb3IgdGhlIGBpb191cmluZy96Y3J4LmNgIG1vZHVsZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGRyaXZpbmcgdGhlIGJlaGF2aW9yIGFuZCB1bmRlcnN0YW5kIGhvdyBpdCdzIHNldCB1cC4gUHJvYmFibHksIEkgc2hvdWxkIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIGEgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlIGZpcnN0LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgbW9zdCBkZXZpY2UgZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbCB3aWxsIGhhdmUgYSBLY29uZmlnIGZyYWdtZW50IHRoYXQgZGVmaW5lcyB0aGVzZSBvcHRpb25zLCByaWdodD8gTWF5YmUgdGhlcmUncyBhIGAuY29uZmlnYCBlbnRyeSwgb3IgcGVyaGFwcyBpdCdzIGhhbmRsZWQgdGhyb3VnaCBhIG1vcmUgc29waGlzdGljYXRlZCBtZWNoYW5pc20gaW52b2x2aW5nIERUIGJpbmRpbmdzIG9yIHN5c2ZzIGVudHJpZXMuIFRoaXMgcmVhbGx5IGRlcGVuZHMgb24gd2hldGhlciBpdCdzIHN0YXRpY2FsbHkgY29tcGlsZWQgb3IgbW9kdWxhci5cblxuSSdtIHRoaW5raW5nLCBpcyBgemNyeC5jYCBhIG1vZHVsZSwgb3IgaXMgaXQgY29tcGlsZWQgaW50byB0aGUga2VybmVsPyBUaGF0IHdpbGwgZGlyZWN0IG15IHNlYXJjaC4gSWYgaXQncyBhIG1vZHVsZSwgSSBuZWVkIHRvIGtub3cgdGhlIHJpZ2h0IGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdG8gbG9hZCBpdCBvciB1bmxvYWQgaXQuIElmIGl0J3Mgc3RhdGljLCBJJ2xsIGhhdmUgdG8gZmluZCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24sIHBvdGVudGlhbGx5IGV4YW1pbmluZyB0aGUgYEtjb25maWdgIGZpbGVzIGluIHRoZSBzb3VyY2UgdHJlZSB0byB0cmFjZSBpdHMgZGVwZW5kZW5jaWVzLiBJJ20gYWxzbyBjb25zaWRlcmluZyBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgc3Vic3lzdGVtcyDigJMgd2hhdCBraW5kIG9mIG1lbW9yeSBtYW5hZ2VtZW50IHBvbGljaWVzLCBpbnRlcnJ1cHQgaGFuZGxpbmcgc3RyYXRlZ2llcywgYW5kIGVycm9yIHJlcG9ydGluZyBtZWNoYW5pc21zIGFyZSBhdCBwbGF5PyBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyBpdHMgc2V0dGluZ3MgaW1wYWN0IHBlcmZvcm1hbmNlIGFuZCBmdW5jdGlvbmFsaXR5LiBJIHdpbGwgYWxzbyBsb29rIGZvciBhbnkgZG9jdW1lbnRhdGlvbiwgbWF5YmUgY29tbWVudHMgaW4gdGhlIGNvZGUgb3IgaWYgYW55IGRvYyBmaWxlcyBoYXZlIGJlZW4gZ2VuZXJhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTk3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjM6MzUuODI0NTc5OTIxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjM3ODkwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6Y3J4XFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19JT19VUklORylcXHRcXHQrPSBpb191cmluZy5vIG9wZGVmLm8ga2J1Zi5vIHJzcmMubyBub3RpZi5vIFxcXFxcXG4tLVxcbmlvX3VyaW5nL01ha2VmaWxlLTE4LVxcbmlvX3VyaW5nL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19JT19VUklOR19aQ1JYKVxcdCs9IHpjcngub1xcbmlvX3VyaW5nL01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19JT19XUSlcXHRcXHQrPSBpby13cS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjIzOjM2LjAxNjk2MzgxNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NTM3MzYyMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBDT05GSUdfSU9fVVJJTkdfWkNSWGAgRGVwZW5kZW5jeSBDaGFpbioqXG5cblJpZ2h0LCBzbyBgQ09ORklHX0lPX1VSSU5HX1pDUlhgLi4uIHRoYXQncyB0aGUgb25lIHdlJ3JlIGludGVyZXN0ZWQgaW4uIE9rYXksIGxldCdzIGRyaWxsIGRvd24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIEkgYWxyZWFkeSBrbm93IHdoYXQgaXQgKmlzKiwgYnV0IEknbSBnZXR0aW5nIGEgaGlnaC1sZXZlbCB2aWV3IGFuZCB3YW50IHRvIHNlZSBob3cgdGhpcyBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTGV0J3Mgc2VlIHdoYXQgKm90aGVyKiB0aGluZ3MgYXJlIHB1bGxlZCBpbiB3aGVuIHRoYXQncyBlbmFibGVkLiBJdCdzIHRpbWUgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIGl0IGluIHRoaXMgc3BlY2lmaWMgY29udGV4dCwgYW55IHBvdGVudGlhbCBjb25mbGljdHMsIGFuZCB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uIG92ZXJoZWFkLiBHb3R0YSBtYWtlIHN1cmUgSSdtIG5vdCBicmluZ2luZyBpbiBhIGJ1bmNoIG9mIHN0dWZmIEkgZG9uJ3QgcmVhbGx5IG5lZWQuIExldCdzIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MDIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzo0MC45NzA3MDI1NjNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2MjMzMDc4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU9fVVJJTkdfWkNSWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvS2NvbmZpZy01LVxcbmlvX3VyaW5nL0tjb25maWc6Njpjb25maWcgSU9fVVJJTkdfWkNSWFxcbmlvX3VyaW5nL0tjb25maWctNy1cXHRkZWZfYm9vbCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjIzOjQyLjYzMzAzODAzMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjA4Mzc2MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIGEgS2VybmVsIENvbmZpZ3VyYXRpb24gRmxhZyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkganVzdCBzYXcgc29tZXRoaW5nIHRoYXQncyBtYWtpbmcgbWUgcmFpc2UgYW4gZXllYnJvdy4gYElPX1VSSU5HX1pDUlhgIGlzIGRlZmluZWQgYXMgYGRlZl9ib29sIHlgPyBUaGF0IGZlZWxz4oCmIHVuZXhwZWN0ZWQsIGFuZCBJIHdhbnQgdG8gdmVyaWZ5IHRoYXQuIEl0J3MgdGltZSB0byBkb3VibGUtY2hlY2sgdGhhdCBrZXJuZWwgY29uZmlndXJhdGlvbi4gTGV0J3MgaGVhZCBvdmVyIHRvIHRoZSBgaW9fdXJpbmcvS2NvbmZpZ2AgZmlsZSBhbmQgY29uZmlybSB0aGF0IHRoYXQgYm9vbGVhbiBkZWZpbml0aW9uIGlzIHdoYXQgSSB0aGluayBpdCBpcy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBiZWZvcmUgSSBtb3ZlIGZvcndhcmQsIHNvIGxldCdzIGdldCB0aGF0IHZlcmlmaWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODE0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjM6NDYuNzUzODc5MTA0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxMDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImlvX3VyaW5nL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgaW9fdXJpbmcgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgSU9fVVJJTkdfWkNSWFxcbiAgIDc6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBJT19VUklOR1xcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBQQUdFX1BPT0xcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBORVRfUlhfQlVTWV9QT0xMXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBJT19VUklOR19CUEZcXG4gIDE0OlxcdFxcdGRlZl9ib29sIHlcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gQlBGXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIE5FVFxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgSU9fVVJJTkdfQlBGX09QU1xcbiAgMTk6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBJT19VUklOR1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzo0Ni43NTM5NzMyOTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQxMDMzNzY5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgSU9fVVJJTkdfWkNSWCBEZXBlbmRlbmN5IENoYWluKipcblxuUmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBgSU9fVVJJTkdfWkNSWGAgYW5kIGl0cyBpbnRlcmRlcGVuZGVuY2llcy4gSXQncyBhIGtleSBwYXJ0IG9mIHRoZSBtb2Rlcm4gbmV0d29yayBzdGFjaywgYnV0IGxpa2UgYW55IGN1dHRpbmctZWRnZSBmZWF0dXJlLCBpdCdzIHJlbGlhbnQgb24gYSBmZXcgZm91bmRhdGlvbmFsIGNvbXBvbmVudHMuIEkga25vdyBgSU9fVVJJTkdgIGl0c2VsZiBpcyBlc3NlbnRpYWwsIG9idmlvdXNseS4gVGhlbiB3ZSBoYXZlIGBQQUdFX1BPT0xgIOKAkyBjYW4ndCBkbyB6ZXJvLWNvcHkgd2l0aG91dCBlZmZpY2llbnQgcGFnZSBtYW5hZ2VtZW50LCB0aGF0J3MgY2xlYXIuIGBJTkVUYCBpcyBhbm90aGVyIG9idmlvdXMgb25lLiBCdXQgaXTigJlzIHRoYXQgYE5FVF9SWF9CVVNZX1BPTExgIGRlcGVuZGVuY3kgdGhhdCdzIG1ha2luZyBtZSBwYXVzZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhhdCBzcGVjaWZpY2FsbHkgdGllcyBpbnRvIGBJT19VUklOR19aQ1JYYC4gVGltZSB0byBjaGVjayBpdCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMzIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjIzOjUxLjE2NDMxMjkxOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzNTE2OTE1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1JYX0JVU1lfUE9MTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MzQyPWNvbmZpZyBDR1JPVVBfTkVUX0NMQVNTSURcXG4tLVxcbm5ldC9LY29uZmlnLTM0OS1cXG5uZXQvS2NvbmZpZzozNTA6Y29uZmlnIE5FVF9SWF9CVVNZX1BPTExcXG5uZXQvS2NvbmZpZy0zNTEtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyMzo1Mi45OTk0ODY0NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM2NzAyOTU0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgYE5FVF9SWF9CVVNZX1BPTExgIGluIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBuZXR3b3JrIHN0YWNrJ3MgY29uZmlndXJhdGlvbi4gUmlnaHQsIGxldCdzIHN0YXJ0IHdpdGggdGhlIGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgbmV0d29yay1yZWxhdGVkIHNldHRpbmdzLiBNeSBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRvIGxvb2sgZGlyZWN0bHkgaW50byBgbmV0L0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBkZWZpbml0aW9uLCBkZXBlbmRlbmNpZXMsIGFuZCBwb3RlbnRpYWwgaGVscCB0ZXh0IGZvciBhbnl0aGluZyBuZXR3b3JrLXNwZWNpZmljIGFuZCBjb25maWd1cmFibGUgd2l0aGluIHRoZSBrZXJuZWwuIFNwZWNpZmljYWxseSwgSSdtIGFmdGVyIGBORVRfUlhfQlVTWV9QT0xMYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0IGtub2IgY29udHJvbHMsIGl0cyBpbXBsaWNhdGlvbnMsIGFuZCBob3cgaXQncyBkZWZpbmVkIHdpdGhpbiB0aGUgYnJvYWRlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gY29udGV4dC4gSG9wZWZ1bGx5LCBgbmV0L0tjb25maWdgIHdpbGwgcHJvdmlkZSBtZSB3aXRoIHRoZSBuZWNlc3NhcnkgYW5zd2Vycy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU3NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjIzOjU3LjM2NjUxODg3NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNDUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNDU6XFx0XFx0c2VsZWN0IFNPQ0tfQ0dST1VQX0RBVEFcXG4gMzQ2OlxcdFxcdGhlbHBcXG4gMzQ3OlxcdFxcdCAgQ2dyb3VwIHN1YnN5c3RlbSBmb3IgdXNlIGFzIGdlbmVyYWwgcHVycG9zZSBzb2NrZXQgY2xhc3NpZCBtYXJrZXIgdGhhdCBpc1xcbiAzNDg6XFx0XFx0ICBiZWluZyB1c2VkIGluIGNsc19jZ3JvdXAgYW5kIGZvciBuZXRmaWx0ZXIgbWF0Y2hpbmcuXFxuIDM0OTpcXHRcXG4gMzUwOlxcdGNvbmZpZyBORVRfUlhfQlVTWV9QT0xMXFxuIDM1MTpcXHRcXHRib29sXFxuIDM1MjpcXHRcXHRkZWZhdWx0IHkgaWYgIVBSRUVNUFRfUlQgfHwgKFBSRUVNUFRfUlQgXFx1MDAyNlxcdTAwMjYgIU5FVENPTlNPTEUpXFxuIDM1MzpcXHRcXG4gMzU0OlxcdGNvbmZpZyBCUUxcXG4gMzU1OlxcdFxcdGJvb2xcXG4gMzU2OlxcdFxcdHByb21wdCBcXFwiRW5hYmxlIEJ5dGUgUXVldWUgTGltaXRzXFxcIlxcbiAzNTc6XFx0XFx0ZGVwZW5kcyBvbiBTWVNGU1xcbiAzNTg6XFx0XFx0c2VsZWN0IERRTFxcbiAzNTk6XFx0XFx0ZGVmYXVsdCB5XFxuIDM2MDpcXHRcXG4gMzYxOlxcdGNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxcbiAzNjI6XFx0XFx0Ym9vbCBcXFwiZW5hYmxlIEJQRiBTVFJFQU1fUEFSU0VSXFxcIlxcbiAzNjM6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDM2NDpcXHRcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjIzOjU3LjM2NjU5MTIyNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3Mjg0NzIyNzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIGEgS2VybmVsIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhhdCBgTkVUX1JYX0JVU1lfUE9MTGAgaGFzIGEgY29uZGl0aW9uYWwgZGVmYXVsdCBiYXNlZCBvbiBgUFJFRU1QVF9SVGAgYW5kIGBORVRDT05TT0xFYC4gUmlnaHQsIHRoYXQncyBzdGFuZGFyZCBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gTW92aW5nIG9uLCBgSU9fVVJJTkdgIGlzLCBhcyBleHBlY3RlZCwgdXN1YWxseSBlbmFibGVkLiBHb29kLiBgUEFHRV9QT09MYCBhbmQgYElORVRgIGFyZSBhbHNvIGxvZ2ljYWxseSB0aWVkIHRvIGBORVRgLCBzbyB0aGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UuXG5cblRoZSByZWFsIG1lYXQgb2YgdGhpcyBpcyB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBsb29rcyBsaWtlIHdlJ3ZlIGdvdCBhIGNoZWNrIGJlaW5nIGFkZGVkIHdpdGhpbiBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgIGluIGBpb191cmluZy96Y3J4LmNgLiBNeSBzcGlkZXktc2Vuc2UgaXMgdGluZ2xpbmcg4oCTIHRoYXQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBgaW9fcmVnaXN0ZXJfemNyeGAsIHdoaWNoIGlzLCBpZiBteSBtZW1vcnkgc2VydmVzLCByZWxhdGVkIHRvIGFuIGBpb191cmluZ2AgcmVnaXN0cmF0aW9uIG9wY29kZS4gVGltZSB0byBjb25maXJtIHRoYXQgaHlwb3RoZXNpcy4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgaW9fcmVnaXN0ZXJfemNyeGAgaW4gYGlvX3VyaW5nL3pjcnguY2AgdG8gc2VlIHByZWNpc2VseSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBuZXcgY2hlY2sgaXMgZXZhbHVhdGluZyBhbmQgd2h5IGl0J3MgYmVpbmcgaW50cm9kdWNlZCB3aXRoaW4gdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBMb29rcyBsaWtlIGEgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgcGllY2Ugb2Yga2VybmVsLWxldmVsIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNzQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyNDowNC42NTEzMTY5ODFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTI1NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX3JlZ2lzdGVyX3pjcnhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW9fdXJpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImlvX3VyaW5nL3JlZ2lzdGVyLmM9NzUwPXN0YXRpYyBpbnQgX19pb191cmluZ19yZWdpc3RlcihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdW5zaWduZWQgb3Bjb2RlLFxcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDEtXFx0XFx0XFx0YnJlYWs7XFxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo5NDI6XFx0XFx0cmV0ID0gaW9fcmVnaXN0ZXJfemNyeChjdHgsIGFyZyk7XFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDMtXFx0XFx0YnJlYWs7XFxuLS1cXG5pb191cmluZy96Y3J4LmM9ODY3PXN0YXRpYyBpbnQgemNyeF92YWxpZGF0ZV9ub3RpZl9zdGF0cyhzdHJ1Y3QgaW9femNyeF9pZnEgKmlmcSxcXG4tLVxcbmlvX3VyaW5nL3pjcnguYy04OTMtXFxuaW9fdXJpbmcvemNyeC5jOjg5NDppbnQgaW9fcmVnaXN0ZXJfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG5pb191cmluZy96Y3J4LmMtODk1LVxcdFxcdCAgICAgc3RydWN0IGlvX3VyaW5nX3pjcnhfaWZxX3JlZyBfX3VzZXIgKmFyZylcXG4tLVxcbmlvX3VyaW5nL3pjcnguaD04OD1pbnQgaW9femNyeF9jdHJsKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB2b2lkIF9fdXNlciAqYXJnLCB1bnNpZ25lZCBucl9hcmcpO1xcbmlvX3VyaW5nL3pjcnguaDo4OTppbnQgaW9fcmVnaXN0ZXJfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG5pb191cmluZy96Y3J4LmgtOTAtXFx0XFx0XFx0IHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgX191c2VyICphcmcpO1xcbi0tXFxuaW9fdXJpbmcvemNyeC5oPTk2PXN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICppb196Y3J4X2dldF9yZWdpb24oc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuLS1cXG5pb191cmluZy96Y3J4LmgtOTgtI2Vsc2VcXG5pb191cmluZy96Y3J4Lmg6OTk6c3RhdGljIGlubGluZSBpbnQgaW9fcmVnaXN0ZXJfemNyeChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG5pb191cmluZy96Y3J4LmgtMTAwLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgX191c2VyICphcmcpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjI0OjA0LjY5NzQ0OTE1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1NjA4NDMwNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoIFJlbGF0ZWQgdG8gaW9fdXJpbmcgRGV2aWNlIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHRoZSBgaW9fcmVnaXN0ZXJfemNyeGAgZnVuY3Rpb24uIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCBpdCdzIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgYGlvX3VyaW5nX3JlZ2lzdGVyYCBzeXN0ZW0gY2FsbC4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjazogYCFuZXRkZXZfbmVlZF9vcHNfbG9jayhpZnEtXHUwMDNlbmV0ZGV2KWAgYW5kLCBpZiB0aGF0IGNvbmRpdGlvbiBpcyB0cnVlLCBpdCByZXR1cm5zIGAtRU9QTk9UU1VQUGAuXG5cbkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBrZXJuZWwncyBpb191cmluZyBzdWJzeXN0ZW0uIFdoYXQgaXQncyBkb2luZyBpcyBwcmV2ZW50aW5nIHRoZSByZWdpc3RyYXRpb24gb2YgbmV0d29yayBkZXZpY2VzIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0aGlzIFwib3BzIGxvY2tpbmcgbW9kZWwsXCIgd2hhdGV2ZXIgdGhhdCBlbnRhaWxzLiBUaGlzIGZlZWxzIHByZXR0eSBzaWduaWZpY2FudCwgYSBjaGFuZ2UgYXQgdGhlIGNvcmUgbGV2ZWwuIERlZmluaXRlbHkgd29ydGggZ2l2aW5nIHRoaXMgc29tZSBmdXp6aW5nIGF0dGVudGlvbi5cblxuSSBuZWVkIHRvIGRpZyBpbnRvIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgY3JpdGVyaWEgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBuZXR3b3JrIGRldmljZSBuZWVkcyB0aGlzIG9wcyBsb2NrLiBUaGF0IHdpbGwgdGVsbCB0aGUgd2hvbGUgc3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5OTAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjQ6MTMuMjU4Mjk0MTQ1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY5MzYzMTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGRldl9uZWVkX29wc19sb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYz0zMT1pbnQgcGh5X2xpbmtfdG9wb19hZGRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYy00NC1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYzo0NTpcXHRpZiAoV0FSTl9PTl9PTkNFKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfbGlua190b3BvbG9neS5jLTQ2LVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dhbi9sYXBiZXRoZXIuYz04Mj1zdGF0aWMgX19pbmxpbmVfXyBpbnQgZGV2X2lzX2V0aGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dhbi9sYXBiZXRoZXIuYy04My17XFxuZHJpdmVycy9uZXQvd2FuL2xhcGJldGhlci5jOjg0OlxcdHJldHVybiBkZXYtXFx1MDAzZXR5cGUgPT0gQVJQSFJEX0VUSEVSIFxcdTAwMjZcXHUwMDI2ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpO1xcbmRyaXZlcnMvbmV0L3dhbi9sYXBiZXRoZXIuYy04NS19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTIxNDc9c3RydWN0IG5ldF9kZXZpY2Uge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTg3LVxcdCAqICAgYW5kIG90aGVyIGNhbGxiYWNrcywgdGhhdCBpcyB0aGUgaW5zdGFuY2UgbG9jayBvbiBkZXZpY2VzIGZvclxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjU4ODpcXHQgKiAgIHdoaWNoIG5ldGRldl9uZWVkX29wc19sb2NrKCkgcmV0dXJucyB0cnVlLCBvdGhlcndpc2UgYnkgcnRubF9sb2NrO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU4OS1cXHQgKlxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU5MC1cXHQgKiAtIGRvdWJsZSBvcHMgcHJvdGVjdGVkIC0gYWx3YXlzIHByb3RlY3RlZCBieSBydG5sX2xvY2sgYnV0IGZvclxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjU5MTpcXHQgKiAgIGRldmljZXMgZm9yIHdoaWNoIG5ldGRldl9uZWVkX29wc19sb2NrKCkgcmV0dXJucyB0cnVlIC0gYWxzb1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU5Mi1cXHQgKiAgIHRoZSBpbnN0YW5jZSBsb2NrLlxcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD0yMT1uZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcl9pbnZpc2libGUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMjctXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDoyODpzdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X25lZWRfb3BzX2xvY2soY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTI5LXtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9Mzk9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9sb2NrX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNDAte1xcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6NDE6XFx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC00Mi1cXHRcXHRuZXRkZXZfbG9jayhkZXYpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD00NT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3VubG9ja19vcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTQ2LXtcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjQ3OlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNDgtXFx0XFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD01MT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X2xvY2tfb3BzX3RvX2Z1bGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTUyLXtcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjUzOlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNTQtXFx0XFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9NTk9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl91bmxvY2tfZnVsbF90b19vcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTYwLXtcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjYxOlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNjItXFx0XFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9Njc9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9hc3NlcnRfbG9ja2VkX29wc19jb21wYXQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTY4LXtcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjY5OlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNzAtXFx0XFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9ODM9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9hc3NlcnRfbG9ja2VkX29wcyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtODQte1xcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6ODU6XFx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC04Ni1cXHRcXHRuZXRkZXZfYXNzZXJ0X2xvY2tlZChkZXYpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD04OT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X2xvY2tfb3BzX2NvbXBhdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtOTAte1xcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6OTE6XFx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC05Mi1cXHRcXHRuZXRkZXZfbG9jayhkZXYpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD05Nz1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3VubG9ja19vcHNfY29tcGF0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC05OC17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo5OTpcXHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTEwMC1cXHRcXHRuZXRkZXZfdW5sb2NrKGRldik7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTEwNj1zdGF0aWMgaW5saW5lIGludCBuZXRkZXZfaXNfbG9ja2VkX29wc19jb21wYXQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTEwNy17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDoxMDg6XFx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0xMDktXFx0XFx0cmV0dXJuIGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaD00Mz1zdHJ1Y3QgbmV0ZGV2X3F1ZXVlX3N0YXRzX3R4IHtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaC05MS0gKlxcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaDo5MjogKiBPcHMgYXJlIGNhbGxlZCB1bmRlciB0aGUgaW5zdGFuY2UgbG9jayBpZiBuZXRkZXZfbmVlZF9vcHNfbG9jaygpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oLTkzLSAqIHJldHVybnMgdHJ1ZSwgb3RoZXJ3aXNlIHVuZGVyIHJ0bmxfbG9jay5cXG4tLVxcbmlvX3VyaW5nL3pjcnguYz04MTc9c3RhdGljIGludCB6Y3J4X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgaW9femNyeF9pZnEgKmlmcSxcXG4tLVxcbmlvX3VyaW5nL3pjcnguYy04MzUtXFx0ICovXFxuaW9fdXJpbmcvemNyeC5jOjgzNjpcXHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGlmcS1cXHUwMDNlbmV0ZGV2KSkge1xcbmlvX3VyaW5nL3pjcnguYy04MzctXFx0XFx0cmV0ID0gLUVPUE5PVFNVUFA7XFxuLS1cXG5uZXQvY29yZS9kZXYuYz0xMTMyNz1pbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvY29yZS9kZXYuYy0xMTM4MS1cXG5uZXQvY29yZS9kZXYuYzoxMTM4MjpcXHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9jb3JlL2Rldi5jLTExMzgzLVxcdCAgICBkZXYtXFx1MDAzZW5ldGRldl9vcHMtXFx1MDAzZW5kb19zZXRfcnhfbW9kZSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTIzNzA9dm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTI0MDMtXFx0XFx0XFx0Y29udGludWU7XFxubmV0L2NvcmUvZGV2LmM6MTI0MDQ6XFx0XFx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpIHtcXG5uZXQvY29yZS9kZXYuYy0xMjQwNS1cXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZkZXYtXFx1MDAzZWNsb3NlX2xpc3QsIFxcdTAwMjZjbG9zZV9oZWFkKTtcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTEyNDEyLVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGV2LCBoZWFkLCB1bnJlZ19saXN0KSB7XFxubmV0L2NvcmUvZGV2LmM6MTI0MTM6XFx0XFx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbm5ldC9jb3JlL2Rldi5jLTEyNDE0LVxcdFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRldi1cXHUwMDNlY2xvc2VfbGlzdCwgXFx1MDAyNmNsb3NlX2hlYWQpO1xcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTI1MzA9aW50IF9fZGV2X2NoYW5nZV9uZXRfbmFtZXNwYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTEyNjIwLVxcbm5ldC9jb3JlL2Rldi5jOjEyNjIxOlxcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5uZXQvY29yZS9kZXYuYy0xMjYyMi1cXHRcXHRuZXRkZXZfbG9jayhkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTI2OTEtXFx0ZGV2LVxcdTAwM2Vtb3ZpbmdfbnMgPSBmYWxzZTtcXG5uZXQvY29yZS9kZXYuYzoxMjY5MjpcXHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXFxubmV0L2NvcmUvZGV2LmMtMTI2OTMtXFx0XFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2Lmg9MTkwPXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRpZl9zZXRfdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCB2YWx1ZSlcXG4tLVxcbm5ldC9jb3JlL2Rldi5oLTE5Ni1cXG5uZXQvY29yZS9kZXYuaDoxOTc6XFx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbm5ldC9jb3JlL2Rldi5oLTE5OC1cXHRcXHRuZXRkZXZfbG9jayhkZXYpO1xcbm5ldC9jb3JlL2Rldi5oLTE5OS1cXHRkZXYtXFx1MDAzZXVwID0gdmFsdWU7XFxubmV0L2NvcmUvZGV2Lmg6MjAwOlxcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5uZXQvY29yZS9kZXYuaC0yMDEtXFx0XFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYz0xMzYyPXZvaWQgX19kZXZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmMtMTM3NC1cXHRpZiAob3BzLVxcdTAwM2VuZG9fc2V0X3J4X21vZGVfYXN5bmMgfHwgb3BzLVxcdTAwM2VuZG9fY2hhbmdlX3J4X2ZsYWdzIHx8XFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYzoxMzc1OlxcdCAgICBuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKSB7XFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYy0xMzc2LVxcdFxcdG5ldGlmX3J4X21vZGVfcXVldWUoZGV2KTtcXG4tLVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM9MTAxMz1pbnQgbmV0ZGV2X25sX2JpbmRfcnhfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy0xMDU2LVxcdFxcdGVyciA9IC1FTk9ERVY7XFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxMDU3OlxcdGVsc2UgaWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhuZXRkZXYpKVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTA1OC1cXHRcXHRlcnIgPSAtRU9QTk9UU1VQUDtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI0NT1pbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNTAtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjUxOlxcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNTItXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxubmV0L2V0aHRvb2wvaW9jdGwuYz0zNjEwPV9fZGV2X2V0aHRvb2woc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaWZyZXEgKmlmciwgdm9pZCBfX3VzZXIgKnVzZXJhZGRyLFxcbi0tXFxubmV0L2V0aHRvb2wvaW9jdGwuYy0zNjIxLVxcbm5ldC9ldGh0b29sL2lvY3RsLmM6MzYyMjpcXHRuZWVkX3J0bmwgPSAhbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSB8fFxcbm5ldC9ldGh0b29sL2lvY3RsLmMtMzYyMy1cXHRcXHQgICAgZXRodG9vbF9jbWRfY2hhbmdlc19mZWF0dXJlcyhldGhjbWQpIHx8XFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTA3PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtNTM5LVxcdGlmIChyZXFfaW5mby1cXHUwMDNlZGV2KSB7XFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjU0MDpcXHRcXHRuZWVkX3J0bmwgPSAhbmV0ZGV2X25lZWRfb3BzX2xvY2socmVxX2luZm8tXFx1MDAzZWRldikgfHxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtNTQxLVxcdFxcdFxcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKHJlcV9pbmZvLVxcdTAwM2VkZXYsIGNtZCk7XFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTk0PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kdW1wX29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTYwOC1cXHRldGhubF9pbml0X3JlcGx5X2RhdGEoY3R4LVxcdTAwM2VyZXBseV9kYXRhLCBjdHgtXFx1MDAzZW9wcywgZGV2KTtcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6NjA5OlxcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIHx8XFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTYxMC1cXHRcXHQgICAgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubChkZXYsIGN0eC1cXHUwMDNlb3BzLVxcdTAwM2VyZXF1ZXN0X2NtZCk7XFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9OTAwPXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9zZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTkzMC1cXHRkZXYgPSByZXFfaW5mby1cXHUwMDNlZGV2O1xcbm5ldC9ldGh0b29sL25ldGxpbmsuYzo5MzE6XFx0bmVlZF9ydG5sID0gIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikgfHxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtOTMyLVxcdFxcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKGRldiwgY21kKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjQ6MTQuODI3NjY2OTA3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NDg0MDA5NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgaW9fdXJpbmcgWmVyby1Db3B5IFJYIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbWFraW5nIGEgY3J1Y2lhbCBmdW5jdGlvbmFsIGNoYW5nZSByZWdhcmRpbmcgYGlvX3VyaW5nYCB6ZXJvLWNvcHkgUlggKHpjcngpLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgLCB3aGVyZSB0aGV5J3ZlIGFkZGVkIGEgY2hlY2sgdXNpbmcgYG5ldGRldl9uZWVkX29wc19sb2NrYC4gRXNzZW50aWFsbHksIHpjcnggd2lsbCBub3cgKm9ubHkqIHdvcmsgaWYgdGhlIG5ldHdvcmsgZGV2aWNlIHV0aWxpemVzIHRoZSBuZXcgb3BzIGxvY2tpbmcgbW9kZWwuIFRoaXMgaXMgaW1wb3J0YW50LlxuXG5HaXZlbiB0aGlzIGZ1bmN0aW9uYWxpdHkgc2hpZnQsIG15IGZpcnN0IHRob3VnaHQgaXMgXCJXb3J0aEZ1enppbmc9dHJ1ZVwiLiBJdCdzIGEgY2xlYXIgY2hhbmdlIGluIGJlaGF2aW9yIGFuZCBhIGdvb2QgcGxhY2UgdG8gZm9jdXMgZnV6emluZyBlZmZvcnRzLlxuXG5JIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSByZWxhdGVkIGZ1bmN0aW9ucywgcGFydGljdWxhcmx5IGBpb19yZWdpc3Rlcl96Y3J4YCBhbmQgYHpjcnhfcmVnaXN0ZXJfbmV0ZGV2YC4gR2l2ZW4gdGhhdCBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgIGlzIHN0YXRpYywgbXkgYXR0ZW50aW9uIGlzIGxpa2VseSBiZXR0ZXIgZGlyZWN0ZWQgYXQgYGlvX3JlZ2lzdGVyX3pjcnhgIGFzIHRoZSBrZXkgZW50cnkgcG9pbnQuXG5cbk5vdywgZm9yIGVuYWJsaW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4gVGhlIG5lY2Vzc2FyeSBjb25maWdzIGFyZSBgSU9fVVJJTkdfWkNSWGAsIGBJT19VUklOR2AsIGBQQUdFX1BPT0xgLCBgSU5FVGAsIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGVzZSBjb25maWd1cmF0aW9ucyBhcmUgd2VsbCB1bmRlcnN0b29kIGFuZCBleHBsaWNpdGx5IGNvbnNpZGVyZWQgZm9yIGFueSB0ZXN0aW5nLlxuXG5XYWl0LCBgSU9fVVJJTkdfWkNSWGAgaXMgYGRlZl9ib29sIHlgIGluIGBpb191cmluZy9LY29uZmlnYC4gVGhhdCBtZWFucyBpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdCwgKmlmKiB0aGUgZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQuIEl0cyBkZXBlbmRlbmNpZXMgYXJlIGBJT19VUklOR2AsIGBQQUdFX1BPT0xgLCBgSU5FVGAsIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAuIGBORVRfUlhfQlVTWV9QT0xMYCBpcyBhbHNvIGVmZmVjdGl2ZWx5IGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBtb3N0IGNhc2VzLCBiZWluZyBgYm9vbGAsIGBkZWZhdWx0IHkgaWYgIVBSRUVNUFRfUlQgfHwgKFBSRUVNUFRfUlQgXHUwMDI2XHUwMDI2ICFORVRDT05TT0xFKWAuIEhvd2V2ZXIsIGl04oCZcyBzdGlsbCBnb29kIHRvIGV4cGxpY2l0bHkgbGlzdCBhbGwgb2YgdGhlIHJlcXVpcmVkIGRlcGVuZGVuY2llcy5cblxuSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBjb2RlIGZvciBgemNyeF9yZWdpc3Rlcl9uZXRkZXZgIGluIGBpb191cmluZy96Y3J4LmNgIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGltcGxlbWVudGF0aW9uIGJldHRlci4gVGhpcyB3aWxsIGNsYXJpZnkgaG93IHRoZSBsb2NraW5nIGNoZWNrIGludGVyYWN0cyB3aXRoIHRoZSBleGlzdGluZyBjb2RlIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3MzEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjQ6MjIuNTc2MDcwMTM3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODQzNDQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6Y3J4X3JlZ2lzdGVyX25ldGRldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpb191cmluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvemNyeC5jPTc1NT1zdGF0aWMgaW50IGltcG9ydF96Y3J4KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbi0tXFxuaW9fdXJpbmcvemNyeC5jLTgxNi1cXG5pb191cmluZy96Y3J4LmM6ODE3OnN0YXRpYyBpbnQgemNyeF9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGlvX3pjcnhfaWZxICppZnEsXFxuaW9fdXJpbmcvemNyeC5jLTgxOC1cXHRcXHRcXHRcXHRzdHJ1Y3QgaW9fdXJpbmdfemNyeF9pZnFfcmVnICpyZWcsXFxuLS1cXG5pb191cmluZy96Y3J4LmM9ODk0PWludCBpb19yZWdpc3Rlcl96Y3J4KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbi0tXFxuaW9fdXJpbmcvemNyeC5jLTk5Mi1cXHRpZiAoIShyZWcuZmxhZ3MgXFx1MDAyNiBaQ1JYX1JFR19OT0RFVikpIHtcXG5pb191cmluZy96Y3J4LmM6OTkzOlxcdFxcdHJldCA9IHpjcnhfcmVnaXN0ZXJfbmV0ZGV2KGlmcSwgXFx1MDAyNnJlZywgXFx1MDAyNmFyZWEpO1xcbmlvX3VyaW5nL3pjcnguYy05OTQtXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjQ6MjIuNjU0NTEwMDQ1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MzY2MzAwMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBaQ1JYIERyaXZlciBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB6Y3J4X3JlZ2lzdGVyX25ldGRldmAgZnVuY3Rpb24sIGFuZCBpdCdzIGZsYWdnZWQgYXMgYHN0YXRpY2AuIFRoYXQgbWVhbnMgaXQncyBpbnRlcm5hbCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LCB3aGljaCBpcyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gIE5vdywgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgZHJpdmVyLCB0aGUgZnVuY3Rpb24gY2FsbGVkIGZyb20gb3V0c2lkZSwgc2VlbXMgdG8gYmUgYGlvX3JlZ2lzdGVyX3pjcnhgLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gbm93IGlzLCAqaXMqIGBpb19yZWdpc3Rlcl96Y3J4YCBleHBvcnRlZCBmb3Igb3RoZXIgbW9kdWxlcyB0byB1c2UsIG9yIGlzIGl0IGFsc28gY29uZmluZWQgdG8gdGhlIGBpb191cmluZy9yZWdpc3Rlci5jYCBmaWxlIGxpa2UgYHpjcnhfcmVnaXN0ZXJfbmV0ZGV2YD8gS25vd2luZyB0aGF0IHdpbGwgZGV0ZXJtaW5lIHRoZSBnZW5lcmFsIGFjY2VzcyBvZiB0aGUgZnVuY3Rpb25hbGl0eS4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IGl0cyB2aXNpYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDgyNiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjI0OjI5LjA5MTE0MjY5NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0MTk0NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9fcmVnaXN0ZXJfemNyeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpb191cmluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jLTk0MS1cXHRcXHRcXHRicmVhaztcXG5pb191cmluZy9yZWdpc3Rlci5jOjk0MjpcXHRcXHRyZXQgPSBpb19yZWdpc3Rlcl96Y3J4KGN0eCwgYXJnKTtcXG5pb191cmluZy9yZWdpc3Rlci5jLTk0My1cXHRcXHRicmVhaztcXG4tLVxcbmlvX3VyaW5nL3pjcnguYz04Njc9c3RhdGljIGludCB6Y3J4X3ZhbGlkYXRlX25vdGlmX3N0YXRzKHN0cnVjdCBpb196Y3J4X2lmcSAqaWZxLFxcbi0tXFxuaW9fdXJpbmcvemNyeC5jLTg5My1cXG5pb191cmluZy96Y3J4LmM6ODk0OmludCBpb19yZWdpc3Rlcl96Y3J4KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbmlvX3VyaW5nL3pjcnguYy04OTUtXFx0XFx0ICAgICBzdHJ1Y3QgaW9fdXJpbmdfemNyeF9pZnFfcmVnIF9fdXNlciAqYXJnKVxcbi0tXFxuaW9fdXJpbmcvemNyeC5oPTg4PWludCBpb196Y3J4X2N0cmwoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcsIHVuc2lnbmVkIG5yX2FyZyk7XFxuaW9fdXJpbmcvemNyeC5oOjg5OmludCBpb19yZWdpc3Rlcl96Y3J4KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbmlvX3VyaW5nL3pjcnguaC05MC1cXHRcXHRcXHQgc3RydWN0IGlvX3VyaW5nX3pjcnhfaWZxX3JlZyBfX3VzZXIgKmFyZyk7XFxuLS1cXG5pb191cmluZy96Y3J4Lmg9OTY9c3RydWN0IGlvX21hcHBlZF9yZWdpb24gKmlvX3pjcnhfZ2V0X3JlZ2lvbihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG4tLVxcbmlvX3VyaW5nL3pjcnguaC05OC0jZWxzZVxcbmlvX3VyaW5nL3pjcnguaDo5OTpzdGF0aWMgaW5saW5lIGludCBpb19yZWdpc3Rlcl96Y3J4KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbmlvX3VyaW5nL3pjcnguaC0xMDAtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGlvX3VyaW5nX3pjcnhfaWZxX3JlZyBfX3VzZXIgKmFyZylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjQ6MjkuMTM3NTY1Nzk1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NDY0NjYxNDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipOYXJyb3dpbmcgdGhlIEludmVzdGlnYXRpb24qKlxuXG5BbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBpb19yZWdpc3Rlcl96Y3J4YCBpcyB0aGUga2V5IGZ1bmN0aW9uIHRvIHJlYWxseSBob25lIGluIG9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHN5c3RlbS4gSSBzaG91bGQgZGVmaW5pdGVseSBzZWUgaG93IGl0J3MgYmVpbmcgdXNlZC4gQmVmb3JlIGRpdmluZyB0b28gZGVlcCwgSSBzaG91bGQgZG8gYSBxdWljayBzd2VlcCBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgb2J2aW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBpbXBhY3QgdGhpcy4gTGV0J3Mgc2VlLi4uIEknbGwgY2hlY2sgZm9yIGBJT19VUklOR2AsIGBQQUdFX1BPT0xgLCBgSU5FVGAsIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAg4oCTIHRoZXNlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgd2hlbiB5b3UncmUgZGVhbGluZyB3aXRoIEkvTyBhbmQgbmV0d29ya2luZyBwZXJmb3JtYW5jZS4gSnVzdCB3YW50IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEknbGwgbmVlZCB0byBwYXkgcGFydGljdWxhcmx5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYFBBR0VfUE9PTGAgY29uZmlndXJhdGlvbiwgdGhhdCBzZWVtcyBsaWtlIHNvbWV0aGluZyB0aGF0IGNvdWxkIGJlIHZlcnkgcmVsYXRlZCB0byB0aGUgemNyeCBmdW5jdGlvbmFsaXR5LCBpZiB0aGlzIGNvZGUgaXMgZGVzaWduZWQgdGhlIHdheSBJIGV4cGVjdCBpdCB0byBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NTQsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyNDo0Ni42MDIyMjk5NTdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTgzNjM2MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBBR0VfUE9PTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9NDg3PWNvbmZpZyBORVRfREVWTElOS1xcbi0tXFxubmV0L0tjb25maWctNDkwLVxcbm5ldC9LY29uZmlnOjQ5MTpjb25maWcgUEFHRV9QT09MXFxubmV0L0tjb25maWctNDkyLVxcdGJvb2xcXG5uZXQvS2NvbmZpZy00OTMtXFxubmV0L0tjb25maWc6NDk0OmNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcXG5uZXQvS2NvbmZpZy00OTUtXFx0ZGVmYXVsdCBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE1OjI0OjQ4LjUwMDU5ODE5OFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDU3NzEzMTE2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBQQUdFX1BPT0wgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGNvbmZpZ3VyYXRpb24sIGFuZCBJIHNlZSB0aGlzIGBQQUdFX1BPT0xgIG9wdGlvbiDigJMgaXQncyBhIGJvb2xlYW4sIHR5cGljYWxseSBzb21ldGhpbmcgZHJpdmVycyBkZWNpZGUgb24uIEhtbSwgYnV0IHRoZW4gSSBub3RpY2UgYElPX1VSSU5HX1pDUlhgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFBBR0VfUE9PTGAuIFRoYXQgbWVhbnMgaWYgYFBBR0VfUE9PTGAgaXNuJ3QgZW5hYmxlZCwgYElPX1VSSU5HX1pDUlhgIGlzIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQuXG5cbkFscmlnaHQsIHNvIHRoZSBuYXR1cmFsIGluY2xpbmF0aW9uIGlzIHRvIHRoaW5rIG1heWJlIHdlIHNob3VsZCBqdXN0ICpmb3JjZSogYFBBR0VfUE9PTGAgb24sIHJpZ2h0PyBCdXQgd2FpdCBhIG1pbnV0ZS4gYFBBR0VfUE9PTGAgaXMgYSBib29sZWFuIHdpdGhvdXQgYSBwcm9tcHQuIFRoYXQgZ2VuZXJhbGx5IG1lYW5zIGl0IGNhbiAqb25seSogYmUgc2VsZWN0ZWQgYnkgYW5vdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbiwgbm90IGRpcmVjdGx5IGVuYWJsZWQgaW4gdGhlIGAuY29uZmlnYCBmaWxlLiBJIGNhbid0IGp1c3Qgc2xhcCBhIGBZYCBvbiBpdC5cblxuU28sIHRoZSBuZXh0IG9idmlvdXMgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGlmIGl0J3MgZXZlbiAqcG9zc2libGUqIHRvIGVuYWJsZSBpdCBkaXJlY3RseS4gR2l2ZW4gdGhlIGxhY2sgb2YgYSBwcm9tcHQsIEknbSBmYWlybHkgY2VydGFpbiBJIGNhbid0IGVuYWJsZSBgUEFHRV9QT09MYCBkaXJlY3RseSBpbiB0aGUgYC5jb25maWdgIHVubGVzcyBzb21ldGhpbmcgZWxzZSBzZWxlY3RzIGl0IGZvciBtZS4gVGhhdCdzIHRoZSBxdWVzdGlvbiBJIGhhdmUgdG8gYW5zd2VyIG5vdy4gSSBuZWVkIHRvIHNlZSAqd2hhdCogZXhhY3RseSBzZWxlY3RzIGBQQUdFX1BPT0xgLCBhbmQgdGhlbiB0cmFjZSBob3cgdG8gbWFrZSBzdXJlIHRoYXQgd2hhdGV2ZXIncyBzZWxlY3RpbmcgaXQgaXMgZW5hYmxlZCwgb3IgaWYgaXQgbWFrZXMgc2Vuc2UgdG8gZW5hYmxlIGl0IGluIHRoaXMgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5NTgsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjQ6NTkuMDc3NzM2NDM0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc3MTc0MzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBQQUdFX1BPT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NDM1PWNvbmZpZyBWRVRIXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzYtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgZXRoZXJuZXQgcGFpciBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0Mzc6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDM4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDQzPWNvbmZpZyBWSVJUSU9fTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0Ny1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDg6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTQ0PWNvbmZpZyBYRU5fTkVUREVWX0ZST05URU5EXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0Ny1cXHRzZWxlY3QgWEVOX1hFTkJVU19GUk9OVEVORFxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTQ4OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0OS1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTg0PWNvbmZpZyBWTVhORVQzXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4Ny1cXHRkZXBlbmRzIG9uIFBBR0VfU0laRV9MRVNTX1RIQU5fNjRLQlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTg4OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTYwND1jb25maWcgTkVUREVWU0lNXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9LY29uZmlnOjYxMTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTItXFx0c2VsZWN0IE5FVF9TSEFQRVJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnPTE4PWNvbmZpZyBORVRfQUlST0hBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMS1cXHRzZWxlY3QgTkVUX0FJUk9IQV9OUFVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnPTE4PWNvbmZpZyBBTElCQUJBX0VFQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIxLVxcdGRlcGVuZHMgb24gNjRCSVRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc6MjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZy0yMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTcyPWNvbmZpZyBCQ01HRU5FVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04MC1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzo4MTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04Mi1cXHRzZWxlY3QgQlJPQURDT01fUEhZIGlmIEFSQ0hfQkNNMjgzNVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yMDc9Y29uZmlnIEJOWFRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjEzLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjE0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIxNS1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI1OD1jb25maWcgQk5HRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjEtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYzLVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI2OT1jb25maWcgQkNNQVNQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI3NS1cXHRzZWxlY3QgTURJT19CQ01fVU5JTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNzY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjc3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZz02PWNvbmZpZyBFTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctOC1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZzo5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctMTAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZz0xOT1jb25maWcgVFNORVBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjMtXFx0c2VsZWN0IFBIWUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWc6MjQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc9MjM9Y29uZmlnIEZFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzEtXFx0c2VsZWN0IEZJWEVEX1BIWVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjMyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zMy1cXHRpbXBseSBQQUdFX1BPT0xfU1RBVFNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnPTE4PWNvbmZpZyBHVkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTIxLVxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc9OTE9Y29uZmlnIEhOUzNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk0LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjk1OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz0xNDc9Y29uZmlnIEhJQk1DR0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1My1cXHRzZWxlY3QgUkVBTFRFS19QSFlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzoxNTQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc9Nj1jb25maWcgSElOSUMzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTQtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZzoxNTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnLTE2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnPTQ9Y29uZmlnIExJQkVUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnLTUtXFx0dHJpc3RhdGUgXFxcIkNvbW1vbiBFdGhlcm5ldCBsaWJyYXJ5IChsaWJldGgpXFxcIiBpZiBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZzo2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZy03LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz01OT1jb25maWcgTVZORVRBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjMtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2NTpcXHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTY2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz04Nj1jb25maWcgTVZQUDJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MC1cXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo5MTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9MzE9Y29uZmlnIE9DVEVPTlRYMl9QRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjM1OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM2LVxcdHNlbGVjdCBDUllQVE9fTElCX0FFUyBpZiBNQUNTRUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9MTQ9Y29uZmlnIE5FVF9NRURJQVRFS19TT0NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMjAtXFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoyMTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMy1cXHRzZWxlY3QgUENTX01US19MWU5YSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnPTY9Y29uZmlnIE1MWDRfRU5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy05LVxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc6MTA6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy0xMS1cXHRzZWxlY3QgTUxYNF9DT1JFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0yOT1jb25maWcgTUxYNV9DT1JFX0VOXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0zMS1cXHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXFx1MDAyNlxcdTAwMjYgRVRIRVJORVQgXFx1MDAyNlxcdTAwMjYgSU5FVCBcXHUwMDI2XFx1MDAyNiBQQ0kgXFx1MDAyNlxcdTAwMjYgTUxYNV9DT1JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjMzOlxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0zNC1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnPTMzPWNvbmZpZyBNTFhTV19QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzUtXFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IE1MWFNXX0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjM2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTM3LVxcdGRlZmF1bHQgbVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTIwPWNvbmZpZyBGQk5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI3LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyODpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI5LVxcdHNlbGVjdCBQQ1NfWFBDU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZz0xPWNvbmZpZyBMQU45NjZYX1NXSVRDSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy04LVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTEwLVxcdHNlbGVjdCBWQ0FQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9Mjg9Y29uZmlnIExBTjk2OVhfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMzAtXFx0ZGVwZW5kcyBvbiBTUEFSWDVfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjMxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTg9Y29uZmlnIE1JQ1JPU09GVF9NQU5BXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yMy1cXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjI0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yNS1cXHRzZWxlY3QgTkVUX1NIQVBFUlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZz0yMD1jb25maWcgSU9OSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjUtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjctXFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz0xMTA9Y29uZmlnIFJUQVNFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTEzLVxcdHNlbGVjdCBDUkMzMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMTQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnPTI5PWNvbmZpZyBSQVZCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctMzUtXFx0c2VsZWN0IE1ESU9fQklUQkFOR1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZzozNjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTM3LVxcdHNlbGVjdCBQSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnPTI1PWNvbmZpZyBTTklfTkVUU0VDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0yOC1cXHRzZWxlY3QgUEhZTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc6Mjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnLTMwLVxcdHNlbGVjdCBNSUlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mj1jb25maWcgU1RNTUFDX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04LVxcdHNlbGVjdCBQQ1NfWFBDU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMC1cXHRzZWxlY3QgUEhZTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWc9MjY9Y29uZmlnIFRFSFVUSV9UTjQwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0yOC1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnOjI5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0zMC1cXHRzZWxlY3QgRldfTE9BREVSXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTUwPWNvbmZpZyBUSV9DUFNXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTU1LVxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo1NjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy01Ny1cXHRzZWxlY3QgUkVHTUFQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTY1PWNvbmZpZyBUSV9DUFNXX1NXSVRDSERFVlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy02OS1cXHRkZXBlbmRzIG9uIFRJX0NQVFMgfHwgIVRJX0NQVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjcwOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTcxLVxcdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9OTY9Y29uZmlnIFRJX0szX0FNNjVfQ1BTV19OVVNTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMS1cXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTAyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMy1cXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9MjA0PWNvbmZpZyBUSV9JQ1NTR19QUlVFVEhfU1IxXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwOC1cXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIwOTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMTAtXFx0ZGVwZW5kcyBvbiBQUlVfUkVNT1RFUFJPQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTE5PWNvbmZpZyBMSUJXWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIxLVxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6MjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yMy1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9Mj1jb25maWcgTVQ3Nl9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctMzUtXFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXFxua2VybmVsL2JwZi9LY29uZmlnOjM2OlxcdHNlbGVjdCBQQUdFX1BPT0wgaWYgTkVUXFxua2VybmVsL2JwZi9LY29uZmlnLTM3LVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNToyNTowMC42NTQ5MTY2OTVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE1NjMxMDE1NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBaZXJvLUNvcHkgUlggUGF0Y2ggZm9yIGlvX3VyaW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgYFBBR0VfUE9PTGAgY29uZmlndXJhdGlvbiBvcHRpb24gc2VlbXMgdG8gYmUgZW5hYmxlZCBmcmVxdWVudGx5IGR1ZSB0byBkZXBlbmRlbmNpZXMgZnJvbSBgQlBGX1NZU0NBTExgLCBgVkVUSGAsIGFuZCBgTkVUREVWU0lNYCwgd2hpY2ggYXJlIGNvbW1vbiBpbiBzeXprYWxsZXIgY29uZmlncy4gSSByZWFsaXplIEkgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IGFkZCBgUEFHRV9QT09MYCB0byBgRW5hYmxlQ29uZmlnc2AsIGJ1dCBJIGNhbiBzZWUgaXQgd291bGRuJ3QgaHVydCwgdGhvdWdoIHNpbmNlIGl0J3MgYSBib29sIHdpdGhvdXQgYSBwcm9tcHQsIGl0IG1pZ2h0IG5vdCBiZSBpZGVhbC4gSSAqY291bGQqIGFkZCBgVkVUSGAgb3IgYEJQRl9TWVNDQUxMYCBpZiBJIHdhbnQgdG8gYmUgKnN1cmUqIHRvIHRyaWdnZXIgaXQsIGJ1dCBhY3R1YWxseSBgSU9fVVJJTkdfWkNSWGAgZGlyZWN0bHkgZGVwZW5kcyBvbiBgUEFHRV9QT09MYCwgd2hpY2ggaXMgYSBnb29kIHJlbWluZGVyLlxuXG5TaW5jZSBJJ20gbG9va2luZyBhdCBpb191cmluZyB6ZXJvLWNvcHkgUlgsIEknbGwgZGVmaW5pdGVseSBsaXN0IGBJT19VUklOR2AgYW5kIGBORVRfUlhfQlVTWV9QT0xMYCBpbiBgRW5hYmxlQ29uZmlnc2AuIEFsdGhvdWdoIGBJT19VUklOR19aQ1JYYCBpcyBhIGBkZWZfYm9vbCB5YCwgYW5kIG5vdCB1c2VyLXNlbGVjdGFibGUsIGxpc3RpbmcgaXQgaXMgZmluZS4gSXQgbWlnaHQgZXZlbiBiZSB1c2VmdWwgZm9yIHRoZSBmdXp6ZXIgdG8ga25vdyBhYm91dCB0aGlzIGltcGxpY2l0IGRlcGVuZGVuY3kuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgcGF0Y2guIEknbSBzZWVpbmcgaXQgY2hlY2tzIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2Agd2l0aGluIGB6Y3J4X3JlZ2lzdGVyX25ldGRldmAsIHdoaWNoIGlzIGNhbGxlZCB0aHJvdWdoIGBpb19yZWdpc3Rlcl96Y3J4YCwgYW5kIHRoZSBwYXRjaCByZWplY3RzIG5ldGRldnMgdGhhdCBkb24ndCB1c2UgdGhlIG9wcyBsb2NrLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwgY2hhbmdlKi4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiB0aGUgYGlvX3VyaW5nYCB6ZXJvLWNvcHkgUlggcmVnaXN0cmF0aW9uIHBhdGgsIGFuZCB0aGVyZWZvcmUsIEkgKm11c3QqIGZ1enogdGhpcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emVyIGNhbiBoYW5kbGUgZGlmZmVyZW50IG5ldHdvcmsgZGV2aWNlIHR5cGVzIGFuZCB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGxlYWtzIG9uIGVycm9yIHBhdGhzLlxuXG5MZXQncyBkb3VibGUtY2hlY2s7IGB6Y3J4X3JlZ2lzdGVyX25ldGRldmAgaXMgaW5kZWVkIHN0YXRpYywgd2hpY2ggbWVhbnMgdGhhdCBgaW9fcmVnaXN0ZXJfemNyeGAgaXMgdGhlICpvbmx5KiBlbnRyeSBwb2ludCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LCBzbyB0aGF0J3MgdGhlIGNvcnJlY3Qgc3ltYm9sIHRvIGZvY3VzIG9uLiBMb29rcyBsaWtlIGBpb19yZWdpc3Rlcl96Y3J4YCBpcyB0aGUgb25seSBmdW5jdGlvbiBJIG5lZWQgdG8gbG9vayBhdCBoZXJlLiBBbHJpZ2h0LCBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjY0MywiT3V0cHV0VG9rZW5zIjoxMjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTU6MjU6MTIuMjE4MDIxMDUzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQyOTU5NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklPX1VSSU5HXCIsXG4gICAgXCJORVRfUlhfQlVTWV9QT0xMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW9fcmVnaXN0ZXJfemNyeFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBpbiB0aGUgaW9fdXJpbmcgemVyby1jb3B5IFJYIHJlZ2lzdHJhdGlvbiBwYXRoIHRvIHJlamVjdCBuZXR3b3JrIGRldmljZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0aGUgbmV0ZGV2IG9wcyBsb2NraW5nIG1vZGVsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgaW9fdXJpbmcgc3Vic3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZXJyb3IgcGF0aCBpcyBoYW5kbGVkIGNvcnJlY3RseSB3aXRob3V0IG1lbW9yeSBsZWFrcyBvciBvdGhlciByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiLFxuICAgIFwiTkVUX1JYX0JVU1lfUE9MTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvX3JlZ2lzdGVyX3pjcnhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgaW4gdGhlIGlvX3VyaW5nIHplcm8tY29weSBSWCByZWdpc3RyYXRpb24gcGF0aCB0byByZWplY3QgbmV0d29yayBkZXZpY2VzIHRoYXQgZG8gbm90IHN1cHBvcnQgdGhlIG5ldGRldiBvcHMgbG9ja2luZyBtb2RlbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGlvX3VyaW5nIHN1YnN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgd2l0aG91dCBtZW1vcnkgbGVha3Mgb3Igb3RoZXIgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow8kshv[1] Phase: Succeeded StartedAt: 2026-08-05 15:25:23 +0000 UTC FinishedAt: 2026-08-05 15:25:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 15:25:23 +0000 UTC FinishedAt: 2026-08-05 15:25:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2] Phase: Succeeded StartedAt: 2026-08-05 15:25:23 +0000 UTC FinishedAt: 2026-08-05 17:07:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-05 15:25:23 +0000 UTC FinishedAt: 2026-08-05 17:07:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-05 15:25:23 +0000 UTC FinishedAt: 2026-08-05 15:25:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-05 15:25:23 +0000 UTC FinishedAt: 2026-08-05 15:25:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow8kshv/series-workflow8kshv-convert-artifact-3993644984/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-05 15:25:33 +0000 UTC FinishedAt: 2026-08-05 15:48:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-05 15:25:33 +0000 UTC FinishedAt: 2026-08-05 15:48:00 +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:*5cefa6bf-3fd3-4455-9fa5-e9e528e680bf,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-workflow8kshv/series-workflow8kshv-convert-artifact-3993644984/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": "519b4597-c7a8-4d7f-8b04-22c30adad1e7", "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-workflow8kshv/series-workflow8kshv-build-action-2084271470/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-05 15:25:33 +0000 UTC FinishedAt: 2026-08-05 15:47:50 +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:*5cefa6bf-3fd3-4455-9fa5-e9e528e680bf,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-workflow8kshv/series-workflow8kshv-convert-artifact-3993644984/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": "519b4597-c7a8-4d7f-8b04-22c30adad1e7", "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-workflow8kshv/series-workflow8kshv-build-action-2084271470/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-05 15:48:00 +0000 UTC FinishedAt: 2026-08-05 15:48:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-05 15:48:00 +0000 UTC FinishedAt: 2026-08-05 15:48:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-05 15:48:00 +0000 UTC FinishedAt: 2026-08-05 15:48:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-05 15:48:00 +0000 UTC FinishedAt: 2026-08-05 15:48:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow8kshv/series-workflow8kshv-convert-artifact-1850184223/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-05 15:48:11 +0000 UTC FinishedAt: 2026-08-05 15:50:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-05 15:48:11 +0000 UTC FinishedAt: 2026-08-05 15:50:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*519b4597-c7a8-4d7f-8b04-22c30adad1e7,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-workflow8kshv/series-workflow8kshv-build-action-2084271470/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-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-05 15:50:14 +0000 UTC FinishedAt: 2026-08-05 15:50:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-05 15:50:14 +0000 UTC FinishedAt: 2026-08-05 15:50:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-05 15:50:14 +0000 UTC FinishedAt: 2026-08-05 16:07:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-05 15:50:14 +0000 UTC FinishedAt: 2026-08-05 16:07:51 +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:*5cefa6bf-3fd3-4455-9fa5-e9e528e680bf,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-workflow8kshv/series-workflow8kshv-convert-artifact-1850184223/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": "f8127a01-6b79-4fe8-9c31-e873540551a1", "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-workflow8kshv/series-workflow8kshv-build-action-3545457843/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-05 15:50:14 +0000 UTC FinishedAt: 2026-08-05 16:07:41 +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:*5cefa6bf-3fd3-4455-9fa5-e9e528e680bf,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-workflow8kshv/series-workflow8kshv-convert-artifact-1850184223/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": "f8127a01-6b79-4fe8-9c31-e873540551a1", "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-workflow8kshv/series-workflow8kshv-build-action-3545457843/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-05 16:07:51 +0000 UTC FinishedAt: 2026-08-05 16:07:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-05 16:07:51 +0000 UTC FinishedAt: 2026-08-05 16:07:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-05 16:07:51 +0000 UTC FinishedAt: 2026-08-05 16:09:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-05 16:07:51 +0000 UTC FinishedAt: 2026-08-05 16:09:44 +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:*f8127a01-6b79-4fe8-9c31-e873540551a1,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-workflow8kshv/series-workflow8kshv-build-action-3545457843/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-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-05 16:09:54 +0000 UTC FinishedAt: 2026-08-05 17:07:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-05 16:09:54 +0000 UTC FinishedAt: 2026-08-05 17:07:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"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:*519b4597-c7a8-4d7f-8b04-22c30adad1e7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f8127a01-6b79-4fe8-9c31-e873540551a1,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-workflow8kshv/series-workflow8kshv-build-action-2084271470/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-workflow8kshv/series-workflow8kshv-build-action-3545457843/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-05 16:09:54 +0000 UTC FinishedAt: 2026-08-05 16:10:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-05 16:09:54 +0000 UTC FinishedAt: 2026-08-05 16:09:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"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-workflow8kshv/series-workflow8kshv-convert-artifact-1723233080/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-05 16:09:54 +0000 UTC FinishedAt: 2026-08-05 16:09:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-05 16:09:54 +0000 UTC FinishedAt: 2026-08-05 16:09:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-05 16:09:54 +0000 UTC FinishedAt: 2026-08-05 16:09:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-05 16:10:04 +0000 UTC FinishedAt: 2026-08-05 17:07:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8kshv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["io_register_zcrx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c21bb4193868a8de71fc4693fa741e195fdf5d86","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","NET_RX_BUSY_POLL"],"series_id":"6ad96a14-bbed-4660-9e21-3ef2944a2c15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-05 16:10:04 +0000 UTC FinishedAt: 2026-08-05 17:07:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*519b4597-c7a8-4d7f-8b04-22c30adad1e7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f8127a01-6b79-4fe8-9c31-e873540551a1,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-workflow8kshv/series-workflow8kshv-build-action-2084271470/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-workflow8kshv/series-workflow8kshv-build-action-3545457843/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-workflow8kshv/series-workflow8kshv-convert-artifact-1723233080/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,}