Name: series-workflowmbsx4 Phase: Succeeded StartedAt: 2026-08-03 09:44:51 +0000 UTC FinishedAt: 2026-08-03 14:04:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[0] Phase: Succeeded StartedAt: 2026-08-03 09:44:52 +0000 UTC FinishedAt: 2026-08-03 09:49:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 09:44:52 +0000 UTC FinishedAt: 2026-08-03 09:49:16 +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": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FW_LOADER_USER_HELPER", "FW_LOADER_USER_HELPER_FALLBACK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FW_LOADER_USER_HELPER", "FW_LOADER_USER_HELPER_FALLBACK" ], "series_id": "aec59f05-db1a-4000-ba44-3428052c7d79" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "request_firmware", "request_firmware_nowait", "request_firmware_direct", "firmware_request_nowarn", "request_firmware_into_buf", "request_partial_firmware_into_buf" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZXX0xPQURFUl9VU0VSX0hFTFBFUiYjMzQ7LAogICAgJiMzNDtGV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXF1ZXN0X2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfbm93YWl0JiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfZGlyZWN0JiMzNDssCiAgICAmIzM0O2Zpcm13YXJlX3JlcXVlc3Rfbm93YXJuJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfaW50b19idWYmIzM0OywKICAgICYjMzQ7cmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjb3JlIGZpcm13YXJlIGxvYWRlciB3aGVyZSBjb25jdXJyZW50IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBmaXJtd2FyZSBjb3VsZCByZXN1bHQgaW4gcmV0dXJuaW5nIGEgZmlybXdhcmUgb2JqZWN0IHdpdGggc2l6ZSAwIGlmIHRoZSBjb25jdXJyZW50IGxvYWQgZmFpbGVkIG9yIHJlc3VsdGVkIGluIGFuIGVtcHR5IGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNTJmZTgzYzA5MmZkNmIwM2I1YzRhZWQyNDUxMDY4OWRjZTNiNTUzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwOTo0ODoxMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYyBiL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXG5pbmRleCAyNDIxM2EwZWE4MzE3Li5iMTUyMWExZGExMzJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXG5AQCAtNzcxLDYgJiM0Mzs3NzEsOCBAQCBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlKHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsIGNvbnN0IGNoYXIgKm5hbWUsXG4gXHRpZiAocmV0IFx1MDAzZSAwKSB7XG4gXHRcdHJldCA9IGZ3X3N0YXRlX3dhaXQoZndfcHJpdik7XG4gXHRcdGlmICghcmV0KSB7XG4mIzQzO1x0XHRcdGlmICghZndfcHJpdi1cdTAwM2VzaXplKVxuJiM0MztcdFx0XHRcdHJldHVybiAtRU5PRU5UO1xuIFx0XHRcdGZ3X3NldF9wYWdlX2RhdGEoZndfcHJpdiwgZmlybXdhcmUpO1xuIFx0XHRcdHJldHVybiAwOyAvKiBhc3NpZ25lZCAqL1xuIFx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZXX0xPQURFUl9VU0VSX0hFTFBFUiYjMzQ7LAogICAgJiMzNDtGV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXF1ZXN0X2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfbm93YWl0JiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfZGlyZWN0JiMzNDssCiAgICAmIzM0O2Zpcm13YXJlX3JlcXVlc3Rfbm93YXJuJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfaW50b19idWYmIzM0OywKICAgICYjMzQ7cmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjb3JlIGZpcm13YXJlIGxvYWRlciB3aGVyZSBjb25jdXJyZW50IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBmaXJtd2FyZSBjb3VsZCByZXN1bHQgaW4gcmV0dXJuaW5nIGEgZmlybXdhcmUgb2JqZWN0IHdpdGggc2l6ZSAwIGlmIHRoZSBjb25jdXJyZW50IGxvYWQgZmFpbGVkIG9yIHJlc3VsdGVkIGluIGFuIGVtcHR5IGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNTJmZTgzYzA5MmZkNmIwM2I1YzRhZWQyNDUxMDY4OWRjZTNiNTUzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwOTo0ODoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jIGIvZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMKaW5kZXggMjQyMTNhMGVhODMxNy4uYjE1MjFhMWRhMTMyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMKQEAgLTc3MSw2ICYjNDM7NzcxLDggQEAgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZShzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLCBjb25zdCBjaGFyICpuYW1lLAogCWlmIChyZXQgJmd0OyAwKSB7CiAJCXJldCA9IGZ3X3N0YXRlX3dhaXQoZndfcHJpdik7CiAJCWlmICghcmV0KSB7CiYjNDM7CQkJaWYgKCFmd19wcml2LSZndDtzaXplKQomIzQzOwkJCQlyZXR1cm4gLUVOT0VOVDsKIAkJCWZ3X3NldF9wYWdlX2RhdGEoZndfcHJpdiwgZmlybXdhcmUpOwogCQkJcmV0dXJuIDA7IC8qIGFzc2lnbmVkICovCiAJCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGaXJtd2FyZSBMb2FkZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlYCBmdW5jdGlvbiB3aXRoaW4gYGRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jYC4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGlyZWN0bHkgaW1wYWN0aW5nIGhvdyBmaXJtd2FyZSBsb2FkaW5nIGlzIGhhbmRsZWQsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gVGhlIGNoYW5nZSBpbnRyb2R1Y2VzIGEgY3J1Y2lhbCBjaGVjayAqYWZ0ZXIqIHRoZSBgZndfc3RhdGVfd2FpdGAgY2FsbC4gIEVzc2VudGlhbGx5LCBpdCYjMzk7cyB2ZXJpZnlpbmcgdGhhdCB0aGUgYGZ3X3ByaXYtJmd0O3NpemVgIG1lbWJlciBpcyBub24temVybyBiZWZvcmUgcHJvY2VlZGluZy4gSWYgYGZ3X3ByaXYtJmd0O3NpemVgICppcyogemVybywgbWVhbmluZyB0aGUgZmlybXdhcmUgaXMgZXNzZW50aWFsbHkgZW1wdHkgKG9yIG5vdCBmb3VuZCksIHRoZSBjb2RlIG5vdyByZXR1cm5zIGAtRU5PRU5UYC4gVGhlbiBgZndfc2V0X3BhZ2VfZGF0YWAgd2lsbCBub3QgcnVuIGFuZCB3ZSByZXR1cm4uIFRoaXMgaW5kaWNhdGVzIGEgcG90ZW50aWFsIHByb2JsZW0gd2l0aCB0aGUgZmlybXdhcmUgaXRzZWxmLCBvciB0aGUgbG9hZGluZyBwcm9jZXNzIGZhaWxlZCB0byByZXRyaWV2ZSBpdHMgc2l6ZSwgd2hpY2ggbWFrZXMgc2Vuc2UgdG8gYWRkcmVzcy4gUmV0dXJuaW5nIGAtRU5PRU5UYCBpcyB0aGUgY29ycmVjdCBhcHByb2FjaCBoZXJlLCBzaWduYWxpbmcgYSAmIzM0O05vIHN1Y2ggZW50cnkmIzM0OyBlcnJvciwgYXMgZXhwZWN0ZWQgYnkgdGhlIGNhbGxlciBvZiBgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZWAuIFRoaXMgaXMgYSBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgbWVhc3VyZS4gSXQgc2hvdWxkIGhlbHAgcHJldmVudCBwb3RlbnRpYWwgaXNzdWVzIGRvd24gdGhlIGxpbmUgaWYgYW4gZW1wdHkgb3IgaW1wcm9wZXJseSBzaXplZCBmaXJtd2FyZSBpcyBzb21laG93IHByb2Nlc3NlZC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29udGV4dHMgd2hlcmUgdGhpcyBgZndfcHJpdmAgc3RydWN0dXJlIGlzIHBvcHVsYXRlZCBhbmQgaG93IHRoZSBgc2l6ZWAgZmllbGQgaXMgYWN0dWFsbHkgZGV0ZXJtaW5lZCB0byBlbnN1cmUgdGhpcyBjaGVjayBkb2VzIHdoYXQgaXQgaXMgc3VwcG9zZWQgdG8uIEFsc28gSSBuZWVkIHRvIGFuYWx5emUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYG1haW4uY2AgdG8gc2VlIHRoZSBpbnRlbmRlZCBiZWhhdmlvciBpbiBjYXNlIG9mIHRoZSBlcnJvciBjb2RlIHRoYXQgaXMgcmV0dXJuZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTc0MT1zdGF0aWMgaW50XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzo3NDI6X3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZShzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLCBjb25zdCBjaGFyICpuYW1lLFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtNzQzLVx0XHRcdCAgc3RydWN0IGRldmljZSAqZGV2aWNlLCB2b2lkICpkYnVmLCBzaXplX3Qgc2l6ZSxcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz04Mjk9X3JlcXVlc3RfZmlybXdhcmUoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy04NjMtXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzo4NjQ6XHRyZXQgPSBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlKFx1MDAyNmZ3LCBuYW1lLCBkZXZpY2UsIGJ1Ziwgc2l6ZSxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTg2NS1cdFx0XHRcdFx0b2Zmc2V0LCBvcHRfZmxhZ3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MDQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byBGaXJtd2FyZSBSZXF1ZXN0cyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZWAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBmbGFnZ2VkIGFzIGEgc3RhdGljIGhlbHBlci4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyBkZXNpZ25lZCB0byBiZSB1c2VkICpvbmx5KiB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciB1bml0IOKAkyBpbiB0aGlzIGNhc2UsIGBfcmVxdWVzdF9maXJtd2FyZWAuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGl0JiMzOTtzIG1lYW50IHRvIGRvIHNvbWUgcHJlcGFyYXRvcnkgd29yay4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCYjMzk7cyB0cmlnZ2VyaW5nIGBfcmVxdWVzdF9maXJtd2FyZWA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbnRyeSBwb2ludHMgZm9yIHRoaXMgd2hvbGUgcHJvY2Vzcy4gV2hlcmUgYXJlICp0aG9zZSogY2FsbHMgY29taW5nIGZyb20/IFRpbWUgdG8gdHJhY2UgYmFjayBhbmQgc2VlIHRoZSBiaWdnZXIgcGljdHVyZS4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBncmFwaCBoZXJlIGlzIGNydWNpYWwgZm9yIGNvbXByZWhlbmRpbmcgdGhlIGNvbXBsZXRlIHN5c3RlbSBpbnRlcmFjdGlvbi4gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIGNhbGwgc3RhY2sgdG8gc2VlIHRoZSBjb250ZXh0IHdpdGhpbiB3aGljaCB0aGlzIGZpcm13YXJlIHJlcXVlc3QgaXMgZXZlbiBpbml0aWF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X3JlcXVlc3RfZmlybXdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz03NDE9c3RhdGljIGludFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6NzQyOl9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmUoc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTc0My1cdFx0XHQgIHN0cnVjdCBkZXZpY2UgKmRldmljZSwgdm9pZCAqZGJ1Ziwgc2l6ZV90IHNpemUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9ODI4PXN0YXRpYyBpbnRcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjgyOTpfcmVxdWVzdF9maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLCBjb25zdCBjaGFyICpuYW1lLFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtODMwLVx0XHQgIHN0cnVjdCBkZXZpY2UgKmRldmljZSwgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSxcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy04NjMtXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzo4NjQ6XHRyZXQgPSBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlKFx1MDAyNmZ3LCBuYW1lLCBkZXZpY2UsIGJ1Ziwgc2l6ZSxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTg2NS1cdFx0XHRcdFx0b2Zmc2V0LCBvcHRfZmxhZ3MpO1xuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTk0Mz1yZXF1ZXN0X2Zpcm13YXJlKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTQ5LVx0X19tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKTtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjk1MDpcdHJldCA9IF9yZXF1ZXN0X2Zpcm13YXJlKGZpcm13YXJlX3AsIG5hbWUsIGRldmljZSwgTlVMTCwgMCwgMCxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTk1MS1cdFx0XHRcdEZXX09QVF9VRVZFTlQpO1xuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTk3MD1pbnQgZmlybXdhcmVfcmVxdWVzdF9ub3dhcm4oY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmUsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTc2LVx0X19tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKTtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjk3NzpcdHJldCA9IF9yZXF1ZXN0X2Zpcm13YXJlKGZpcm13YXJlLCBuYW1lLCBkZXZpY2UsIE5VTEwsIDAsIDAsXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy05NzgtXHRcdFx0XHRGV19PUFRfVUVWRU5UIHwgRldfT1BUX05PX1dBUk4pO1xuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTk5NT1pbnQgcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCxcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDAwLVx0X19tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKTtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEwMDE6XHRyZXQgPSBfcmVxdWVzdF9maXJtd2FyZShmaXJtd2FyZV9wLCBuYW1lLCBkZXZpY2UsIE5VTEwsIDAsIDAsXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDAyLVx0XHRcdFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9OT19XQVJOIHxcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMDE5PWludCBmaXJtd2FyZV9yZXF1ZXN0X3BsYXRmb3JtKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlLFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwMjUtXHRfX21vZHVsZV9nZXQoVEhJU19NT0RVTEUpO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTAyNjpcdHJldCA9IF9yZXF1ZXN0X2Zpcm13YXJlKGZpcm13YXJlLCBuYW1lLCBkZXZpY2UsIE5VTEwsIDAsIDAsXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDI3LVx0XHRcdFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9GQUxMQkFDS19QTEFURk9STSk7XG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9MTA3Mz1yZXF1ZXN0X2Zpcm13YXJlX2ludG9fYnVmKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTA4MS1cdF9fbW9kdWxlX2dldChUSElTX01PRFVMRSk7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMDgyOlx0cmV0ID0gX3JlcXVlc3RfZmlybXdhcmUoZmlybXdhcmVfcCwgbmFtZSwgZGV2aWNlLCBidWYsIHNpemUsIDAsXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDgzLVx0XHRcdFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9OT0NBQ0hFKTtcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMTAyPXJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1Zihjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExMTEtXHRfX21vZHVsZV9nZXQoVEhJU19NT0RVTEUpO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTExMjpcdHJldCA9IF9yZXF1ZXN0X2Zpcm13YXJlKGZpcm13YXJlX3AsIG5hbWUsIGRldmljZSwgYnVmLCBzaXplLCBvZmZzZXQsXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMTEzLVx0XHRcdFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9OT0NBQ0hFIHxcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMTU3PXN0YXRpYyB2b2lkIHJlcXVlc3RfZmlybXdhcmVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMTYzLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTE2NDpcdF9yZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZ3LCBmd193b3JrLVx1MDAzZW5hbWUsIGZ3X3dvcmstXHUwMDNlZGV2aWNlLCBOVUxMLCAwLCAwLFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTE2NS1cdFx0XHQgIGZ3X3dvcmstXHUwMDNlb3B0X2ZsYWdzKTtcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMTc4LVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTE3OTpzdGF0aWMgaW50IF9yZXF1ZXN0X2Zpcm13YXJlX25vd2FpdChcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExODAtXHRzdHJ1Y3QgbW9kdWxlICptb2R1bGUsIGJvb2wgdWV2ZW50LFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEyNTA9aW50IHJlcXVlc3RfZmlybXdhcmVfbm93YWl0KFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEyNTQte1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTI1NTpcdHJldHVybiBfcmVxdWVzdF9maXJtd2FyZV9ub3dhaXQobW9kdWxlLCB1ZXZlbnQsIG5hbWUsIGRldmljZSwgZ2ZwLFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTI1Ni1cdFx0XHRcdFx0Y29udGV4dCwgY29udCwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEyNzY9aW50IGZpcm13YXJlX3JlcXVlc3Rfbm93YWl0X25vd2Fybihcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMjgwLXtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEyODE6XHRyZXR1cm4gX3JlcXVlc3RfZmlybXdhcmVfbm93YWl0KG1vZHVsZSwgRldfQUNUSU9OX1VFVkVOVCwgbmFtZSwgZGV2aWNlLFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTI4Mi1cdFx0XHRcdFx0Z2ZwLCBjb250ZXh0LCBjb250LCB0cnVlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Njk0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZpcm13YXJlIExvYWRlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byBgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBmZWVkcyBpbnRvIGBfcmVxdWVzdF9maXJtd2FyZWAsIHdoaWNoIGlzICp0aGUqIGNvcmUgb2YgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gSSBzZWUgdGhlIG1vZGlmaWNhdGlvbjogdGhlIGNvZGUgaXMgY2hlY2tpbmcgYGZ3X3ByaXYtJmd0O3NpemVgICphZnRlciogYGZ3X3N0YXRlX3dhaXRgIHJldHVybnMgc3VjY2Vzc2Z1bGx5LiBUaGUga2V5IGlzIHRoYXQgaWYgYGZ3X3N0YXRlX3dhaXRgIHJldHVybnMgc3VjY2VzcyAoMCkgYnV0IHRoZSBmaXJtd2FyZSBzaXplLCBgZndfcHJpdi0mZ3Q7c2l6ZWAsIGlzIHplcm8sIGl0JiMzOTtzIHJldHVybmluZyBgLUVOT0VOVGAuIFRoYXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZTsgaXQgYWx0ZXJzIHRoZSBiZWhhdmlvciBvZiB0aGUgY29yZSBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljLiBUaGlzIGlzIHBvdGVudGlhbGx5IGltcG9ydGFudC4KCkxldCYjMzk7cyB0aGluayBhYm91dCB0aGUgaW1wbGljYXRpb25zLiBUaGlzIGZpcm13YXJlIGxvYWRlciBpcyBmdW5kYW1lbnRhbCwgcmlnaHQ/IEl0JiMzOTtzIHRvdWNoZWQgYnkgYSBzbGV3IG9mIGRyaXZlcnMgYW5kIHN1YnN5c3RlbXMsIHNvIHRoZSBmdW5jdGlvbnMgdG8gY29uc2lkZXIgd291bGQgYmU6IGByZXF1ZXN0X2Zpcm13YXJlYCwgYHJlcXVlc3RfZmlybXdhcmVfbm93YWl0YCwgYHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0YCwgYGZpcm13YXJlX3JlcXVlc3Rfbm93YXJuYCwgYGZpcm13YXJlX3JlcXVlc3RfcGxhdGZvcm1gLCBgcmVxdWVzdF9maXJtd2FyZV9pbnRvX2J1ZmAsIGFuZCBgcmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmYC4gV2FpdCwgYHJlcXVlc3RfZmlybXdhcmVgIGlzICpzdXBlciogY29tbW9uLiBUaGF0JiMzOTtzIGEgbG90IG9mIHBvdGVudGlhbCBpbXBhY3QuCgpSaWdodCwgc28gdG8gdW5kZXJzdGFuZCB0aGUgcmVhY2ggb2YgdGhpcyBwYXRjaCwgSSBzaG91bGQgY2hlY2sgd2hldGhlciB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IGFmZmVjdCB0aGlzIGJlaGF2aW9yLiBMZXQmIzM5O3Mgc2VlLi4uIGFoLCB0aGUgZmlybXdhcmUgbG9hZGVyIGlzIGVuYWJsZWQgYnkgYENPTkZJR19GV19MT0FERVJgLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZSwgYnV0IGFyZSB0aGVyZSBvdGhlciBvcHRpb25zIHRoYXQgbWlnaHQgaW50ZXJhY3Q/IEkgbmVlZCB0byBsb29rIGludG8gd2hldGhlciBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgaW52b2x2ZWQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtGV19MT0FERVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnPTI9bWVudSBcJiMzNDtGaXJtd2FyZSBsb2FkZXJcJiMzNDtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0zLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjQ6Y29uZmlnIEZXX0xPQURFUlxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTUtXHR0cmlzdGF0ZSBcJiMzNDtGaXJtd2FyZSBsb2FkaW5nIGZhY2lsaXR5XCYjMzQ7IGlmIEVYUEVSVFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjY6XHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEEyNTYgaWYgRldfTE9BREVSX0RFQlVHXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNy1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yNy1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoyODpjb25maWcgRldfTE9BREVSX0RFQlVHXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjktXHRib29sIFwmIzM0O0xvZyBmaWxlbmFtZXMgYW5kIGNoZWNrc3VtcyBmb3IgbG9hZGVkIGZpcm13YXJlXCYjMzQ7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMzAtXHRkZXBlbmRzIG9uIERZTkFNSUNfREVCVUdcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzozMTpcdGRlcGVuZHMgb24gRldfTE9BREVSXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MzI6XHRkZWZhdWx0IEZXX0xPQURFUlxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTMzLVx0aGVscFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0zNy1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzozODpjb25maWcgUlVTVF9GV19MT0FERVJfQUJTVFJBQ1RJT05TXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMzktXHRib29sIFwmIzM0O1J1c3QgRmlybXdhcmUgTG9hZGVyIGFic3RyYWN0aW9uc1wmIzM0O1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTQwLVx0ZGVwZW5kcyBvbiBSVVNUXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6NDE6XHRzZWxlY3QgRldfTE9BREVSXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNDItXHRoZWxwXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTQ0LVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjQ1OmlmIEZXX0xPQURFUlxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTQ2LVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjQ3OmNvbmZpZyBGV19MT0FERVJfUEFHRURfQlVGXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNDgtXHRib29sXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNDktXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6NTA6Y29uZmlnIEZXX0xPQURFUl9TWVNGU1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTUxLVx0Ym9vbFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZz01Mz1jb25maWcgRVhUUkFfRklSTVdBUkVcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNjAtXHQgIG92ZXIgZmlybXdhcmUgbG9va3VwcyB1c2luZyB5b3VyIGZpbGVzeXN0ZW0gb3ZlciB0aGUgc3VwcG9ydGVkXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6NjE6XHQgIC9saWIvZmlybXdhcmUgcGF0aHMgZG9jdW1lbnRlZCBvbiBDT05GSUdfRldfTE9BREVSLlxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTYyLVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZz04Nj1jb25maWcgRVhUUkFfRklSTVdBUkVfRElSXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTkzLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjk0OmNvbmZpZyBGV19MT0FERVJfVVNFUl9IRUxQRVJcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy05NS1cdGJvb2wgXCYjMzQ7RW5hYmxlIHRoZSBmaXJtd2FyZSBzeXNmcyBmYWxsYmFjayBtZWNoYW5pc21cJiMzNDtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzo5NjpcdHNlbGVjdCBGV19MT0FERVJfU1lTRlNcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzo5NzpcdHNlbGVjdCBGV19MT0FERVJfUEFHRURfQlVGXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctOTgtXHRoZWxwXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE2Ni1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoxNjc6Y29uZmlnIEZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE2OC1cdGJvb2wgXCYjMzQ7Rm9yY2UgdGhlIGZpcm13YXJlIHN5c2ZzIGZhbGxiYWNrIG1lY2hhbmlzbSB3aGVuIHBvc3NpYmxlXCYjMzQ7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MTY5Olx0ZGVwZW5kcyBvbiBGV19MT0FERVJfVVNFUl9IRUxQRVJcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0xNzAtXHRoZWxwXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE4MS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoxODI6Y29uZmlnIEZXX0xPQURFUl9DT01QUkVTU1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE4My1cdGJvb2wgXCYjMzQ7RW5hYmxlIGNvbXByZXNzZWQgZmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0xOTItXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MTkzOmlmIEZXX0xPQURFUl9DT01QUkVTU1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjE5NDpjb25maWcgRldfTE9BREVSX0NPTVBSRVNTX1haXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMTk1LVx0Ym9vbCBcJiMzNDtFbmFibGUgWFotY29tcHJlc3NlZCBmaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MTk2Olx0c2VsZWN0IEZXX0xPQURFUl9QQUdFRF9CVUZcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0xOTctXHRzZWxlY3QgWFpfREVDXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTIwMy1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoyMDQ6Y29uZmlnIEZXX0xPQURFUl9DT01QUkVTU19aU1REXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjA1LVx0Ym9vbCBcJiMzNDtFbmFibGUgWlNURC1jb21wcmVzc2VkIGZpcm13YXJlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjA5LVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjIxMDplbmRpZiAjIEZXX0xPQURFUl9DT01QUkVTU1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTIxMS1cbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc9MjI0PWNvbmZpZyBGV19VUExPQURcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yMjUtXHRib29sIFwmIzM0O0VuYWJsZSB1c2VycyB0byBpbml0aWF0ZSBmaXJtd2FyZSB1cGRhdGVzIHVzaW5nIHN5c2ZzXCYjMzQ7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MjI2Olx0c2VsZWN0IEZXX0xPQURFUl9TWVNGU1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjIyNzpcdHNlbGVjdCBGV19MT0FERVJfUEFHRURfQlVGXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjI4LVx0aGVscFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yMzctXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MjM4OmVuZGlmICMgRldfTE9BREVSXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjM5LWVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTAyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZpcm13YXJlIExvYWRpbmcgRWRnZSBDYXNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcywgYW5kIG15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgYEZXX0xPQURFUmAgY29uZmlndXJhdGlvbiBvcHRpb24g4oCTIGl0JiMzOTtzIGVuYWJsZWQgYnkgZGVmYXVsdCwgd2hpY2ggaXMgZ29vZC4gVGhhdCBzZXRzIHRoZSBzdGFnZS4gQnV0IG5vdyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgc3BlY2lmaWNzIG9mIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCBmYWlsdXJlcywgcGFydGljdWxhcmx5IHdpdGhpbiBgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZWAuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSYjMzk7bSBzZWVpbmcgYSBzY2VuYXJpbyB3aGVyZSBgZndfc3RhdGVfd2FpdGAgcmV0dXJucyBhIHN1Y2Nlc3MgY29kZSAoMCksICpidXQqIHRoZSBmaXJtd2FyZSBzaXplIChgZndfcHJpdi0mZ3Q7c2l6ZWApIGVuZHMgdXAgYmVpbmcgemVyby4gQWxhcm0gYmVsbHMhCgpUaGlzIGxpa2VseSBpbmRpY2F0ZXMgc29tZXRoaW5nIHdlbnQgd3JvbmcsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2h5Ki4gTXkgYnJhaW4gaXMgaW1tZWRpYXRlbHkganVtcGluZyB0byBhIGNvdXBsZSBvZiBwb3NzaWJpbGl0aWVzOiBwZXJoYXBzIGEgY29uY3VycmVudCBmaXJtd2FyZSBsb2FkIGNvbXBsZXRlZCwgYnV0IGZhaWxlZCBzb21laG93LCBsZWF2aW5nIHVzIHdpdGggbm90aGluZy4gT3IsIG1heWJlIHRoZSB1c2VyIGhlbHBlciBmYWxsYmFjayBtZWNoYW5pc20gd2FzIHRyaWdnZXJlZCwgYW5kIGZvciBzb21lIHJlYXNvbiwgaXQgYWxzbyBwcm92aWRlZCBhbiBlbXB0eSBmaXJtd2FyZS4KClNvLCB3aGVyZSBkbyBJIGdvIG5leHQ/IFJpZ2h0LCB0aW1lIHRvIGRpZyBkZWVwZXIgaW50byB0aGF0IGBmd19zdGF0ZV93YWl0YCBmdW5jdGlvbiBpdHNlbGYuIFVuZGVyc3RhbmRpbmcgaG93IGl0IGNhbiByZXR1cm4gc3VjY2VzcyAqZGVzcGl0ZSogYSB6ZXJvLXNpemVkIGZpcm13YXJlIGlzIGNydWNpYWwgaGVyZSB0byB0cnVseSB1bmRlcnN0YW5kIHRoZSByb290IGNhdXNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyB3aXRoaW4gdGhhdCBmdW5jdGlvbiBhbmQgdGhlIGNvbmRpdGlvbnMgaXQmIzM5O3MgY2hlY2tpbmcgdG8gZnVsbHkgZGlhZ25vc2UgdGhpcyBzaXR1YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Z3X3N0YXRlX3dhaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL2ZhbGxiYWNrLmM9NDI9c3RhdGljIGlubGluZSBpbnQgZndfc3lzZnNfd2FpdF90aW1lb3V0KHN0cnVjdCBmd19wcml2ICpmd19wcml2LCAgbG9uZyB0aW1lb3V0KVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9mYWxsYmFjay5jLTQzLXtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvZmFsbGJhY2suYzo0NDpcdHJldHVybiBfX2Z3X3N0YXRlX3dhaXRfY29tbW9uKGZ3X3ByaXYsIHRpbWVvdXQpO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9mYWxsYmFjay5jLTQ1LX1cbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL2Zpcm13YXJlLmg9OTE9c3RhdGljIGlubGluZSBib29sIF9fZndfc3RhdGVfY2hlY2soc3RydWN0IGZ3X3ByaXYgKmZ3X3ByaXYsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9maXJtd2FyZS5oLTk4LVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9maXJtd2FyZS5oOjk5OnN0YXRpYyBpbmxpbmUgaW50IF9fZndfc3RhdGVfd2FpdF9jb21tb24oc3RydWN0IGZ3X3ByaXYgKmZ3X3ByaXYsIGxvbmcgdGltZW91dClcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvZmlybXdhcmUuaC0xMDAte1xuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTk4PXZvaWQgZndfc3RhdGVfaW5pdChzdHJ1Y3QgZndfcHJpdiAqZndfcHJpdilcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDUtXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMDY6c3RhdGljIGlubGluZSBpbnQgZndfc3RhdGVfd2FpdChzdHJ1Y3QgZndfcHJpdiAqZndfcHJpdilcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwNy17XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMDg6XHRyZXR1cm4gX19md19zdGF0ZV93YWl0X2NvbW1vbihmd19wcml2LCBNQVhfU0NIRURVTEVfVElNRU9VVCk7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDktfVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTc0Mj1fcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlKHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtNzcxLVx0aWYgKHJldCBcdTAwM2UgMCkge1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6NzcyOlx0XHRyZXQgPSBmd19zdGF0ZV93YWl0KGZ3X3ByaXYpO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtNzczLVx0XHRpZiAoIXJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODQ0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZpcm13YXJlIExvYWRlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYF9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmVgLiBJdCYjMzk7cyBhIHByZXR0eSBjZW50cmFsIGZ1bmN0aW9uLCByZWFjaGFibGUgdGhyb3VnaCB0aGUgY29tbW9uIGByZXF1ZXN0X2Zpcm13YXJlYCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMsIHdoaWNoIGFyZSBhbGwgb3ZlciB0aGUgcGxhY2UgaW4gZHJpdmVyIGNvZGUuIFRoZSBwYXRjaCBpdHNlbGYgaXMgc2ltcGxlIGVub3VnaDogaXQmIzM5O3MgYWRkaW5nIGEgY2hlY2sgZm9yIGAhZndfcHJpdi0mZ3Q7c2l6ZWAgYW5kIHJldHVybmluZyBgLUVOT0VOVGAgaWYgdGhlIGZpcm13YXJlIHNpemUgaXMgemVyby4gQmFzaWNhbGx5LCB0aGlzIHByZXZlbnRzIHVzIGZyb20gYWNjaWRlbnRhbGx5IHVzaW5nIG9yIGdldHRpbmcgYSBmaXJtd2FyZSBvYmplY3QgdGhhdCBoYXMgYSB6ZXJvIHNpemUsIGV2ZW4gaWYgYGZ3X3N0YXRlX3dhaXRgIHN1Y2NlZWRzLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IGNvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0cyBvbiB0aG9zZSBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBkaXJlY3RseSBjYWxsIGBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlYCBvciBgX3JlcXVlc3RfZmlybXdhcmVgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cy4gVGltZSB0byBkaWcgaW50byBgZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmNgIGFuZCBnZXQgYSBsaXN0IG9mIHRob3NlIGNyaXRpY2FsIHN5bWJvbHMuIFRoYXQmIzM5O2xsIGJlIHRoZSBzdGFydGluZyBwb2ludCBmb3IgZGV2ZWxvcGluZyBzb21lIHRhcmdldGVkIGZ1enogaGFybmVzc2VzLiBUaGlzIHdpbGwgZ2l2ZSB1cyBhIGdvb2QgdGVzdCB0byBzZWUgaWYgdGhlIHBhdGNoIG1ha2VzIGEgZGlmZmVyZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTk0Mz1yZXF1ZXN0X2Zpcm13YXJlKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTU0LX1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjk1NTpFWFBPUlRfU1lNQk9MKHJlcXVlc3RfZmlybXdhcmUpO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTU2LVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTk3MD1pbnQgZmlybXdhcmVfcmVxdWVzdF9ub3dhcm4oY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmUsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTgxLX1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjk4MjpFWFBPUlRfU1lNQk9MX0dQTChmaXJtd2FyZV9yZXF1ZXN0X25vd2Fybik7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy05ODMtXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9OTk1PWludCByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdChjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwMDYtfVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTAwNzpFWFBPUlRfU1lNQk9MX0dQTChyZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdCk7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDA4LVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEwMTk9aW50IGZpcm13YXJlX3JlcXVlc3RfcGxhdGZvcm0oY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTAzMC19XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMDMxOkVYUE9SVF9TWU1CT0xfR1BMKGZpcm13YXJlX3JlcXVlc3RfcGxhdGZvcm0pO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTAzMi1cbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMDQ1PWludCBmaXJtd2FyZV9yZXF1ZXN0X2NhY2hlKHN0cnVjdCBkZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqbmFtZSlcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDU0LX1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEwNTU6RVhQT1JUX1NZTUJPTF9HUEwoZmlybXdhcmVfcmVxdWVzdF9jYWNoZSk7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDU2LVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEwNzM9cmVxdWVzdF9maXJtd2FyZV9pbnRvX2J1Zihjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwODYtfVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTA4NzpFWFBPUlRfU1lNQk9MKHJlcXVlc3RfZmlybXdhcmVfaW50b19idWYpO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTA4OC1cbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMTAyPXJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1Zihjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExMTctfVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTExODpFWFBPUlRfU1lNQk9MKHJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1Zik7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMTE5LVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTExMjQ9dm9pZCByZWxlYXNlX2Zpcm13YXJlKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTEzMS19XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMTMyOkVYUE9SVF9TWU1CT0wocmVsZWFzZV9maXJtd2FyZSk7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMTMzLVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEyNTA9aW50IHJlcXVlc3RfZmlybXdhcmVfbm93YWl0KFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEyNTgtfVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTI1OTpFWFBPUlRfU1lNQk9MKHJlcXVlc3RfZmlybXdhcmVfbm93YWl0KTtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEyNjAtXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9MTI3Nj1pbnQgZmlybXdhcmVfcmVxdWVzdF9ub3dhaXRfbm93YXJuKFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEyODMtfVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTI4NDpFWFBPUlRfU1lNQk9MX0dQTChmaXJtd2FyZV9yZXF1ZXN0X25vd2FpdF9ub3dhcm4pO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTI4NS1cbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMjk5PXZvaWQgcmVxdWVzdF9maXJtd2FyZV9ub3dhaXRfY2FuY2VsKHN0cnVjdCBkZXZpY2UgKmRldmljZSwgdm9pZCAqY29udGV4dCxcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMzIxLX1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEzMjI6RVhQT1JUX1NZTUJPTF9HUEwocmVxdWVzdF9maXJtd2FyZV9ub3dhaXRfY2FuY2VsKTtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEzMjMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NjgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEZpcm13YXJlIExvYWRpbmcgZm9yIFZ1bG5lcmFiaWxpdHkgUmVzZWFyY2gqKgoKT2theSwgbXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2UgZmlybXdhcmUgcmVxdWVzdCBzeW1ib2xzOiBgcmVxdWVzdF9maXJtd2FyZWAsIGByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdGAsIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAsIGBmaXJtd2FyZV9yZXF1ZXN0X25vd2FybmAsIGByZXF1ZXN0X2Zpcm13YXJlX2ludG9fYnVmYCwgYW5kIGByZXF1ZXN0X3BhcnRpYWxfZmlybXdhcmVfaW50b19idWZgLiBJIGtub3cgdGhhdCBgcmVxdWVzdF9maXJtd2FyZWAgaW4gcGFydGljdWxhciBpcyBhIGhpZ2gtdHJhZmZpYyBhcmVhLCBlc3BlY2lhbGx5IGR1cmluZyBzeXN0ZW0gYm9vdCwgYW5kIHRoYXQgbWFrZXMgaXQgYSBwcmltZSB0YXJnZXQuIFRoZSBiZWF1dHkgaXMsIHN5emthbGxlciBjYW4gcHJvYmUgaXQgdGhyb3VnaCB2YXJpb3VzIHJvdXRlcyBsaWtlIHBzZXVkby1kZXZpY2VzIG9yIHN5c2ZzLCBhbmQgdGhhdCYjMzk7cyBleGFjdGx5IHdoYXQgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGV4cGxvaXRpbmcgZm9yIGZ1enppbmcgcHVycG9zZXMuCgpXYWl0IGEgc2Vjb25k4oCmIHRoZSBmaXJtd2FyZSBsb2FkZXIgKml0c2VsZiogaGFzIGEgc3lzZnMgaW50ZXJmYWNlIGZvciBsb2FkaW5nIGZpcm13YXJlLiBCaW5nbyEgVGhhdCYjMzk7cyBhIGRpcmVjdCBlbnRyeSBwb2ludC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGFyb3VuZCB0aGF0IGludGVyZmFjZS4gTGV0JiMzOTtzIHNlZS4uLiBgRldfTE9BREVSX1NZU0ZTYOKApiBhaGEsIGl0JiMzOTtzIHNlbGVjdGVkIGJ5IGBGV19MT0FERVJfVVNFUl9IRUxQRVJgICphbmQqIGBGV19VUExPQURgLiBOb3csIHdoYXQgZG9lcyBgRldfTE9BREVSX1VTRVJfSEVMUEVSYCBkbyBzcGVjaWZpY2FsbHk/IFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RldfTE9BREVSX1VTRVJfSEVMUEVSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZz04Nj1jb25maWcgRVhUUkFfRklSTVdBUkVfRElSXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTkzLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjk0OmNvbmZpZyBGV19MT0FERVJfVVNFUl9IRUxQRVJcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy05NS1cdGJvb2wgXCYjMzQ7RW5hYmxlIHRoZSBmaXJtd2FyZSBzeXNmcyBmYWxsYmFjayBtZWNoYW5pc21cJiMzNDtcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMTY2LVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjE2Nzpjb25maWcgRldfTE9BREVSX1VTRVJfSEVMUEVSX0ZBTExCQUNLXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMTY4LVx0Ym9vbCBcJiMzNDtGb3JjZSB0aGUgZmlybXdhcmUgc3lzZnMgZmFsbGJhY2sgbWVjaGFuaXNtIHdoZW4gcG9zc2libGVcJiMzNDtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoxNjk6XHRkZXBlbmRzIG9uIEZXX0xPQURFUl9VU0VSX0hFTFBFUlxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE3MC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNzMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRmlybXdhcmUgTG9hZGluZyBPcHRpbWl6YXRpb24qKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgZGVhbC4gSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgd2hlcmUgYGZ3X3N0YXRlX3dhaXRgIG1pZ2h0IHJldHVybiAwIHdpdGggYW4gZW1wdHkgc2l6ZSBpZiB0aGUgdXNlciBoZWxwZXIgd3JpdGVzIHplcm8gYnl0ZXMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGBzeXNmc2AgZmFsbGJhY2sgc2NlbmFyaW8sIGFuZCB0aGUga2V5IGhlcmUgaXMgYEZXX0xPQURFUl9VU0VSX0hFTFBFUmAuIEVuYWJsaW5nIHRoYXQsIGFuZCBhbHNvIGl0cyBmYWxsYmFjayBjb3VudGVycGFydCwgYEZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS2AsIHNlZW1zIGxpa2UgdGhlIHJpZ2h0IG1vdmUgdG8gY292ZXIgYWxsIGJhc2VzIGFuZCBoYW5kbGUgdGhvc2UgZWRnZSBjYXNlcyBncmFjZWZ1bGx5LgoKTm93LCBhIHF1aWNrIHNhbml0eSBjaGVjazogZG8gd2UgKnJlYWxseSogbmVlZCBgRldfTE9BREVSYCBpdHNlbGY/IEhtbSwgaXQmIzM5O3Mgc2V0IHRvICYjMzQ7eSYjMzQ7IGJ5IGRlZmF1bHQsIHNvIHByZXN1bWFibHksIHdlIGRvLiBFeGNlbGxlbnQuIFRoaXMgbWVhbnMgZW5hYmxpbmcgYEZXX0xPQURFUl9VU0VSX0hFTFBFUmAgYW5kIGBGV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0tgIGlzIGEgc291bmQgY29uZmlndXJhdGlvbiBmb3IgY29tcHJlaGVuc2l2ZSBjb3ZlcmFnZSwgZXNwZWNpYWxseSBmb3IgdGhvc2UgdXNlci1zcGFjZSBpbnRlcmFjdGlvbnMuCgpUbyBtYWtlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bSBnb2luZyB0byB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgY29kZSB3aXRoaW4gYF9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmVgLiBKdXN0IHRvIHJlY29uZmlybSB0aGlzIGFwcHJvYWNoIGFsaWducyB3aXRoIHRoZSBleGlzdGluZyBsb2dpYyB0aGVyZSwgYW5kIHRoYXQgSSYjMzk7bSBub3Qgb3Zlcmxvb2tpbmcgYW55dGhpbmcgY3JpdGljYWwuIEFsd2F5cyBnb29kIHRvIGRvdWJsZS1jaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzUwOlx0XHQqZmlybXdhcmVfcCA9IGZpcm13YXJlID0ga3phbGxvY19vYmooKmZpcm13YXJlKTtcbiA3NTE6XHRcdGlmICghZmlybXdhcmUpIHtcbiA3NTI6XHRcdFx0ZGV2X2VycihkZXZpY2UsIFwmIzM0OyVzOiBrbWFsbG9jKHN0cnVjdCBmaXJtd2FyZSkgZmFpbGVkXFxuXCYjMzQ7LFxuIDc1MzpcdFx0XHRcdF9fZnVuY19fKTtcbiA3NTQ6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gNzU1Olx0XHR9XG4gNzU2Olx0XG4gNzU3Olx0XHRpZiAoZmlybXdhcmVfcmVxdWVzdF9idWlsdGluX2J1ZihmaXJtd2FyZSwgbmFtZSwgZGJ1Ziwgc2l6ZSkpIHtcbiA3NTg6XHRcdFx0ZGV2X2RiZyhkZXZpY2UsIFwmIzM0O3VzaW5nIGJ1aWx0LWluICVzXFxuXCYjMzQ7LCBuYW1lKTtcbiA3NTk6XHRcdFx0cmV0dXJuIDA7IC8qIGFzc2lnbmVkICovXG4gNzYwOlx0XHR9XG4gNzYxOlx0XG4gNzYyOlx0XHRyZXQgPSBhbGxvY19sb29rdXBfZndfcHJpdihuYW1lLCBcdTAwMjZmd19jYWNoZSwgXHUwMDI2ZndfcHJpdiwgZGJ1Ziwgc2l6ZSxcbiA3NjM6XHRcdFx0XHRcdCAgIG9mZnNldCwgb3B0X2ZsYWdzKTtcbiA3NjQ6XHRcbiA3NjU6XHRcdC8qXG4gNzY2Olx0XHQgKiBiaW5kIHdpdGggJiMzOTtwcml2JiMzOTsgbm93IHRvIGF2b2lkIHdhcm5pbmcgaW4gZmFpbHVyZSBwYXRoXG4gNzY3Olx0XHQgKiBvZiByZXF1ZXN0aW5nIGZpcm13YXJlLlxuIDc2ODpcdFx0ICovXG4gNzY5Olx0XHRmaXJtd2FyZS1cdTAwM2Vwcml2ID0gZndfcHJpdjtcbiA3NzA6XHRcbiA3NzE6XHRcdGlmIChyZXQgXHUwMDNlIDApIHtcbiA3NzI6XHRcdFx0cmV0ID0gZndfc3RhdGVfd2FpdChmd19wcml2KTtcbiA3NzM6XHRcdFx0aWYgKCFyZXQpIHtcbiA3NzQ6XHRcdFx0XHRpZiAoIWZ3X3ByaXYtXHUwMDNlc2l6ZSlcbiA3NzU6XHRcdFx0XHRcdHJldHVybiAtRU5PRU5UO1xuIDc3NjpcdFx0XHRcdGZ3X3NldF9wYWdlX2RhdGEoZndfcHJpdiwgZmlybXdhcmUpO1xuIDc3NzpcdFx0XHRcdHJldHVybiAwOyAvKiBhc3NpZ25lZCAqL1xuIDc3ODpcdFx0XHR9XG4gNzc5Olx0XHR9XG4gNzgwOlx0XG4gNzgxOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDc4MjpcdFx0XHRyZXR1cm4gcmV0O1xuIDc4MzpcdFx0cmV0dXJuIDE7IC8qIG5lZWQgdG8gbG9hZCAqL1xuIDc4NDpcdH1cbiA3ODU6XHRcbiA3ODY6XHQvKlxuIDc4NzpcdCAqIEJhdGNoZWQgcmVxdWVzdHMgbmVlZCBvbmx5IG9uZSB3YWtlLCB3ZSBuZWVkIHRvIGRvIHRoaXMgc3RlcCBsYXN0IGR1ZSB0byB0aGVcbiA3ODg6XHQgKiBmYWxsYmFjayBtZWNoYW5pc20uIFRoZSBidWYgaXMgcHJvdGVjdGVkIHdpdGgga3JlZl9nZXQoKSwgYW5kIGl0IHdvbiYjMzk7dCBiZVxuIDc4OTpcdCAqIHJlbGVhc2VkIHVudGlsIHRoZSBsYXN0IHVzZXIgY2FsbHMgcmVsZWFzZV9maXJtd2FyZSgpLlxuIDc5MDpcdCAqXG4gNzkxOlx0ICogRmFpbGVkIGJhdGNoZWQgcmVxdWVzdHMgYXJlIHBvc3NpYmxlIGFzIHdlbGwsIGluIHN1Y2ggY2FzZXMgd2UganVzdCBzaGFyZVxuIDc5MjpcdCAqIHRoZSBzdHJ1Y3QgZndfcHJpdiBhbmQgd29uJiMzOTt0IHJlbGVhc2UgaXQgdW50aWwgYWxsIHJlcXVlc3RzIGFyZSB3b2tlblxuIDc5MzpcdCAqIGFuZCBoYXZlIGdvbmUgdGhyb3VnaCB0aGlzIHNhbWUgcGF0aC5cbiA3OTQ6XHQgKi9cbiA3OTU6XHRzdGF0aWMgdm9pZCBmd19hYm9ydF9iYXRjaF9yZXFzKHN0cnVjdCBmaXJtd2FyZSAqZncpXG4gNzk2Olx0e1xuIDc5NzpcdFx0c3RydWN0IGZ3X3ByaXYgKmZ3X3ByaXY7XG4gNzk4Olx0XG4gNzk5Olx0XHQvKiBMb2FkZWQgZGlyZWN0bHk/ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzYyCgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDUzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGaXJtd2FyZSBMb2FkaW5nIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoIGFuZCBoZXJlJiMzOTtzIG15IHRha2U6IHRoZSBmaXggaXMgc3F1YXJlbHkgd2l0aGluIGBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlYC4gVGhlIGNvcmUgaXNzdWUgcmV2b2x2ZXMgYXJvdW5kIGNvbmN1cnJlbnQgZmlybXdhcmUgbG9hZGluZyDigJMgc3BlY2lmaWNhbGx5LCB3aGF0IGhhcHBlbnMgd2hlbiB0d28gdGhyZWFkcyB0cnkgdG8gZ3JhYiB0aGUgc2FtZSBmaXJtd2FyZSBzaW11bHRhbmVvdXNseS4gSWYgYGFsbG9jX2xvb2t1cF9md19wcml2YCByZXR1cm5zIGEgcG9zaXRpdmUgdmFsdWUsIGluZGljYXRpbmcgYW5vdGhlciB0aHJlYWQgaXMgYWxyZWFkeSBvbiB0aGUgY2FzZSwgaXQgdGhlbiB3YWl0cyBvbiB0aGUgZmlybXdhcmUgc3RhdGUgdXNpbmcgYGZ3X3N0YXRlX3dhaXQoZndfcHJpdilgLgoKVGhlIGNydWNpYWwgcGFydCBpcyB0aGUgY2hlY2sgYWZ0ZXIgdGhlIHdhaXQuIElmIGBmd19zdGF0ZV93YWl0YCBzdWNjZWVkcyAocmV0dXJucyAwKSwgdGhlIGNvZGUgbm93ICpleHBsaWNpdGx5KiBjaGVja3MgaWYgYGZ3X3ByaXYtJmd0O3NpemVgIGlzIHplcm8uIElmIGl0ICppcyogemVybywgdGhhdCBtZWFucyB0aGUgY29uY3VycmVudCBsb2FkIGVpdGhlciBmYWlsZWQgb3IsIG1vcmUgcHJvYmxlbWF0aWNhbGx5LCByZXN1bHRlZCBpbiBhbiBlbXB0eSBmaXJtd2FyZS4gVGhlIHByZXZpb3VzIGJlaGF2aW9yIHdhcyB0byBoYXBwaWx5IGhhbmQgb3ZlciBhIGZpcm13YXJlIG9iamVjdCBvZiBzaXplIHplcm8gd2l0aG91dCBpbmRpY2F0aW5nIGEgZmFpbHVyZS4gVGhpcywgYXMgd2Uga25vdywgaXMgYmFkIG5ld3MuIE5vdywgaXQgcmV0dXJucyBgLUVOT0VOVGAgaW4gdGhhdCBzY2VuYXJpby4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBjbGVhciBhbmQgZGlyZWN0IGZpeCBmb3IgYSByYWNlIGNvbmRpdGlvbi4gSXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2Ugc2hvdWxkIGZ1enouCgpNeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGZvbGxvd2luZyBzeW1ib2xzOiBgcmVxdWVzdF9maXJtd2FyZWAsIGByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdGAsIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAsIGBmaXJtd2FyZV9yZXF1ZXN0X25vd2FybmAsIGByZXF1ZXN0X2Zpcm13YXJlX2ludG9fYnVmYCwgYW5kIGByZXF1ZXN0X3BhcnRpYWxfZmlybXdhcmVfaW50b19idWZgLgoKUmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLCBgRldfTE9BREVSX1VTRVJfSEVMUEVSYCBhbmQgYEZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS2AgYXJlIHRoZSBtb3N0IHJlbGV2YW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIGFyZSBlbmFibGVkLCBhcyB0aGlzIGlzIHRoZSBwYXRoIHdoZXJlIHRoZSBlbXB0eSBmaXJtd2FyZSBjb3VsZCBiZSBsb2FkZWQuIEkmIzM5O2xsIGFsc28gYWRkIGBGV19MT0FERVJfQ09NUFJFU1NgLCBgRldfTE9BREVSX0NPTVBSRVNTX1haYCwgYW5kIGBGV19MT0FERVJfQ09NUFJFU1NfWlNURGAgdG8gZW5hYmxlIGNvbXByZXNzZWQgZmlybXdhcmUgc3VwcG9ydCwgc2luY2UgdGhhdCBjb3VsZCB0cmlnZ2VyIGRpZmZlcmVudCBjb2RlcGF0aHMuCgpTbywgdG8gc3VtbWFyaXplIG15IHJlc3BvbnNlIGZvciBmdXp6aW5nLCBJJiMzOTtkIHNheToKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlCiogICAqKkZvY3VzU3ltYm9sczoqKiBgcmVxdWVzdF9maXJtd2FyZWAsIGByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdGAsIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAsIGBmaXJtd2FyZV9yZXF1ZXN0X25vd2FybmAsIGByZXF1ZXN0X2Zpcm13YXJlX2ludG9fYnVmYCwgYHJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1ZmAKKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgRldfTE9BREVSX1VTRVJfSEVMUEVSYCwgYEZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS2AsIGBGV19MT0FERVJfQ09NUFJFU1NgLCBgRldfTE9BREVSX0NPTVBSRVNTX1haYCwgYEZXX0xPQURFUl9DT01QUkVTU19aU1REYAoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGNyaXRpY2FsIGNvbmN1cnJlbmN5IGlzc3VlIHdoZXJlIGNvbmN1cnJlbnQgZmlybXdhcmUgcmVxdWVzdHMgY291bGQgbGVhZCB0byB6ZXJvLXNpemVkIGZpcm13YXJlIG9iamVjdHMgYW5kIGluY29ycmVjdCBlcnJvciBoYW5kbGluZywgdGhpcyBpcyBhIGNvcmUgZmlybXdhcmUgbG9hZGVyIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZXX0xPQURFUl9VU0VSX0hFTFBFUiYjMzQ7LAogICAgJiMzNDtGV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXF1ZXN0X2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfbm93YWl0JiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfZGlyZWN0JiMzNDssCiAgICAmIzM0O2Zpcm13YXJlX3JlcXVlc3Rfbm93YXJuJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfaW50b19idWYmIzM0OywKICAgICYjMzQ7cmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjb3JlIGZpcm13YXJlIGxvYWRlciB3aGVyZSBjb25jdXJyZW50IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBmaXJtd2FyZSBjb3VsZCByZXN1bHQgaW4gcmV0dXJuaW5nIGEgZmlybXdhcmUgb2JqZWN0IHdpdGggc2l6ZSAwIGlmIHRoZSBjb25jdXJyZW50IGxvYWQgZmFpbGVkIG9yIHJlc3VsdGVkIGluIGFuIGVtcHR5IGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZXX0xPQURFUl9VU0VSX0hFTFBFUiYjMzQ7LAogICAgJiMzNDtGV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXF1ZXN0X2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfbm93YWl0JiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfZGlyZWN0JiMzNDssCiAgICAmIzM0O2Zpcm13YXJlX3JlcXVlc3Rfbm93YXJuJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfaW50b19idWYmIzM0OywKICAgICYjMzQ7cmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjb3JlIGZpcm13YXJlIGxvYWRlciB3aGVyZSBjb25jdXJyZW50IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBmaXJtd2FyZSBjb3VsZCByZXN1bHQgaW4gcmV0dXJuaW5nIGEgZmlybXdhcmUgb2JqZWN0IHdpdGggc2l6ZSAwIGlmIHRoZSBjb25jdXJyZW50IGxvYWQgZmFpbGVkIG9yIHJlc3VsdGVkIGluIGFuIGVtcHR5IGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0ODoxMy45MzI2OTgzNTRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTI2NDY1MjE2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGV19MT0FERVJfVVNFUl9IRUxQRVJcIixcbiAgICBcIkZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlcXVlc3RfZmlybXdhcmVcIixcbiAgICBcInJlcXVlc3RfZmlybXdhcmVfbm93YWl0XCIsXG4gICAgXCJyZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdFwiLFxuICAgIFwiZmlybXdhcmVfcmVxdWVzdF9ub3dhcm5cIixcbiAgICBcInJlcXVlc3RfZmlybXdhcmVfaW50b19idWZcIixcbiAgICBcInJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1ZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjb3JlIGZpcm13YXJlIGxvYWRlciB3aGVyZSBjb25jdXJyZW50IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBmaXJtd2FyZSBjb3VsZCByZXN1bHQgaW4gcmV0dXJuaW5nIGEgZmlybXdhcmUgb2JqZWN0IHdpdGggc2l6ZSAwIGlmIHRoZSBjb25jdXJyZW50IGxvYWQgZmFpbGVkIG9yIHJlc3VsdGVkIGluIGFuIGVtcHR5IGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQ4OjEzLjkzMjcwODEwNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwMTM4OTM5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI1MmZlODNjMDkyZmQ2YjAzYjVjNGFlZDI0NTEwNjg5ZGNlM2I1NTNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwOTo0ODoxMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYyBiL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXFxuaW5kZXggMjQyMTNhMGVhODMxNy4uYjE1MjFhMWRhMTMyYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uY1xcbisrKyBiL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXFxuQEAgLTc3MSw2ICs3NzEsOCBAQCBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlKHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsIGNvbnN0IGNoYXIgKm5hbWUsXFxuIFxcdGlmIChyZXQgXFx1MDAzZSAwKSB7XFxuIFxcdFxcdHJldCA9IGZ3X3N0YXRlX3dhaXQoZndfcHJpdik7XFxuIFxcdFxcdGlmICghcmV0KSB7XFxuK1xcdFxcdFxcdGlmICghZndfcHJpdi1cXHUwMDNlc2l6ZSlcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuIFxcdFxcdFxcdGZ3X3NldF9wYWdlX2RhdGEoZndfcHJpdiwgZmlybXdhcmUpO1xcbiBcXHRcXHRcXHRyZXR1cm4gMDsgLyogYXNzaWduZWQgKi9cXG4gXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0ODoxNS4xMzUxMjk5M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUwMDYyMjA0Njc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZXX0xPQURFUl9VU0VSX0hFTFBFUlwiLFxuICAgIFwiRldfTE9BREVSX1VTRVJfSEVMUEVSX0ZBTExCQUNLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVxdWVzdF9maXJtd2FyZVwiLFxuICAgIFwicmVxdWVzdF9maXJtd2FyZV9ub3dhaXRcIixcbiAgICBcInJlcXVlc3RfZmlybXdhcmVfZGlyZWN0XCIsXG4gICAgXCJmaXJtd2FyZV9yZXF1ZXN0X25vd2FyblwiLFxuICAgIFwicmVxdWVzdF9maXJtd2FyZV9pbnRvX2J1ZlwiLFxuICAgIFwicmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNvcmUgZmlybXdhcmUgbG9hZGVyIHdoZXJlIGNvbmN1cnJlbnQgcmVxdWVzdHMgZm9yIHRoZSBzYW1lIGZpcm13YXJlIGNvdWxkIHJlc3VsdCBpbiByZXR1cm5pbmcgYSBmaXJtd2FyZSBvYmplY3Qgd2l0aCBzaXplIDAgaWYgdGhlIGNvbmN1cnJlbnQgbG9hZCBmYWlsZWQgb3IgcmVzdWx0ZWQgaW4gYW4gZW1wdHkgZmlybXdhcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUga2VybmVsIHN1YnN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjUyZmU4M2MwOTJmZDZiMDNiNWM0YWVkMjQ1MTA2ODlkY2UzYjU1M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDk6NDg6MTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYyBiL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXG5pbmRleCAyNDIxM2EwZWE4MzE3Li5iMTUyMWExZGExMzJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmNcbisrKyBiL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXG5AQCAtNzcxLDYgKzc3MSw4IEBAIF9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmUoc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcbiBcdGlmIChyZXQgXHUwMDNlIDApIHtcbiBcdFx0cmV0ID0gZndfc3RhdGVfd2FpdChmd19wcml2KTtcbiBcdFx0aWYgKCFyZXQpIHtcbitcdFx0XHRpZiAoIWZ3X3ByaXYtXHUwMDNlc2l6ZSlcbitcdFx0XHRcdHJldHVybiAtRU5PRU5UO1xuIFx0XHRcdGZ3X3NldF9wYWdlX2RhdGEoZndfcHJpdiwgZmlybXdhcmUpO1xuIFx0XHRcdHJldHVybiAwOyAvKiBhc3NpZ25lZCAqL1xuIFx0XHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0ODoxNS4xMzUxMzE5ODFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzAyMDQzNDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZpcm13YXJlIExvYWRlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlYCBmdW5jdGlvbiB3aXRoaW4gYGRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jYC4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkaXJlY3RseSBpbXBhY3RpbmcgaG93IGZpcm13YXJlIGxvYWRpbmcgaXMgaGFuZGxlZCwgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nLiBUaGUgY2hhbmdlIGludHJvZHVjZXMgYSBjcnVjaWFsIGNoZWNrICphZnRlciogdGhlIGBmd19zdGF0ZV93YWl0YCBjYWxsLiAgRXNzZW50aWFsbHksIGl0J3MgdmVyaWZ5aW5nIHRoYXQgdGhlIGBmd19wcml2LVx1MDAzZXNpemVgIG1lbWJlciBpcyBub24temVybyBiZWZvcmUgcHJvY2VlZGluZy4gSWYgYGZ3X3ByaXYtXHUwMDNlc2l6ZWAgKmlzKiB6ZXJvLCBtZWFuaW5nIHRoZSBmaXJtd2FyZSBpcyBlc3NlbnRpYWxseSBlbXB0eSAob3Igbm90IGZvdW5kKSwgdGhlIGNvZGUgbm93IHJldHVybnMgYC1FTk9FTlRgLiBUaGVuIGBmd19zZXRfcGFnZV9kYXRhYCB3aWxsIG5vdCBydW4gYW5kIHdlIHJldHVybi4gVGhpcyBpbmRpY2F0ZXMgYSBwb3RlbnRpYWwgcHJvYmxlbSB3aXRoIHRoZSBmaXJtd2FyZSBpdHNlbGYsIG9yIHRoZSBsb2FkaW5nIHByb2Nlc3MgZmFpbGVkIHRvIHJldHJpZXZlIGl0cyBzaXplLCB3aGljaCBtYWtlcyBzZW5zZSB0byBhZGRyZXNzLiBSZXR1cm5pbmcgYC1FTk9FTlRgIGlzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGhlcmUsIHNpZ25hbGluZyBhIFwiTm8gc3VjaCBlbnRyeVwiIGVycm9yLCBhcyBleHBlY3RlZCBieSB0aGUgY2FsbGVyIG9mIGBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlYC4gVGhpcyBpcyBhIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBtZWFzdXJlLiBJdCBzaG91bGQgaGVscCBwcmV2ZW50IHBvdGVudGlhbCBpc3N1ZXMgZG93biB0aGUgbGluZSBpZiBhbiBlbXB0eSBvciBpbXByb3Blcmx5IHNpemVkIGZpcm13YXJlIGlzIHNvbWVob3cgcHJvY2Vzc2VkLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb250ZXh0cyB3aGVyZSB0aGlzIGBmd19wcml2YCBzdHJ1Y3R1cmUgaXMgcG9wdWxhdGVkIGFuZCBob3cgdGhlIGBzaXplYCBmaWVsZCBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIHRvIGVuc3VyZSB0aGlzIGNoZWNrIGRvZXMgd2hhdCBpdCBpcyBzdXBwb3NlZCB0by4gQWxzbyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgbWFpbi5jYCB0byBzZWUgdGhlIGludGVuZGVkIGJlaGF2aW9yIGluIGNhc2Ugb2YgdGhlIGVycm9yIGNvZGUgdGhhdCBpcyByZXR1cm5lZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQ4OjE5LjgzNzE4MDA1MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTkyNTY2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTc0MT1zdGF0aWMgaW50XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6NzQyOl9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmUoc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy03NDMtXFx0XFx0XFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIHZvaWQgKmRidWYsIHNpemVfdCBzaXplLFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9ODI5PV9yZXF1ZXN0X2Zpcm13YXJlKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsIGNvbnN0IGNoYXIgKm5hbWUsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy04NjMtXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6ODY0OlxcdHJldCA9IF9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmUoXFx1MDAyNmZ3LCBuYW1lLCBkZXZpY2UsIGJ1Ziwgc2l6ZSxcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy04NjUtXFx0XFx0XFx0XFx0XFx0b2Zmc2V0LCBvcHRfZmxhZ3MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0ODoxOS45MTMxMTAyMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTExNzYwNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OlxuXG4qKkRpdmluZyBpbnRvIEZpcm13YXJlIFJlcXVlc3RzKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZWAgZnVuY3Rpb24sIGFuZCBpdCdzIGZsYWdnZWQgYXMgYSBzdGF0aWMgaGVscGVyLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0J3MgZGVzaWduZWQgdG8gYmUgdXNlZCAqb25seSogd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgdW5pdCDigJMgaW4gdGhpcyBjYXNlLCBgX3JlcXVlc3RfZmlybXdhcmVgLiBJdCdzIHByZXR0eSBjbGVhciB0aGF0IGl0J3MgbWVhbnQgdG8gZG8gc29tZSBwcmVwYXJhdG9yeSB3b3JrLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0J3MgdHJpZ2dlcmluZyBgX3JlcXVlc3RfZmlybXdhcmVgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnRzIGZvciB0aGlzIHdob2xlIHByb2Nlc3MuIFdoZXJlIGFyZSAqdGhvc2UqIGNhbGxzIGNvbWluZyBmcm9tPyBUaW1lIHRvIHRyYWNlIGJhY2sgYW5kIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgZ3JhcGggaGVyZSBpcyBjcnVjaWFsIGZvciBjb21wcmVoZW5kaW5nIHRoZSBjb21wbGV0ZSBzeXN0ZW0gaW50ZXJhY3Rpb24uIEknbSBnb2luZyB0byBmb2xsb3cgdGhlIGNhbGwgc3RhY2sgdG8gc2VlIHRoZSBjb250ZXh0IHdpdGhpbiB3aGljaCB0aGlzIGZpcm13YXJlIHJlcXVlc3QgaXMgZXZlbiBpbml0aWF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MDQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0ODoyMy41MDQyODg2OTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MDU3OTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9yZXF1ZXN0X2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTc0MT1zdGF0aWMgaW50XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6NzQyOl9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmUoc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy03NDMtXFx0XFx0XFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIHZvaWQgKmRidWYsIHNpemVfdCBzaXplLFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9ODI4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzo4Mjk6X3JlcXVlc3RfZmlybXdhcmUoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy04MzAtXFx0XFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy04NjMtXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6ODY0OlxcdHJldCA9IF9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmUoXFx1MDAyNmZ3LCBuYW1lLCBkZXZpY2UsIGJ1Ziwgc2l6ZSxcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy04NjUtXFx0XFx0XFx0XFx0XFx0b2Zmc2V0LCBvcHRfZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9OTQzPXJlcXVlc3RfZmlybXdhcmUoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTk0OS1cXHRfX21vZHVsZV9nZXQoVEhJU19NT0RVTEUpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjk1MDpcXHRyZXQgPSBfcmVxdWVzdF9maXJtd2FyZShmaXJtd2FyZV9wLCBuYW1lLCBkZXZpY2UsIE5VTEwsIDAsIDAsXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTUxLVxcdFxcdFxcdFxcdEZXX09QVF9VRVZFTlQpO1xcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9OTcwPWludCBmaXJtd2FyZV9yZXF1ZXN0X25vd2Fybihjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZSwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTk3Ni1cXHRfX21vZHVsZV9nZXQoVEhJU19NT0RVTEUpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjk3NzpcXHRyZXQgPSBfcmVxdWVzdF9maXJtd2FyZShmaXJtd2FyZSwgbmFtZSwgZGV2aWNlLCBOVUxMLCAwLCAwLFxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTk3OC1cXHRcXHRcXHRcXHRGV19PUFRfVUVWRU5UIHwgRldfT1BUX05PX1dBUk4pO1xcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9OTk1PWludCByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdChjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTAwMC1cXHRfX21vZHVsZV9nZXQoVEhJU19NT0RVTEUpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEwMDE6XFx0cmV0ID0gX3JlcXVlc3RfZmlybXdhcmUoZmlybXdhcmVfcCwgbmFtZSwgZGV2aWNlLCBOVUxMLCAwLCAwLFxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwMDItXFx0XFx0XFx0XFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9OT19XQVJOIHxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEwMTk9aW50IGZpcm13YXJlX3JlcXVlc3RfcGxhdGZvcm0oY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmUsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDI1LVxcdF9fbW9kdWxlX2dldChUSElTX01PRFVMRSk7XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTAyNjpcXHRyZXQgPSBfcmVxdWVzdF9maXJtd2FyZShmaXJtd2FyZSwgbmFtZSwgZGV2aWNlLCBOVUxMLCAwLCAwLFxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwMjctXFx0XFx0XFx0XFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9GQUxMQkFDS19QTEFURk9STSk7XFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMDczPXJlcXVlc3RfZmlybXdhcmVfaW50b19idWYoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwODEtXFx0X19tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKTtcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMDgyOlxcdHJldCA9IF9yZXF1ZXN0X2Zpcm13YXJlKGZpcm13YXJlX3AsIG5hbWUsIGRldmljZSwgYnVmLCBzaXplLCAwLFxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwODMtXFx0XFx0XFx0XFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9OT0NBQ0hFKTtcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTExMDI9cmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMTExLVxcdF9fbW9kdWxlX2dldChUSElTX01PRFVMRSk7XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTExMjpcXHRyZXQgPSBfcmVxdWVzdF9maXJtd2FyZShmaXJtd2FyZV9wLCBuYW1lLCBkZXZpY2UsIGJ1Ziwgc2l6ZSwgb2Zmc2V0LFxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExMTMtXFx0XFx0XFx0XFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9OT0NBQ0hFIHxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTExNTc9c3RhdGljIHZvaWQgcmVxdWVzdF9maXJtd2FyZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTE2My1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMTY0OlxcdF9yZXF1ZXN0X2Zpcm13YXJlKFxcdTAwMjZmdywgZndfd29yay1cXHUwMDNlbmFtZSwgZndfd29yay1cXHUwMDNlZGV2aWNlLCBOVUxMLCAwLCAwLFxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExNjUtXFx0XFx0XFx0ICBmd193b3JrLVxcdTAwM2VvcHRfZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTE3OC1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMTc5OnN0YXRpYyBpbnQgX3JlcXVlc3RfZmlybXdhcmVfbm93YWl0KFxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExODAtXFx0c3RydWN0IG1vZHVsZSAqbW9kdWxlLCBib29sIHVldmVudCxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEyNTA9aW50IHJlcXVlc3RfZmlybXdhcmVfbm93YWl0KFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTI1NC17XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTI1NTpcXHRyZXR1cm4gX3JlcXVlc3RfZmlybXdhcmVfbm93YWl0KG1vZHVsZSwgdWV2ZW50LCBuYW1lLCBkZXZpY2UsIGdmcCxcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMjU2LVxcdFxcdFxcdFxcdFxcdGNvbnRleHQsIGNvbnQsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEyNzY9aW50IGZpcm13YXJlX3JlcXVlc3Rfbm93YWl0X25vd2FybihcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEyODAte1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEyODE6XFx0cmV0dXJuIF9yZXF1ZXN0X2Zpcm13YXJlX25vd2FpdChtb2R1bGUsIEZXX0FDVElPTl9VRVZFTlQsIG5hbWUsIGRldmljZSxcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMjgyLVxcdFxcdFxcdFxcdFxcdGdmcCwgY29udGV4dCwgY29udCwgdHJ1ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQ4OjIzLjYxMDM1MTQ1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MzU2MjE3NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRmlybXdhcmUgTG9hZGVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYF9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmVgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBmZWVkcyBpbnRvIGBfcmVxdWVzdF9maXJtd2FyZWAsIHdoaWNoIGlzICp0aGUqIGNvcmUgb2YgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gSSBzZWUgdGhlIG1vZGlmaWNhdGlvbjogdGhlIGNvZGUgaXMgY2hlY2tpbmcgYGZ3X3ByaXYtXHUwMDNlc2l6ZWAgKmFmdGVyKiBgZndfc3RhdGVfd2FpdGAgcmV0dXJucyBzdWNjZXNzZnVsbHkuIFRoZSBrZXkgaXMgdGhhdCBpZiBgZndfc3RhdGVfd2FpdGAgcmV0dXJucyBzdWNjZXNzICgwKSBidXQgdGhlIGZpcm13YXJlIHNpemUsIGBmd19wcml2LVx1MDAzZXNpemVgLCBpcyB6ZXJvLCBpdCdzIHJldHVybmluZyBgLUVOT0VOVGAuIFRoYXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlOyBpdCBhbHRlcnMgdGhlIGJlaGF2aW9yIG9mIHRoZSBjb3JlIGZpcm13YXJlIGxvYWRpbmcgbG9naWMuIFRoaXMgaXMgcG90ZW50aWFsbHkgaW1wb3J0YW50LlxuXG5MZXQncyB0aGluayBhYm91dCB0aGUgaW1wbGljYXRpb25zLiBUaGlzIGZpcm13YXJlIGxvYWRlciBpcyBmdW5kYW1lbnRhbCwgcmlnaHQ/IEl0J3MgdG91Y2hlZCBieSBhIHNsZXcgb2YgZHJpdmVycyBhbmQgc3Vic3lzdGVtcywgc28gdGhlIGZ1bmN0aW9ucyB0byBjb25zaWRlciB3b3VsZCBiZTogYHJlcXVlc3RfZmlybXdhcmVgLCBgcmVxdWVzdF9maXJtd2FyZV9ub3dhaXRgLCBgcmVxdWVzdF9maXJtd2FyZV9kaXJlY3RgLCBgZmlybXdhcmVfcmVxdWVzdF9ub3dhcm5gLCBgZmlybXdhcmVfcmVxdWVzdF9wbGF0Zm9ybWAsIGByZXF1ZXN0X2Zpcm13YXJlX2ludG9fYnVmYCwgYW5kIGByZXF1ZXN0X3BhcnRpYWxfZmlybXdhcmVfaW50b19idWZgLiBXYWl0LCBgcmVxdWVzdF9maXJtd2FyZWAgaXMgKnN1cGVyKiBjb21tb24uIFRoYXQncyBhIGxvdCBvZiBwb3RlbnRpYWwgaW1wYWN0LlxuXG5SaWdodCwgc28gdG8gdW5kZXJzdGFuZCB0aGUgcmVhY2ggb2YgdGhpcyBwYXRjaCwgSSBzaG91bGQgY2hlY2sgd2hldGhlciB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IGFmZmVjdCB0aGlzIGJlaGF2aW9yLiBMZXQncyBzZWUuLi4gYWgsIHRoZSBmaXJtd2FyZSBsb2FkZXIgaXMgZW5hYmxlZCBieSBgQ09ORklHX0ZXX0xPQURFUmAuIFRoYXQncyB0aGUgYmFzZWxpbmUsIGJ1dCBhcmUgdGhlcmUgb3RoZXIgb3B0aW9ucyB0aGF0IG1pZ2h0IGludGVyYWN0PyBJIG5lZWQgdG8gbG9vayBpbnRvIHdoZXRoZXIgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIGludm9sdmVkIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2OTQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6NDg6MjkuMjQ1OTc2NDIyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1Mzc5NzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZXX0xPQURFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnPTI9bWVudSBcXFwiRmlybXdhcmUgbG9hZGVyXFxcIlxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0zLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzo0OmNvbmZpZyBGV19MT0FERVJcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiRmlybXdhcmUgbG9hZGluZyBmYWNpbGl0eVxcXCIgaWYgRVhQRVJUXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjY6XFx0c2VsZWN0IENSWVBUT19MSUJfU0hBMjU2IGlmIEZXX0xPQURFUl9ERUJVR1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy03LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTI3LVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoyODpjb25maWcgRldfTE9BREVSX0RFQlVHXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTI5LVxcdGJvb2wgXFxcIkxvZyBmaWxlbmFtZXMgYW5kIGNoZWNrc3VtcyBmb3IgbG9hZGVkIGZpcm13YXJlXFxcIlxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0zMC1cXHRkZXBlbmRzIG9uIERZTkFNSUNfREVCVUdcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MzE6XFx0ZGVwZW5kcyBvbiBGV19MT0FERVJcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MzI6XFx0ZGVmYXVsdCBGV19MT0FERVJcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMzMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTM3LVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzozODpjb25maWcgUlVTVF9GV19MT0FERVJfQUJTVFJBQ1RJT05TXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTM5LVxcdGJvb2wgXFxcIlJ1c3QgRmlybXdhcmUgTG9hZGVyIGFic3RyYWN0aW9uc1xcXCJcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNDAtXFx0ZGVwZW5kcyBvbiBSVVNUXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjQxOlxcdHNlbGVjdCBGV19MT0FERVJcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNDItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTQ0LVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzo0NTppZiBGV19MT0FERVJcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNDYtXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjQ3OmNvbmZpZyBGV19MT0FERVJfUEFHRURfQlVGXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTQ4LVxcdGJvb2xcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNDktXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjUwOmNvbmZpZyBGV19MT0FERVJfU1lTRlNcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNTEtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnPTUzPWNvbmZpZyBFWFRSQV9GSVJNV0FSRVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTYwLVxcdCAgb3ZlciBmaXJtd2FyZSBsb29rdXBzIHVzaW5nIHlvdXIgZmlsZXN5c3RlbSBvdmVyIHRoZSBzdXBwb3J0ZWRcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6NjE6XFx0ICAvbGliL2Zpcm13YXJlIHBhdGhzIGRvY3VtZW50ZWQgb24gQ09ORklHX0ZXX0xPQURFUi5cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNjItXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc9ODY9Y29uZmlnIEVYVFJBX0ZJUk1XQVJFX0RJUlxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTkzLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzo5NDpjb25maWcgRldfTE9BREVSX1VTRVJfSEVMUEVSXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTk1LVxcdGJvb2wgXFxcIkVuYWJsZSB0aGUgZmlybXdhcmUgc3lzZnMgZmFsbGJhY2sgbWVjaGFuaXNtXFxcIlxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzo5NjpcXHRzZWxlY3QgRldfTE9BREVSX1NZU0ZTXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjk3OlxcdHNlbGVjdCBGV19MT0FERVJfUEFHRURfQlVGXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTk4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0xNjYtXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjE2Nzpjb25maWcgRldfTE9BREVSX1VTRVJfSEVMUEVSX0ZBTExCQUNLXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE2OC1cXHRib29sIFxcXCJGb3JjZSB0aGUgZmlybXdhcmUgc3lzZnMgZmFsbGJhY2sgbWVjaGFuaXNtIHdoZW4gcG9zc2libGVcXFwiXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjE2OTpcXHRkZXBlbmRzIG9uIEZXX0xPQURFUl9VU0VSX0hFTFBFUlxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0xNzAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE4MS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MTgyOmNvbmZpZyBGV19MT0FERVJfQ09NUFJFU1NcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMTgzLVxcdGJvb2wgXFxcIkVuYWJsZSBjb21wcmVzc2VkIGZpcm13YXJlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMTkyLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoxOTM6aWYgRldfTE9BREVSX0NPTVBSRVNTXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjE5NDpjb25maWcgRldfTE9BREVSX0NPTVBSRVNTX1haXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE5NS1cXHRib29sIFxcXCJFbmFibGUgWFotY29tcHJlc3NlZCBmaXJtd2FyZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoxOTY6XFx0c2VsZWN0IEZXX0xPQURFUl9QQUdFRF9CVUZcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMTk3LVxcdHNlbGVjdCBYWl9ERUNcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yMDMtXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjIwNDpjb25maWcgRldfTE9BREVSX0NPTVBSRVNTX1pTVERcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjA1LVxcdGJvb2wgXFxcIkVuYWJsZSBaU1RELWNvbXByZXNzZWQgZmlybXdhcmUgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yMDktXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjIxMDplbmRpZiAjIEZXX0xPQURFUl9DT01QUkVTU1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yMTEtXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc9MjI0PWNvbmZpZyBGV19VUExPQURcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjI1LVxcdGJvb2wgXFxcIkVuYWJsZSB1c2VycyB0byBpbml0aWF0ZSBmaXJtd2FyZSB1cGRhdGVzIHVzaW5nIHN5c2ZzXFxcIlxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoyMjY6XFx0c2VsZWN0IEZXX0xPQURFUl9TWVNGU1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoyMjc6XFx0c2VsZWN0IEZXX0xPQURFUl9QQUdFRF9CVUZcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjI4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yMzctXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjIzODplbmRpZiAjIEZXX0xPQURFUlxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yMzktZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0ODoyOS4zMTEzNjAyODZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDA4MzI5MDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZpcm13YXJlIExvYWRpbmcgRWRnZSBDYXNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MsIGFuZCBteSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBGV19MT0FERVJgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIOKAkyBpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdCwgd2hpY2ggaXMgZ29vZC4gVGhhdCBzZXRzIHRoZSBzdGFnZS4gQnV0IG5vdyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIGZhaWx1cmVzLCBwYXJ0aWN1bGFybHkgd2l0aGluIGBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlYC4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBJJ20gc2VlaW5nIGEgc2NlbmFyaW8gd2hlcmUgYGZ3X3N0YXRlX3dhaXRgIHJldHVybnMgYSBzdWNjZXNzIGNvZGUgKDApLCAqYnV0KiB0aGUgZmlybXdhcmUgc2l6ZSAoYGZ3X3ByaXYtXHUwMDNlc2l6ZWApIGVuZHMgdXAgYmVpbmcgemVyby4gQWxhcm0gYmVsbHMhXG5cblRoaXMgbGlrZWx5IGluZGljYXRlcyBzb21ldGhpbmcgd2VudCB3cm9uZywgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aHkqLiBNeSBicmFpbiBpcyBpbW1lZGlhdGVseSBqdW1waW5nIHRvIGEgY291cGxlIG9mIHBvc3NpYmlsaXRpZXM6IHBlcmhhcHMgYSBjb25jdXJyZW50IGZpcm13YXJlIGxvYWQgY29tcGxldGVkLCBidXQgZmFpbGVkIHNvbWVob3csIGxlYXZpbmcgdXMgd2l0aCBub3RoaW5nLiBPciwgbWF5YmUgdGhlIHVzZXIgaGVscGVyIGZhbGxiYWNrIG1lY2hhbmlzbSB3YXMgdHJpZ2dlcmVkLCBhbmQgZm9yIHNvbWUgcmVhc29uLCBpdCBhbHNvIHByb3ZpZGVkIGFuIGVtcHR5IGZpcm13YXJlLlxuXG5Tbywgd2hlcmUgZG8gSSBnbyBuZXh0PyBSaWdodCwgdGltZSB0byBkaWcgZGVlcGVyIGludG8gdGhhdCBgZndfc3RhdGVfd2FpdGAgZnVuY3Rpb24gaXRzZWxmLiBVbmRlcnN0YW5kaW5nIGhvdyBpdCBjYW4gcmV0dXJuIHN1Y2Nlc3MgKmRlc3BpdGUqIGEgemVyby1zaXplZCBmaXJtd2FyZSBpcyBjcnVjaWFsIGhlcmUgdG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgcm9vdCBjYXVzZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIGZsb3cgd2l0aGluIHRoYXQgZnVuY3Rpb24gYW5kIHRoZSBjb25kaXRpb25zIGl0J3MgY2hlY2tpbmcgdG8gZnVsbHkgZGlhZ25vc2UgdGhpcyBzaXR1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MDIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6NDg6MzUuMzE5Njk1NzQyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjU0MTU2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmd19zdGF0ZV93YWl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvZmFsbGJhY2suYz00Mj1zdGF0aWMgaW5saW5lIGludCBmd19zeXNmc193YWl0X3RpbWVvdXQoc3RydWN0IGZ3X3ByaXYgKmZ3X3ByaXYsICBsb25nIHRpbWVvdXQpXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9mYWxsYmFjay5jLTQzLXtcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL2ZhbGxiYWNrLmM6NDQ6XFx0cmV0dXJuIF9fZndfc3RhdGVfd2FpdF9jb21tb24oZndfcHJpdiwgdGltZW91dCk7XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9mYWxsYmFjay5jLTQ1LX1cXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvZmlybXdhcmUuaD05MT1zdGF0aWMgaW5saW5lIGJvb2wgX19md19zdGF0ZV9jaGVjayhzdHJ1Y3QgZndfcHJpdiAqZndfcHJpdixcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvZmlybXdhcmUuaC05OC1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL2Zpcm13YXJlLmg6OTk6c3RhdGljIGlubGluZSBpbnQgX19md19zdGF0ZV93YWl0X2NvbW1vbihzdHJ1Y3QgZndfcHJpdiAqZndfcHJpdiwgbG9uZyB0aW1lb3V0KVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvZmlybXdhcmUuaC0xMDAte1xcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9OTg9dm9pZCBmd19zdGF0ZV9pbml0KHN0cnVjdCBmd19wcml2ICpmd19wcml2KVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTA1LVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEwNjpzdGF0aWMgaW5saW5lIGludCBmd19zdGF0ZV93YWl0KHN0cnVjdCBmd19wcml2ICpmd19wcml2KVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwNy17XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTA4OlxcdHJldHVybiBfX2Z3X3N0YXRlX3dhaXRfY29tbW9uKGZ3X3ByaXYsIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTtcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDktfVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9NzQyPV9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmUoc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTc3MS1cXHRpZiAocmV0IFxcdTAwM2UgMCkge1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjc3MjpcXHRcXHRyZXQgPSBmd19zdGF0ZV93YWl0KGZ3X3ByaXYpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTc3My1cXHRcXHRpZiAoIXJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0ODozNS40MDYyNDUyMjRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMxOTM2NzgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGaXJtd2FyZSBMb2FkZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZWAuIEl0J3MgYSBwcmV0dHkgY2VudHJhbCBmdW5jdGlvbiwgcmVhY2hhYmxlIHRocm91Z2ggdGhlIGNvbW1vbiBgcmVxdWVzdF9maXJtd2FyZWAgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLCB3aGljaCBhcmUgYWxsIG92ZXIgdGhlIHBsYWNlIGluIGRyaXZlciBjb2RlLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIHNpbXBsZSBlbm91Z2g6IGl0J3MgYWRkaW5nIGEgY2hlY2sgZm9yIGAhZndfcHJpdi1cdTAwM2VzaXplYCBhbmQgcmV0dXJuaW5nIGAtRU5PRU5UYCBpZiB0aGUgZmlybXdhcmUgc2l6ZSBpcyB6ZXJvLiBCYXNpY2FsbHksIHRoaXMgcHJldmVudHMgdXMgZnJvbSBhY2NpZGVudGFsbHkgdXNpbmcgb3IgZ2V0dGluZyBhIGZpcm13YXJlIG9iamVjdCB0aGF0IGhhcyBhIHplcm8gc2l6ZSwgZXZlbiBpZiBgZndfc3RhdGVfd2FpdGAgc3VjY2VlZHMuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZW5lZml0IGZyb20gZnV6emluZy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0cyBvbiB0aG9zZSBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBkaXJlY3RseSBjYWxsIGBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlYCBvciBgX3JlcXVlc3RfZmlybXdhcmVgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cy4gVGltZSB0byBkaWcgaW50byBgZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmNgIGFuZCBnZXQgYSBsaXN0IG9mIHRob3NlIGNyaXRpY2FsIHN5bWJvbHMuIFRoYXQnbGwgYmUgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXZlbG9waW5nIHNvbWUgdGFyZ2V0ZWQgZnV6eiBoYXJuZXNzZXMuIFRoaXMgd2lsbCBnaXZlIHVzIGEgZ29vZCB0ZXN0IHRvIHNlZSBpZiB0aGUgcGF0Y2ggbWFrZXMgYSBkaWZmZXJlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODQ0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQ4OjQwLjcyNTYxNTg0NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE2NjQ1NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz05NDM9cmVxdWVzdF9maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTU0LX1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzo5NTU6RVhQT1JUX1NZTUJPTChyZXF1ZXN0X2Zpcm13YXJlKTtcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy05NTYtXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz05NzA9aW50IGZpcm13YXJlX3JlcXVlc3Rfbm93YXJuKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlLCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTgxLX1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzo5ODI6RVhQT1JUX1NZTUJPTF9HUEwoZmlybXdhcmVfcmVxdWVzdF9ub3dhcm4pO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTk4My1cXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTk5NT1pbnQgcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwMDYtfVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEwMDc6RVhQT1JUX1NZTUJPTF9HUEwocmVxdWVzdF9maXJtd2FyZV9kaXJlY3QpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwMDgtXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMDE5PWludCBmaXJtd2FyZV9yZXF1ZXN0X3BsYXRmb3JtKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlLFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTAzMC19XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTAzMTpFWFBPUlRfU1lNQk9MX0dQTChmaXJtd2FyZV9yZXF1ZXN0X3BsYXRmb3JtKTtcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDMyLVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9MTA0NT1pbnQgZmlybXdhcmVfcmVxdWVzdF9jYWNoZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDU0LX1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMDU1OkVYUE9SVF9TWU1CT0xfR1BMKGZpcm13YXJlX3JlcXVlc3RfY2FjaGUpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwNTYtXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMDczPXJlcXVlc3RfZmlybXdhcmVfaW50b19idWYoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwODYtfVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEwODc6RVhQT1JUX1NZTUJPTChyZXF1ZXN0X2Zpcm13YXJlX2ludG9fYnVmKTtcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDg4LVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9MTEwMj1yZXF1ZXN0X3BhcnRpYWxfZmlybXdhcmVfaW50b19idWYoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExMTctfVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjExMTg6RVhQT1JUX1NZTUJPTChyZXF1ZXN0X3BhcnRpYWxfZmlybXdhcmVfaW50b19idWYpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExMTktXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMTI0PXZvaWQgcmVsZWFzZV9maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTEzMS19XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTEzMjpFWFBPUlRfU1lNQk9MKHJlbGVhc2VfZmlybXdhcmUpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExMzMtXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMjUwPWludCByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdChcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEyNTgtfVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEyNTk6RVhQT1JUX1NZTUJPTChyZXF1ZXN0X2Zpcm13YXJlX25vd2FpdCk7XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTI2MC1cXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEyNzY9aW50IGZpcm13YXJlX3JlcXVlc3Rfbm93YWl0X25vd2FybihcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEyODMtfVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEyODQ6RVhQT1JUX1NZTUJPTF9HUEwoZmlybXdhcmVfcmVxdWVzdF9ub3dhaXRfbm93YXJuKTtcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMjg1LVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9MTI5OT12b2lkIHJlcXVlc3RfZmlybXdhcmVfbm93YWl0X2NhbmNlbChzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIHZvaWQgKmNvbnRleHQsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMzIxLX1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMzIyOkVYUE9SVF9TWU1CT0xfR1BMKHJlcXVlc3RfZmlybXdhcmVfbm93YWl0X2NhbmNlbCk7XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTMyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6NDg6NDAuNzk3Mjg0NzE4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzMDU2MzU2ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZpcm13YXJlIExvYWRpbmcgZm9yIFZ1bG5lcmFiaWxpdHkgUmVzZWFyY2gqKlxuXG5Pa2F5LCBteSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSBmaXJtd2FyZSByZXF1ZXN0IHN5bWJvbHM6IGByZXF1ZXN0X2Zpcm13YXJlYCwgYHJlcXVlc3RfZmlybXdhcmVfbm93YWl0YCwgYHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0YCwgYGZpcm13YXJlX3JlcXVlc3Rfbm93YXJuYCwgYHJlcXVlc3RfZmlybXdhcmVfaW50b19idWZgLCBhbmQgYHJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1ZmAuIEkga25vdyB0aGF0IGByZXF1ZXN0X2Zpcm13YXJlYCBpbiBwYXJ0aWN1bGFyIGlzIGEgaGlnaC10cmFmZmljIGFyZWEsIGVzcGVjaWFsbHkgZHVyaW5nIHN5c3RlbSBib290LCBhbmQgdGhhdCBtYWtlcyBpdCBhIHByaW1lIHRhcmdldC4gVGhlIGJlYXV0eSBpcywgc3l6a2FsbGVyIGNhbiBwcm9iZSBpdCB0aHJvdWdoIHZhcmlvdXMgcm91dGVzIGxpa2UgcHNldWRvLWRldmljZXMgb3Igc3lzZnMsIGFuZCB0aGF0J3MgZXhhY3RseSB3aGF0IEknbSBpbnRlcmVzdGVkIGluIGV4cGxvaXRpbmcgZm9yIGZ1enppbmcgcHVycG9zZXMuXG5cbldhaXQgYSBzZWNvbmTigKYgdGhlIGZpcm13YXJlIGxvYWRlciAqaXRzZWxmKiBoYXMgYSBzeXNmcyBpbnRlcmZhY2UgZm9yIGxvYWRpbmcgZmlybXdhcmUuIEJpbmdvISBUaGF0J3MgYSBkaXJlY3QgZW50cnkgcG9pbnQuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgY29uZmlndXJhdGlvbiBhcm91bmQgdGhhdCBpbnRlcmZhY2UuIExldCdzIHNlZS4uLiBgRldfTE9BREVSX1NZU0ZTYOKApiBhaGEsIGl0J3Mgc2VsZWN0ZWQgYnkgYEZXX0xPQURFUl9VU0VSX0hFTFBFUmAgKmFuZCogYEZXX1VQTE9BRGAuIE5vdywgd2hhdCBkb2VzIGBGV19MT0FERVJfVVNFUl9IRUxQRVJgIGRvIHNwZWNpZmljYWxseT8gVGhhdCdzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NjgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6NDg6NDkuMTAyOTI3OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE2NzA5NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRldfTE9BREVSX1VTRVJfSEVMUEVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc9ODY9Y29uZmlnIEVYVFJBX0ZJUk1XQVJFX0RJUlxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTkzLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzo5NDpjb25maWcgRldfTE9BREVSX1VTRVJfSEVMUEVSXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTk1LVxcdGJvb2wgXFxcIkVuYWJsZSB0aGUgZmlybXdhcmUgc3lzZnMgZmFsbGJhY2sgbWVjaGFuaXNtXFxcIlxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE2Ni1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MTY3OmNvbmZpZyBGV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0tcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMTY4LVxcdGJvb2wgXFxcIkZvcmNlIHRoZSBmaXJtd2FyZSBzeXNmcyBmYWxsYmFjayBtZWNoYW5pc20gd2hlbiBwb3NzaWJsZVxcXCJcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MTY5OlxcdGRlcGVuZHMgb24gRldfTE9BREVSX1VTRVJfSEVMUEVSXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE3MC1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQ4OjQ5LjE5NDYwNjA1MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTAzMjY2OTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZpcm13YXJlIExvYWRpbmcgT3B0aW1pemF0aW9uKipcblxuT2theSwgaGVyZSdzIHRoZSBkZWFsLiBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHdoZXJlIGBmd19zdGF0ZV93YWl0YCBtaWdodCByZXR1cm4gMCB3aXRoIGFuIGVtcHR5IHNpemUgaWYgdGhlIHVzZXIgaGVscGVyIHdyaXRlcyB6ZXJvIGJ5dGVzLiBUaGF0J3MgYSBjbGFzc2ljIGBzeXNmc2AgZmFsbGJhY2sgc2NlbmFyaW8sIGFuZCB0aGUga2V5IGhlcmUgaXMgYEZXX0xPQURFUl9VU0VSX0hFTFBFUmAuIEVuYWJsaW5nIHRoYXQsIGFuZCBhbHNvIGl0cyBmYWxsYmFjayBjb3VudGVycGFydCwgYEZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS2AsIHNlZW1zIGxpa2UgdGhlIHJpZ2h0IG1vdmUgdG8gY292ZXIgYWxsIGJhc2VzIGFuZCBoYW5kbGUgdGhvc2UgZWRnZSBjYXNlcyBncmFjZWZ1bGx5LlxuXG5Ob3csIGEgcXVpY2sgc2FuaXR5IGNoZWNrOiBkbyB3ZSAqcmVhbGx5KiBuZWVkIGBGV19MT0FERVJgIGl0c2VsZj8gSG1tLCBpdCdzIHNldCB0byBcInlcIiBieSBkZWZhdWx0LCBzbyBwcmVzdW1hYmx5LCB3ZSBkby4gRXhjZWxsZW50LiBUaGlzIG1lYW5zIGVuYWJsaW5nIGBGV19MT0FERVJfVVNFUl9IRUxQRVJgIGFuZCBgRldfTE9BREVSX1VTRVJfSEVMUEVSX0ZBTExCQUNLYCBpcyBhIHNvdW5kIGNvbmZpZ3VyYXRpb24gZm9yIGNvbXByZWhlbnNpdmUgY292ZXJhZ2UsIGVzcGVjaWFsbHkgZm9yIHRob3NlIHVzZXItc3BhY2UgaW50ZXJhY3Rpb25zLlxuXG5UbyBtYWtlIGFic29sdXRlbHkgc3VyZSwgSSdtIGdvaW5nIHRvIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBjb2RlIHdpdGhpbiBgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZWAuIEp1c3QgdG8gcmVjb25maXJtIHRoaXMgYXBwcm9hY2ggYWxpZ25zIHdpdGggdGhlIGV4aXN0aW5nIGxvZ2ljIHRoZXJlLCBhbmQgdGhhdCBJJ20gbm90IG92ZXJsb29raW5nIGFueXRoaW5nIGNyaXRpY2FsLiBBbHdheXMgZ29vZCB0byBkb3VibGUtY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTczLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQ4OjU2LjI5Nzg3NTU3NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzUwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzUwOlxcdFxcdCpmaXJtd2FyZV9wID0gZmlybXdhcmUgPSBremFsbG9jX29iaigqZmlybXdhcmUpO1xcbiA3NTE6XFx0XFx0aWYgKCFmaXJtd2FyZSkge1xcbiA3NTI6XFx0XFx0XFx0ZGV2X2VycihkZXZpY2UsIFxcXCIlczoga21hbGxvYyhzdHJ1Y3QgZmlybXdhcmUpIGZhaWxlZFxcXFxuXFxcIixcXG4gNzUzOlxcdFxcdFxcdFxcdF9fZnVuY19fKTtcXG4gNzU0OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA3NTU6XFx0XFx0fVxcbiA3NTY6XFx0XFxuIDc1NzpcXHRcXHRpZiAoZmlybXdhcmVfcmVxdWVzdF9idWlsdGluX2J1ZihmaXJtd2FyZSwgbmFtZSwgZGJ1Ziwgc2l6ZSkpIHtcXG4gNzU4OlxcdFxcdFxcdGRldl9kYmcoZGV2aWNlLCBcXFwidXNpbmcgYnVpbHQtaW4gJXNcXFxcblxcXCIsIG5hbWUpO1xcbiA3NTk6XFx0XFx0XFx0cmV0dXJuIDA7IC8qIGFzc2lnbmVkICovXFxuIDc2MDpcXHRcXHR9XFxuIDc2MTpcXHRcXG4gNzYyOlxcdFxcdHJldCA9IGFsbG9jX2xvb2t1cF9md19wcml2KG5hbWUsIFxcdTAwMjZmd19jYWNoZSwgXFx1MDAyNmZ3X3ByaXYsIGRidWYsIHNpemUsXFxuIDc2MzpcXHRcXHRcXHRcXHRcXHQgICBvZmZzZXQsIG9wdF9mbGFncyk7XFxuIDc2NDpcXHRcXG4gNzY1OlxcdFxcdC8qXFxuIDc2NjpcXHRcXHQgKiBiaW5kIHdpdGggJ3ByaXYnIG5vdyB0byBhdm9pZCB3YXJuaW5nIGluIGZhaWx1cmUgcGF0aFxcbiA3Njc6XFx0XFx0ICogb2YgcmVxdWVzdGluZyBmaXJtd2FyZS5cXG4gNzY4OlxcdFxcdCAqL1xcbiA3Njk6XFx0XFx0ZmlybXdhcmUtXFx1MDAzZXByaXYgPSBmd19wcml2O1xcbiA3NzA6XFx0XFxuIDc3MTpcXHRcXHRpZiAocmV0IFxcdTAwM2UgMCkge1xcbiA3NzI6XFx0XFx0XFx0cmV0ID0gZndfc3RhdGVfd2FpdChmd19wcml2KTtcXG4gNzczOlxcdFxcdFxcdGlmICghcmV0KSB7XFxuIDc3NDpcXHRcXHRcXHRcXHRpZiAoIWZ3X3ByaXYtXFx1MDAzZXNpemUpXFxuIDc3NTpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gNzc2OlxcdFxcdFxcdFxcdGZ3X3NldF9wYWdlX2RhdGEoZndfcHJpdiwgZmlybXdhcmUpO1xcbiA3Nzc6XFx0XFx0XFx0XFx0cmV0dXJuIDA7IC8qIGFzc2lnbmVkICovXFxuIDc3ODpcXHRcXHRcXHR9XFxuIDc3OTpcXHRcXHR9XFxuIDc4MDpcXHRcXG4gNzgxOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA3ODI6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNzgzOlxcdFxcdHJldHVybiAxOyAvKiBuZWVkIHRvIGxvYWQgKi9cXG4gNzg0OlxcdH1cXG4gNzg1OlxcdFxcbiA3ODY6XFx0LypcXG4gNzg3OlxcdCAqIEJhdGNoZWQgcmVxdWVzdHMgbmVlZCBvbmx5IG9uZSB3YWtlLCB3ZSBuZWVkIHRvIGRvIHRoaXMgc3RlcCBsYXN0IGR1ZSB0byB0aGVcXG4gNzg4OlxcdCAqIGZhbGxiYWNrIG1lY2hhbmlzbS4gVGhlIGJ1ZiBpcyBwcm90ZWN0ZWQgd2l0aCBrcmVmX2dldCgpLCBhbmQgaXQgd29uJ3QgYmVcXG4gNzg5OlxcdCAqIHJlbGVhc2VkIHVudGlsIHRoZSBsYXN0IHVzZXIgY2FsbHMgcmVsZWFzZV9maXJtd2FyZSgpLlxcbiA3OTA6XFx0ICpcXG4gNzkxOlxcdCAqIEZhaWxlZCBiYXRjaGVkIHJlcXVlc3RzIGFyZSBwb3NzaWJsZSBhcyB3ZWxsLCBpbiBzdWNoIGNhc2VzIHdlIGp1c3Qgc2hhcmVcXG4gNzkyOlxcdCAqIHRoZSBzdHJ1Y3QgZndfcHJpdiBhbmQgd29uJ3QgcmVsZWFzZSBpdCB1bnRpbCBhbGwgcmVxdWVzdHMgYXJlIHdva2VuXFxuIDc5MzpcXHQgKiBhbmQgaGF2ZSBnb25lIHRocm91Z2ggdGhpcyBzYW1lIHBhdGguXFxuIDc5NDpcXHQgKi9cXG4gNzk1OlxcdHN0YXRpYyB2b2lkIGZ3X2Fib3J0X2JhdGNoX3JlcXMoc3RydWN0IGZpcm13YXJlICpmdylcXG4gNzk2OlxcdHtcXG4gNzk3OlxcdFxcdHN0cnVjdCBmd19wcml2ICpmd19wcml2O1xcbiA3OTg6XFx0XFxuIDc5OTpcXHRcXHQvKiBMb2FkZWQgZGlyZWN0bHk/ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQ4OjU2LjI5Nzk4MDY0NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzQyOTI4NDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZpcm13YXJlIExvYWRpbmcgRml4KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoIGFuZCBoZXJlJ3MgbXkgdGFrZTogdGhlIGZpeCBpcyBzcXVhcmVseSB3aXRoaW4gYF9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmVgLiBUaGUgY29yZSBpc3N1ZSByZXZvbHZlcyBhcm91bmQgY29uY3VycmVudCBmaXJtd2FyZSBsb2FkaW5nIOKAkyBzcGVjaWZpY2FsbHksIHdoYXQgaGFwcGVucyB3aGVuIHR3byB0aHJlYWRzIHRyeSB0byBncmFiIHRoZSBzYW1lIGZpcm13YXJlIHNpbXVsdGFuZW91c2x5LiBJZiBgYWxsb2NfbG9va3VwX2Z3X3ByaXZgIHJldHVybnMgYSBwb3NpdGl2ZSB2YWx1ZSwgaW5kaWNhdGluZyBhbm90aGVyIHRocmVhZCBpcyBhbHJlYWR5IG9uIHRoZSBjYXNlLCBpdCB0aGVuIHdhaXRzIG9uIHRoZSBmaXJtd2FyZSBzdGF0ZSB1c2luZyBgZndfc3RhdGVfd2FpdChmd19wcml2KWAuXG5cblRoZSBjcnVjaWFsIHBhcnQgaXMgdGhlIGNoZWNrIGFmdGVyIHRoZSB3YWl0LiBJZiBgZndfc3RhdGVfd2FpdGAgc3VjY2VlZHMgKHJldHVybnMgMCksIHRoZSBjb2RlIG5vdyAqZXhwbGljaXRseSogY2hlY2tzIGlmIGBmd19wcml2LVx1MDAzZXNpemVgIGlzIHplcm8uIElmIGl0ICppcyogemVybywgdGhhdCBtZWFucyB0aGUgY29uY3VycmVudCBsb2FkIGVpdGhlciBmYWlsZWQgb3IsIG1vcmUgcHJvYmxlbWF0aWNhbGx5LCByZXN1bHRlZCBpbiBhbiBlbXB0eSBmaXJtd2FyZS4gVGhlIHByZXZpb3VzIGJlaGF2aW9yIHdhcyB0byBoYXBwaWx5IGhhbmQgb3ZlciBhIGZpcm13YXJlIG9iamVjdCBvZiBzaXplIHplcm8gd2l0aG91dCBpbmRpY2F0aW5nIGEgZmFpbHVyZS4gVGhpcywgYXMgd2Uga25vdywgaXMgYmFkIG5ld3MuIE5vdywgaXQgcmV0dXJucyBgLUVOT0VOVGAgaW4gdGhhdCBzY2VuYXJpby4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBjbGVhciBhbmQgZGlyZWN0IGZpeCBmb3IgYSByYWNlIGNvbmRpdGlvbi4gSXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBzaG91bGQgZnV6ei5cblxuTXkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBmb2xsb3dpbmcgc3ltYm9sczogYHJlcXVlc3RfZmlybXdhcmVgLCBgcmVxdWVzdF9maXJtd2FyZV9ub3dhaXRgLCBgcmVxdWVzdF9maXJtd2FyZV9kaXJlY3RgLCBgZmlybXdhcmVfcmVxdWVzdF9ub3dhcm5gLCBgcmVxdWVzdF9maXJtd2FyZV9pbnRvX2J1ZmAsIGFuZCBgcmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmYC5cblxuUmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLCBgRldfTE9BREVSX1VTRVJfSEVMUEVSYCBhbmQgYEZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS2AgYXJlIHRoZSBtb3N0IHJlbGV2YW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIGFyZSBlbmFibGVkLCBhcyB0aGlzIGlzIHRoZSBwYXRoIHdoZXJlIHRoZSBlbXB0eSBmaXJtd2FyZSBjb3VsZCBiZSBsb2FkZWQuIEknbGwgYWxzbyBhZGQgYEZXX0xPQURFUl9DT01QUkVTU2AsIGBGV19MT0FERVJfQ09NUFJFU1NfWFpgLCBhbmQgYEZXX0xPQURFUl9DT01QUkVTU19aU1REYCB0byBlbmFibGUgY29tcHJlc3NlZCBmaXJtd2FyZSBzdXBwb3J0LCBzaW5jZSB0aGF0IGNvdWxkIHRyaWdnZXIgZGlmZmVyZW50IGNvZGVwYXRocy5cblxuU28sIHRvIHN1bW1hcml6ZSBteSByZXNwb25zZSBmb3IgZnV6emluZywgSSdkIHNheTpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWVcbiogICAqKkZvY3VzU3ltYm9sczoqKiBgcmVxdWVzdF9maXJtd2FyZWAsIGByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdGAsIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAsIGBmaXJtd2FyZV9yZXF1ZXN0X25vd2FybmAsIGByZXF1ZXN0X2Zpcm13YXJlX2ludG9fYnVmYCwgYHJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1ZmBcbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYEZXX0xPQURFUl9VU0VSX0hFTFBFUmAsIGBGV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0tgLCBgRldfTE9BREVSX0NPTVBSRVNTYCwgYEZXX0xPQURFUl9DT01QUkVTU19YWmAsIGBGV19MT0FERVJfQ09NUFJFU1NfWlNURGBcbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgY3JpdGljYWwgY29uY3VycmVuY3kgaXNzdWUgd2hlcmUgY29uY3VycmVudCBmaXJtd2FyZSByZXF1ZXN0cyBjb3VsZCBsZWFkIHRvIHplcm8tc2l6ZWQgZmlybXdhcmUgb2JqZWN0cyBhbmQgaW5jb3JyZWN0IGVycm9yIGhhbmRsaW5nLCB0aGlzIGlzIGEgY29yZSBmaXJtd2FyZSBsb2FkZXIgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM2MiwiT3V0cHV0VG9rZW5zIjoxNjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0OTowNS4wNDA5MTIyMTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY0MTg1NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZXX0xPQURFUl9VU0VSX0hFTFBFUlwiLFxuICAgIFwiRldfTE9BREVSX1VTRVJfSEVMUEVSX0ZBTExCQUNLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVxdWVzdF9maXJtd2FyZVwiLFxuICAgIFwicmVxdWVzdF9maXJtd2FyZV9ub3dhaXRcIixcbiAgICBcInJlcXVlc3RfZmlybXdhcmVfZGlyZWN0XCIsXG4gICAgXCJmaXJtd2FyZV9yZXF1ZXN0X25vd2FyblwiLFxuICAgIFwicmVxdWVzdF9maXJtd2FyZV9pbnRvX2J1ZlwiLFxuICAgIFwicmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNvcmUgZmlybXdhcmUgbG9hZGVyIHdoZXJlIGNvbmN1cnJlbnQgcmVxdWVzdHMgZm9yIHRoZSBzYW1lIGZpcm13YXJlIGNvdWxkIHJlc3VsdCBpbiByZXR1cm5pbmcgYSBmaXJtd2FyZSBvYmplY3Qgd2l0aCBzaXplIDAgaWYgdGhlIGNvbmN1cnJlbnQgbG9hZCBmYWlsZWQgb3IgcmVzdWx0ZWQgaW4gYW4gZW1wdHkgZmlybXdhcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUga2VybmVsIHN1YnN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGV19MT0FERVJfVVNFUl9IRUxQRVJcIixcbiAgICBcIkZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlcXVlc3RfZmlybXdhcmVcIixcbiAgICBcInJlcXVlc3RfZmlybXdhcmVfbm93YWl0XCIsXG4gICAgXCJyZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdFwiLFxuICAgIFwiZmlybXdhcmVfcmVxdWVzdF9ub3dhcm5cIixcbiAgICBcInJlcXVlc3RfZmlybXdhcmVfaW50b19idWZcIixcbiAgICBcInJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1ZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjb3JlIGZpcm13YXJlIGxvYWRlciB3aGVyZSBjb25jdXJyZW50IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBmaXJtd2FyZSBjb3VsZCByZXN1bHQgaW4gcmV0dXJuaW5nIGEgZmlybXdhcmUgb2JqZWN0IHdpdGggc2l6ZSAwIGlmIHRoZSBjb25jdXJyZW50IGxvYWQgZmFpbGVkIG9yIHJlc3VsdGVkIGluIGFuIGVtcHR5IGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowmbsx4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 09:44:52 +0000 UTC FinishedAt: 2026-08-03 09:49:06 +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": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FW_LOADER_USER_HELPER", "FW_LOADER_USER_HELPER_FALLBACK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FW_LOADER_USER_HELPER", "FW_LOADER_USER_HELPER_FALLBACK" ], "series_id": "aec59f05-db1a-4000-ba44-3428052c7d79" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "request_firmware", "request_firmware_nowait", "request_firmware_direct", "firmware_request_nowarn", "request_firmware_into_buf", "request_partial_firmware_into_buf" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZXX0xPQURFUl9VU0VSX0hFTFBFUiYjMzQ7LAogICAgJiMzNDtGV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXF1ZXN0X2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfbm93YWl0JiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfZGlyZWN0JiMzNDssCiAgICAmIzM0O2Zpcm13YXJlX3JlcXVlc3Rfbm93YXJuJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfaW50b19idWYmIzM0OywKICAgICYjMzQ7cmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjb3JlIGZpcm13YXJlIGxvYWRlciB3aGVyZSBjb25jdXJyZW50IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBmaXJtd2FyZSBjb3VsZCByZXN1bHQgaW4gcmV0dXJuaW5nIGEgZmlybXdhcmUgb2JqZWN0IHdpdGggc2l6ZSAwIGlmIHRoZSBjb25jdXJyZW50IGxvYWQgZmFpbGVkIG9yIHJlc3VsdGVkIGluIGFuIGVtcHR5IGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNTJmZTgzYzA5MmZkNmIwM2I1YzRhZWQyNDUxMDY4OWRjZTNiNTUzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwOTo0ODoxMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYyBiL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXG5pbmRleCAyNDIxM2EwZWE4MzE3Li5iMTUyMWExZGExMzJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXG5AQCAtNzcxLDYgJiM0Mzs3NzEsOCBAQCBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlKHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsIGNvbnN0IGNoYXIgKm5hbWUsXG4gXHRpZiAocmV0IFx1MDAzZSAwKSB7XG4gXHRcdHJldCA9IGZ3X3N0YXRlX3dhaXQoZndfcHJpdik7XG4gXHRcdGlmICghcmV0KSB7XG4mIzQzO1x0XHRcdGlmICghZndfcHJpdi1cdTAwM2VzaXplKVxuJiM0MztcdFx0XHRcdHJldHVybiAtRU5PRU5UO1xuIFx0XHRcdGZ3X3NldF9wYWdlX2RhdGEoZndfcHJpdiwgZmlybXdhcmUpO1xuIFx0XHRcdHJldHVybiAwOyAvKiBhc3NpZ25lZCAqL1xuIFx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZXX0xPQURFUl9VU0VSX0hFTFBFUiYjMzQ7LAogICAgJiMzNDtGV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXF1ZXN0X2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfbm93YWl0JiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfZGlyZWN0JiMzNDssCiAgICAmIzM0O2Zpcm13YXJlX3JlcXVlc3Rfbm93YXJuJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfaW50b19idWYmIzM0OywKICAgICYjMzQ7cmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjb3JlIGZpcm13YXJlIGxvYWRlciB3aGVyZSBjb25jdXJyZW50IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBmaXJtd2FyZSBjb3VsZCByZXN1bHQgaW4gcmV0dXJuaW5nIGEgZmlybXdhcmUgb2JqZWN0IHdpdGggc2l6ZSAwIGlmIHRoZSBjb25jdXJyZW50IGxvYWQgZmFpbGVkIG9yIHJlc3VsdGVkIGluIGFuIGVtcHR5IGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNTJmZTgzYzA5MmZkNmIwM2I1YzRhZWQyNDUxMDY4OWRjZTNiNTUzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwOTo0ODoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jIGIvZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMKaW5kZXggMjQyMTNhMGVhODMxNy4uYjE1MjFhMWRhMTMyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMKQEAgLTc3MSw2ICYjNDM7NzcxLDggQEAgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZShzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLCBjb25zdCBjaGFyICpuYW1lLAogCWlmIChyZXQgJmd0OyAwKSB7CiAJCXJldCA9IGZ3X3N0YXRlX3dhaXQoZndfcHJpdik7CiAJCWlmICghcmV0KSB7CiYjNDM7CQkJaWYgKCFmd19wcml2LSZndDtzaXplKQomIzQzOwkJCQlyZXR1cm4gLUVOT0VOVDsKIAkJCWZ3X3NldF9wYWdlX2RhdGEoZndfcHJpdiwgZmlybXdhcmUpOwogCQkJcmV0dXJuIDA7IC8qIGFzc2lnbmVkICovCiAJCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGaXJtd2FyZSBMb2FkZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlYCBmdW5jdGlvbiB3aXRoaW4gYGRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jYC4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGlyZWN0bHkgaW1wYWN0aW5nIGhvdyBmaXJtd2FyZSBsb2FkaW5nIGlzIGhhbmRsZWQsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gVGhlIGNoYW5nZSBpbnRyb2R1Y2VzIGEgY3J1Y2lhbCBjaGVjayAqYWZ0ZXIqIHRoZSBgZndfc3RhdGVfd2FpdGAgY2FsbC4gIEVzc2VudGlhbGx5LCBpdCYjMzk7cyB2ZXJpZnlpbmcgdGhhdCB0aGUgYGZ3X3ByaXYtJmd0O3NpemVgIG1lbWJlciBpcyBub24temVybyBiZWZvcmUgcHJvY2VlZGluZy4gSWYgYGZ3X3ByaXYtJmd0O3NpemVgICppcyogemVybywgbWVhbmluZyB0aGUgZmlybXdhcmUgaXMgZXNzZW50aWFsbHkgZW1wdHkgKG9yIG5vdCBmb3VuZCksIHRoZSBjb2RlIG5vdyByZXR1cm5zIGAtRU5PRU5UYC4gVGhlbiBgZndfc2V0X3BhZ2VfZGF0YWAgd2lsbCBub3QgcnVuIGFuZCB3ZSByZXR1cm4uIFRoaXMgaW5kaWNhdGVzIGEgcG90ZW50aWFsIHByb2JsZW0gd2l0aCB0aGUgZmlybXdhcmUgaXRzZWxmLCBvciB0aGUgbG9hZGluZyBwcm9jZXNzIGZhaWxlZCB0byByZXRyaWV2ZSBpdHMgc2l6ZSwgd2hpY2ggbWFrZXMgc2Vuc2UgdG8gYWRkcmVzcy4gUmV0dXJuaW5nIGAtRU5PRU5UYCBpcyB0aGUgY29ycmVjdCBhcHByb2FjaCBoZXJlLCBzaWduYWxpbmcgYSAmIzM0O05vIHN1Y2ggZW50cnkmIzM0OyBlcnJvciwgYXMgZXhwZWN0ZWQgYnkgdGhlIGNhbGxlciBvZiBgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZWAuIFRoaXMgaXMgYSBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgbWVhc3VyZS4gSXQgc2hvdWxkIGhlbHAgcHJldmVudCBwb3RlbnRpYWwgaXNzdWVzIGRvd24gdGhlIGxpbmUgaWYgYW4gZW1wdHkgb3IgaW1wcm9wZXJseSBzaXplZCBmaXJtd2FyZSBpcyBzb21laG93IHByb2Nlc3NlZC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29udGV4dHMgd2hlcmUgdGhpcyBgZndfcHJpdmAgc3RydWN0dXJlIGlzIHBvcHVsYXRlZCBhbmQgaG93IHRoZSBgc2l6ZWAgZmllbGQgaXMgYWN0dWFsbHkgZGV0ZXJtaW5lZCB0byBlbnN1cmUgdGhpcyBjaGVjayBkb2VzIHdoYXQgaXQgaXMgc3VwcG9zZWQgdG8uIEFsc28gSSBuZWVkIHRvIGFuYWx5emUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYG1haW4uY2AgdG8gc2VlIHRoZSBpbnRlbmRlZCBiZWhhdmlvciBpbiBjYXNlIG9mIHRoZSBlcnJvciBjb2RlIHRoYXQgaXMgcmV0dXJuZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTc0MT1zdGF0aWMgaW50XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzo3NDI6X3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZShzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLCBjb25zdCBjaGFyICpuYW1lLFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtNzQzLVx0XHRcdCAgc3RydWN0IGRldmljZSAqZGV2aWNlLCB2b2lkICpkYnVmLCBzaXplX3Qgc2l6ZSxcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz04Mjk9X3JlcXVlc3RfZmlybXdhcmUoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy04NjMtXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzo4NjQ6XHRyZXQgPSBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlKFx1MDAyNmZ3LCBuYW1lLCBkZXZpY2UsIGJ1Ziwgc2l6ZSxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTg2NS1cdFx0XHRcdFx0b2Zmc2V0LCBvcHRfZmxhZ3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MDQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byBGaXJtd2FyZSBSZXF1ZXN0cyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZWAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBmbGFnZ2VkIGFzIGEgc3RhdGljIGhlbHBlci4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyBkZXNpZ25lZCB0byBiZSB1c2VkICpvbmx5KiB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciB1bml0IOKAkyBpbiB0aGlzIGNhc2UsIGBfcmVxdWVzdF9maXJtd2FyZWAuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGl0JiMzOTtzIG1lYW50IHRvIGRvIHNvbWUgcHJlcGFyYXRvcnkgd29yay4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCYjMzk7cyB0cmlnZ2VyaW5nIGBfcmVxdWVzdF9maXJtd2FyZWA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbnRyeSBwb2ludHMgZm9yIHRoaXMgd2hvbGUgcHJvY2Vzcy4gV2hlcmUgYXJlICp0aG9zZSogY2FsbHMgY29taW5nIGZyb20/IFRpbWUgdG8gdHJhY2UgYmFjayBhbmQgc2VlIHRoZSBiaWdnZXIgcGljdHVyZS4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBncmFwaCBoZXJlIGlzIGNydWNpYWwgZm9yIGNvbXByZWhlbmRpbmcgdGhlIGNvbXBsZXRlIHN5c3RlbSBpbnRlcmFjdGlvbi4gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIGNhbGwgc3RhY2sgdG8gc2VlIHRoZSBjb250ZXh0IHdpdGhpbiB3aGljaCB0aGlzIGZpcm13YXJlIHJlcXVlc3QgaXMgZXZlbiBpbml0aWF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X3JlcXVlc3RfZmlybXdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz03NDE9c3RhdGljIGludFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6NzQyOl9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmUoc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTc0My1cdFx0XHQgIHN0cnVjdCBkZXZpY2UgKmRldmljZSwgdm9pZCAqZGJ1Ziwgc2l6ZV90IHNpemUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9ODI4PXN0YXRpYyBpbnRcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjgyOTpfcmVxdWVzdF9maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLCBjb25zdCBjaGFyICpuYW1lLFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtODMwLVx0XHQgIHN0cnVjdCBkZXZpY2UgKmRldmljZSwgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSxcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy04NjMtXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzo4NjQ6XHRyZXQgPSBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlKFx1MDAyNmZ3LCBuYW1lLCBkZXZpY2UsIGJ1Ziwgc2l6ZSxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTg2NS1cdFx0XHRcdFx0b2Zmc2V0LCBvcHRfZmxhZ3MpO1xuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTk0Mz1yZXF1ZXN0X2Zpcm13YXJlKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTQ5LVx0X19tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKTtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjk1MDpcdHJldCA9IF9yZXF1ZXN0X2Zpcm13YXJlKGZpcm13YXJlX3AsIG5hbWUsIGRldmljZSwgTlVMTCwgMCwgMCxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTk1MS1cdFx0XHRcdEZXX09QVF9VRVZFTlQpO1xuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTk3MD1pbnQgZmlybXdhcmVfcmVxdWVzdF9ub3dhcm4oY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmUsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTc2LVx0X19tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKTtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjk3NzpcdHJldCA9IF9yZXF1ZXN0X2Zpcm13YXJlKGZpcm13YXJlLCBuYW1lLCBkZXZpY2UsIE5VTEwsIDAsIDAsXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy05NzgtXHRcdFx0XHRGV19PUFRfVUVWRU5UIHwgRldfT1BUX05PX1dBUk4pO1xuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTk5NT1pbnQgcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCxcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDAwLVx0X19tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKTtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEwMDE6XHRyZXQgPSBfcmVxdWVzdF9maXJtd2FyZShmaXJtd2FyZV9wLCBuYW1lLCBkZXZpY2UsIE5VTEwsIDAsIDAsXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDAyLVx0XHRcdFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9OT19XQVJOIHxcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMDE5PWludCBmaXJtd2FyZV9yZXF1ZXN0X3BsYXRmb3JtKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlLFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwMjUtXHRfX21vZHVsZV9nZXQoVEhJU19NT0RVTEUpO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTAyNjpcdHJldCA9IF9yZXF1ZXN0X2Zpcm13YXJlKGZpcm13YXJlLCBuYW1lLCBkZXZpY2UsIE5VTEwsIDAsIDAsXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDI3LVx0XHRcdFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9GQUxMQkFDS19QTEFURk9STSk7XG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9MTA3Mz1yZXF1ZXN0X2Zpcm13YXJlX2ludG9fYnVmKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTA4MS1cdF9fbW9kdWxlX2dldChUSElTX01PRFVMRSk7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMDgyOlx0cmV0ID0gX3JlcXVlc3RfZmlybXdhcmUoZmlybXdhcmVfcCwgbmFtZSwgZGV2aWNlLCBidWYsIHNpemUsIDAsXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDgzLVx0XHRcdFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9OT0NBQ0hFKTtcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMTAyPXJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1Zihjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExMTEtXHRfX21vZHVsZV9nZXQoVEhJU19NT0RVTEUpO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTExMjpcdHJldCA9IF9yZXF1ZXN0X2Zpcm13YXJlKGZpcm13YXJlX3AsIG5hbWUsIGRldmljZSwgYnVmLCBzaXplLCBvZmZzZXQsXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMTEzLVx0XHRcdFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9OT0NBQ0hFIHxcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMTU3PXN0YXRpYyB2b2lkIHJlcXVlc3RfZmlybXdhcmVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMTYzLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTE2NDpcdF9yZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZ3LCBmd193b3JrLVx1MDAzZW5hbWUsIGZ3X3dvcmstXHUwMDNlZGV2aWNlLCBOVUxMLCAwLCAwLFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTE2NS1cdFx0XHQgIGZ3X3dvcmstXHUwMDNlb3B0X2ZsYWdzKTtcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMTc4LVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTE3OTpzdGF0aWMgaW50IF9yZXF1ZXN0X2Zpcm13YXJlX25vd2FpdChcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExODAtXHRzdHJ1Y3QgbW9kdWxlICptb2R1bGUsIGJvb2wgdWV2ZW50LFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEyNTA9aW50IHJlcXVlc3RfZmlybXdhcmVfbm93YWl0KFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEyNTQte1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTI1NTpcdHJldHVybiBfcmVxdWVzdF9maXJtd2FyZV9ub3dhaXQobW9kdWxlLCB1ZXZlbnQsIG5hbWUsIGRldmljZSwgZ2ZwLFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTI1Ni1cdFx0XHRcdFx0Y29udGV4dCwgY29udCwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEyNzY9aW50IGZpcm13YXJlX3JlcXVlc3Rfbm93YWl0X25vd2Fybihcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMjgwLXtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEyODE6XHRyZXR1cm4gX3JlcXVlc3RfZmlybXdhcmVfbm93YWl0KG1vZHVsZSwgRldfQUNUSU9OX1VFVkVOVCwgbmFtZSwgZGV2aWNlLFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTI4Mi1cdFx0XHRcdFx0Z2ZwLCBjb250ZXh0LCBjb250LCB0cnVlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Njk0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZpcm13YXJlIExvYWRlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byBgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBmZWVkcyBpbnRvIGBfcmVxdWVzdF9maXJtd2FyZWAsIHdoaWNoIGlzICp0aGUqIGNvcmUgb2YgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gSSBzZWUgdGhlIG1vZGlmaWNhdGlvbjogdGhlIGNvZGUgaXMgY2hlY2tpbmcgYGZ3X3ByaXYtJmd0O3NpemVgICphZnRlciogYGZ3X3N0YXRlX3dhaXRgIHJldHVybnMgc3VjY2Vzc2Z1bGx5LiBUaGUga2V5IGlzIHRoYXQgaWYgYGZ3X3N0YXRlX3dhaXRgIHJldHVybnMgc3VjY2VzcyAoMCkgYnV0IHRoZSBmaXJtd2FyZSBzaXplLCBgZndfcHJpdi0mZ3Q7c2l6ZWAsIGlzIHplcm8sIGl0JiMzOTtzIHJldHVybmluZyBgLUVOT0VOVGAuIFRoYXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZTsgaXQgYWx0ZXJzIHRoZSBiZWhhdmlvciBvZiB0aGUgY29yZSBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljLiBUaGlzIGlzIHBvdGVudGlhbGx5IGltcG9ydGFudC4KCkxldCYjMzk7cyB0aGluayBhYm91dCB0aGUgaW1wbGljYXRpb25zLiBUaGlzIGZpcm13YXJlIGxvYWRlciBpcyBmdW5kYW1lbnRhbCwgcmlnaHQ/IEl0JiMzOTtzIHRvdWNoZWQgYnkgYSBzbGV3IG9mIGRyaXZlcnMgYW5kIHN1YnN5c3RlbXMsIHNvIHRoZSBmdW5jdGlvbnMgdG8gY29uc2lkZXIgd291bGQgYmU6IGByZXF1ZXN0X2Zpcm13YXJlYCwgYHJlcXVlc3RfZmlybXdhcmVfbm93YWl0YCwgYHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0YCwgYGZpcm13YXJlX3JlcXVlc3Rfbm93YXJuYCwgYGZpcm13YXJlX3JlcXVlc3RfcGxhdGZvcm1gLCBgcmVxdWVzdF9maXJtd2FyZV9pbnRvX2J1ZmAsIGFuZCBgcmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmYC4gV2FpdCwgYHJlcXVlc3RfZmlybXdhcmVgIGlzICpzdXBlciogY29tbW9uLiBUaGF0JiMzOTtzIGEgbG90IG9mIHBvdGVudGlhbCBpbXBhY3QuCgpSaWdodCwgc28gdG8gdW5kZXJzdGFuZCB0aGUgcmVhY2ggb2YgdGhpcyBwYXRjaCwgSSBzaG91bGQgY2hlY2sgd2hldGhlciB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IGFmZmVjdCB0aGlzIGJlaGF2aW9yLiBMZXQmIzM5O3Mgc2VlLi4uIGFoLCB0aGUgZmlybXdhcmUgbG9hZGVyIGlzIGVuYWJsZWQgYnkgYENPTkZJR19GV19MT0FERVJgLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZSwgYnV0IGFyZSB0aGVyZSBvdGhlciBvcHRpb25zIHRoYXQgbWlnaHQgaW50ZXJhY3Q/IEkgbmVlZCB0byBsb29rIGludG8gd2hldGhlciBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgaW52b2x2ZWQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtGV19MT0FERVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnPTI9bWVudSBcJiMzNDtGaXJtd2FyZSBsb2FkZXJcJiMzNDtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0zLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjQ6Y29uZmlnIEZXX0xPQURFUlxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTUtXHR0cmlzdGF0ZSBcJiMzNDtGaXJtd2FyZSBsb2FkaW5nIGZhY2lsaXR5XCYjMzQ7IGlmIEVYUEVSVFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjY6XHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEEyNTYgaWYgRldfTE9BREVSX0RFQlVHXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNy1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yNy1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoyODpjb25maWcgRldfTE9BREVSX0RFQlVHXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjktXHRib29sIFwmIzM0O0xvZyBmaWxlbmFtZXMgYW5kIGNoZWNrc3VtcyBmb3IgbG9hZGVkIGZpcm13YXJlXCYjMzQ7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMzAtXHRkZXBlbmRzIG9uIERZTkFNSUNfREVCVUdcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzozMTpcdGRlcGVuZHMgb24gRldfTE9BREVSXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MzI6XHRkZWZhdWx0IEZXX0xPQURFUlxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTMzLVx0aGVscFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0zNy1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzozODpjb25maWcgUlVTVF9GV19MT0FERVJfQUJTVFJBQ1RJT05TXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMzktXHRib29sIFwmIzM0O1J1c3QgRmlybXdhcmUgTG9hZGVyIGFic3RyYWN0aW9uc1wmIzM0O1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTQwLVx0ZGVwZW5kcyBvbiBSVVNUXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6NDE6XHRzZWxlY3QgRldfTE9BREVSXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNDItXHRoZWxwXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTQ0LVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjQ1OmlmIEZXX0xPQURFUlxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTQ2LVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjQ3OmNvbmZpZyBGV19MT0FERVJfUEFHRURfQlVGXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNDgtXHRib29sXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNDktXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6NTA6Y29uZmlnIEZXX0xPQURFUl9TWVNGU1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTUxLVx0Ym9vbFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZz01Mz1jb25maWcgRVhUUkFfRklSTVdBUkVcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNjAtXHQgIG92ZXIgZmlybXdhcmUgbG9va3VwcyB1c2luZyB5b3VyIGZpbGVzeXN0ZW0gb3ZlciB0aGUgc3VwcG9ydGVkXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6NjE6XHQgIC9saWIvZmlybXdhcmUgcGF0aHMgZG9jdW1lbnRlZCBvbiBDT05GSUdfRldfTE9BREVSLlxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTYyLVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZz04Nj1jb25maWcgRVhUUkFfRklSTVdBUkVfRElSXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTkzLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjk0OmNvbmZpZyBGV19MT0FERVJfVVNFUl9IRUxQRVJcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy05NS1cdGJvb2wgXCYjMzQ7RW5hYmxlIHRoZSBmaXJtd2FyZSBzeXNmcyBmYWxsYmFjayBtZWNoYW5pc21cJiMzNDtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzo5NjpcdHNlbGVjdCBGV19MT0FERVJfU1lTRlNcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzo5NzpcdHNlbGVjdCBGV19MT0FERVJfUEFHRURfQlVGXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctOTgtXHRoZWxwXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE2Ni1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoxNjc6Y29uZmlnIEZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE2OC1cdGJvb2wgXCYjMzQ7Rm9yY2UgdGhlIGZpcm13YXJlIHN5c2ZzIGZhbGxiYWNrIG1lY2hhbmlzbSB3aGVuIHBvc3NpYmxlXCYjMzQ7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MTY5Olx0ZGVwZW5kcyBvbiBGV19MT0FERVJfVVNFUl9IRUxQRVJcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0xNzAtXHRoZWxwXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE4MS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoxODI6Y29uZmlnIEZXX0xPQURFUl9DT01QUkVTU1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE4My1cdGJvb2wgXCYjMzQ7RW5hYmxlIGNvbXByZXNzZWQgZmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0xOTItXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MTkzOmlmIEZXX0xPQURFUl9DT01QUkVTU1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjE5NDpjb25maWcgRldfTE9BREVSX0NPTVBSRVNTX1haXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMTk1LVx0Ym9vbCBcJiMzNDtFbmFibGUgWFotY29tcHJlc3NlZCBmaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MTk2Olx0c2VsZWN0IEZXX0xPQURFUl9QQUdFRF9CVUZcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0xOTctXHRzZWxlY3QgWFpfREVDXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTIwMy1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoyMDQ6Y29uZmlnIEZXX0xPQURFUl9DT01QUkVTU19aU1REXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjA1LVx0Ym9vbCBcJiMzNDtFbmFibGUgWlNURC1jb21wcmVzc2VkIGZpcm13YXJlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjA5LVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjIxMDplbmRpZiAjIEZXX0xPQURFUl9DT01QUkVTU1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTIxMS1cbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc9MjI0PWNvbmZpZyBGV19VUExPQURcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yMjUtXHRib29sIFwmIzM0O0VuYWJsZSB1c2VycyB0byBpbml0aWF0ZSBmaXJtd2FyZSB1cGRhdGVzIHVzaW5nIHN5c2ZzXCYjMzQ7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MjI2Olx0c2VsZWN0IEZXX0xPQURFUl9TWVNGU1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjIyNzpcdHNlbGVjdCBGV19MT0FERVJfUEFHRURfQlVGXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjI4LVx0aGVscFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yMzctXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MjM4OmVuZGlmICMgRldfTE9BREVSXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjM5LWVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTAyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZpcm13YXJlIExvYWRpbmcgRWRnZSBDYXNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcywgYW5kIG15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgYEZXX0xPQURFUmAgY29uZmlndXJhdGlvbiBvcHRpb24g4oCTIGl0JiMzOTtzIGVuYWJsZWQgYnkgZGVmYXVsdCwgd2hpY2ggaXMgZ29vZC4gVGhhdCBzZXRzIHRoZSBzdGFnZS4gQnV0IG5vdyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgc3BlY2lmaWNzIG9mIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCBmYWlsdXJlcywgcGFydGljdWxhcmx5IHdpdGhpbiBgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZWAuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSYjMzk7bSBzZWVpbmcgYSBzY2VuYXJpbyB3aGVyZSBgZndfc3RhdGVfd2FpdGAgcmV0dXJucyBhIHN1Y2Nlc3MgY29kZSAoMCksICpidXQqIHRoZSBmaXJtd2FyZSBzaXplIChgZndfcHJpdi0mZ3Q7c2l6ZWApIGVuZHMgdXAgYmVpbmcgemVyby4gQWxhcm0gYmVsbHMhCgpUaGlzIGxpa2VseSBpbmRpY2F0ZXMgc29tZXRoaW5nIHdlbnQgd3JvbmcsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2h5Ki4gTXkgYnJhaW4gaXMgaW1tZWRpYXRlbHkganVtcGluZyB0byBhIGNvdXBsZSBvZiBwb3NzaWJpbGl0aWVzOiBwZXJoYXBzIGEgY29uY3VycmVudCBmaXJtd2FyZSBsb2FkIGNvbXBsZXRlZCwgYnV0IGZhaWxlZCBzb21laG93LCBsZWF2aW5nIHVzIHdpdGggbm90aGluZy4gT3IsIG1heWJlIHRoZSB1c2VyIGhlbHBlciBmYWxsYmFjayBtZWNoYW5pc20gd2FzIHRyaWdnZXJlZCwgYW5kIGZvciBzb21lIHJlYXNvbiwgaXQgYWxzbyBwcm92aWRlZCBhbiBlbXB0eSBmaXJtd2FyZS4KClNvLCB3aGVyZSBkbyBJIGdvIG5leHQ/IFJpZ2h0LCB0aW1lIHRvIGRpZyBkZWVwZXIgaW50byB0aGF0IGBmd19zdGF0ZV93YWl0YCBmdW5jdGlvbiBpdHNlbGYuIFVuZGVyc3RhbmRpbmcgaG93IGl0IGNhbiByZXR1cm4gc3VjY2VzcyAqZGVzcGl0ZSogYSB6ZXJvLXNpemVkIGZpcm13YXJlIGlzIGNydWNpYWwgaGVyZSB0byB0cnVseSB1bmRlcnN0YW5kIHRoZSByb290IGNhdXNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyB3aXRoaW4gdGhhdCBmdW5jdGlvbiBhbmQgdGhlIGNvbmRpdGlvbnMgaXQmIzM5O3MgY2hlY2tpbmcgdG8gZnVsbHkgZGlhZ25vc2UgdGhpcyBzaXR1YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Z3X3N0YXRlX3dhaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL2ZhbGxiYWNrLmM9NDI9c3RhdGljIGlubGluZSBpbnQgZndfc3lzZnNfd2FpdF90aW1lb3V0KHN0cnVjdCBmd19wcml2ICpmd19wcml2LCAgbG9uZyB0aW1lb3V0KVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9mYWxsYmFjay5jLTQzLXtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvZmFsbGJhY2suYzo0NDpcdHJldHVybiBfX2Z3X3N0YXRlX3dhaXRfY29tbW9uKGZ3X3ByaXYsIHRpbWVvdXQpO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9mYWxsYmFjay5jLTQ1LX1cbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL2Zpcm13YXJlLmg9OTE9c3RhdGljIGlubGluZSBib29sIF9fZndfc3RhdGVfY2hlY2soc3RydWN0IGZ3X3ByaXYgKmZ3X3ByaXYsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9maXJtd2FyZS5oLTk4LVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9maXJtd2FyZS5oOjk5OnN0YXRpYyBpbmxpbmUgaW50IF9fZndfc3RhdGVfd2FpdF9jb21tb24oc3RydWN0IGZ3X3ByaXYgKmZ3X3ByaXYsIGxvbmcgdGltZW91dClcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvZmlybXdhcmUuaC0xMDAte1xuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTk4PXZvaWQgZndfc3RhdGVfaW5pdChzdHJ1Y3QgZndfcHJpdiAqZndfcHJpdilcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDUtXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMDY6c3RhdGljIGlubGluZSBpbnQgZndfc3RhdGVfd2FpdChzdHJ1Y3QgZndfcHJpdiAqZndfcHJpdilcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwNy17XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMDg6XHRyZXR1cm4gX19md19zdGF0ZV93YWl0X2NvbW1vbihmd19wcml2LCBNQVhfU0NIRURVTEVfVElNRU9VVCk7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDktfVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTc0Mj1fcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlKHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtNzcxLVx0aWYgKHJldCBcdTAwM2UgMCkge1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6NzcyOlx0XHRyZXQgPSBmd19zdGF0ZV93YWl0KGZ3X3ByaXYpO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtNzczLVx0XHRpZiAoIXJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODQ0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZpcm13YXJlIExvYWRlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYF9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmVgLiBJdCYjMzk7cyBhIHByZXR0eSBjZW50cmFsIGZ1bmN0aW9uLCByZWFjaGFibGUgdGhyb3VnaCB0aGUgY29tbW9uIGByZXF1ZXN0X2Zpcm13YXJlYCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMsIHdoaWNoIGFyZSBhbGwgb3ZlciB0aGUgcGxhY2UgaW4gZHJpdmVyIGNvZGUuIFRoZSBwYXRjaCBpdHNlbGYgaXMgc2ltcGxlIGVub3VnaDogaXQmIzM5O3MgYWRkaW5nIGEgY2hlY2sgZm9yIGAhZndfcHJpdi0mZ3Q7c2l6ZWAgYW5kIHJldHVybmluZyBgLUVOT0VOVGAgaWYgdGhlIGZpcm13YXJlIHNpemUgaXMgemVyby4gQmFzaWNhbGx5LCB0aGlzIHByZXZlbnRzIHVzIGZyb20gYWNjaWRlbnRhbGx5IHVzaW5nIG9yIGdldHRpbmcgYSBmaXJtd2FyZSBvYmplY3QgdGhhdCBoYXMgYSB6ZXJvIHNpemUsIGV2ZW4gaWYgYGZ3X3N0YXRlX3dhaXRgIHN1Y2NlZWRzLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IGNvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0cyBvbiB0aG9zZSBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBkaXJlY3RseSBjYWxsIGBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlYCBvciBgX3JlcXVlc3RfZmlybXdhcmVgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cy4gVGltZSB0byBkaWcgaW50byBgZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmNgIGFuZCBnZXQgYSBsaXN0IG9mIHRob3NlIGNyaXRpY2FsIHN5bWJvbHMuIFRoYXQmIzM5O2xsIGJlIHRoZSBzdGFydGluZyBwb2ludCBmb3IgZGV2ZWxvcGluZyBzb21lIHRhcmdldGVkIGZ1enogaGFybmVzc2VzLiBUaGlzIHdpbGwgZ2l2ZSB1cyBhIGdvb2QgdGVzdCB0byBzZWUgaWYgdGhlIHBhdGNoIG1ha2VzIGEgZGlmZmVyZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTk0Mz1yZXF1ZXN0X2Zpcm13YXJlKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTU0LX1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjk1NTpFWFBPUlRfU1lNQk9MKHJlcXVlc3RfZmlybXdhcmUpO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTU2LVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTk3MD1pbnQgZmlybXdhcmVfcmVxdWVzdF9ub3dhcm4oY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmUsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTgxLX1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjk4MjpFWFBPUlRfU1lNQk9MX0dQTChmaXJtd2FyZV9yZXF1ZXN0X25vd2Fybik7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy05ODMtXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9OTk1PWludCByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdChjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwMDYtfVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTAwNzpFWFBPUlRfU1lNQk9MX0dQTChyZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdCk7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDA4LVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEwMTk9aW50IGZpcm13YXJlX3JlcXVlc3RfcGxhdGZvcm0oY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmUsXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTAzMC19XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMDMxOkVYUE9SVF9TWU1CT0xfR1BMKGZpcm13YXJlX3JlcXVlc3RfcGxhdGZvcm0pO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTAzMi1cbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMDQ1PWludCBmaXJtd2FyZV9yZXF1ZXN0X2NhY2hlKHN0cnVjdCBkZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqbmFtZSlcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDU0LX1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEwNTU6RVhQT1JUX1NZTUJPTF9HUEwoZmlybXdhcmVfcmVxdWVzdF9jYWNoZSk7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDU2LVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEwNzM9cmVxdWVzdF9maXJtd2FyZV9pbnRvX2J1Zihjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwODYtfVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTA4NzpFWFBPUlRfU1lNQk9MKHJlcXVlc3RfZmlybXdhcmVfaW50b19idWYpO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTA4OC1cbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMTAyPXJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1Zihjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExMTctfVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTExODpFWFBPUlRfU1lNQk9MKHJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1Zik7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMTE5LVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTExMjQ9dm9pZCByZWxlYXNlX2Zpcm13YXJlKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTEzMS19XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMTMyOkVYUE9SVF9TWU1CT0wocmVsZWFzZV9maXJtd2FyZSk7XG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMTMzLVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEyNTA9aW50IHJlcXVlc3RfZmlybXdhcmVfbm93YWl0KFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEyNTgtfVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTI1OTpFWFBPUlRfU1lNQk9MKHJlcXVlc3RfZmlybXdhcmVfbm93YWl0KTtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEyNjAtXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9MTI3Nj1pbnQgZmlybXdhcmVfcmVxdWVzdF9ub3dhaXRfbm93YXJuKFxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEyODMtfVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTI4NDpFWFBPUlRfU1lNQk9MX0dQTChmaXJtd2FyZV9yZXF1ZXN0X25vd2FpdF9ub3dhcm4pO1xuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTI4NS1cbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMjk5PXZvaWQgcmVxdWVzdF9maXJtd2FyZV9ub3dhaXRfY2FuY2VsKHN0cnVjdCBkZXZpY2UgKmRldmljZSwgdm9pZCAqY29udGV4dCxcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMzIxLX1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEzMjI6RVhQT1JUX1NZTUJPTF9HUEwocmVxdWVzdF9maXJtd2FyZV9ub3dhaXRfY2FuY2VsKTtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEzMjMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NjgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEZpcm13YXJlIExvYWRpbmcgZm9yIFZ1bG5lcmFiaWxpdHkgUmVzZWFyY2gqKgoKT2theSwgbXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2UgZmlybXdhcmUgcmVxdWVzdCBzeW1ib2xzOiBgcmVxdWVzdF9maXJtd2FyZWAsIGByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdGAsIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAsIGBmaXJtd2FyZV9yZXF1ZXN0X25vd2FybmAsIGByZXF1ZXN0X2Zpcm13YXJlX2ludG9fYnVmYCwgYW5kIGByZXF1ZXN0X3BhcnRpYWxfZmlybXdhcmVfaW50b19idWZgLiBJIGtub3cgdGhhdCBgcmVxdWVzdF9maXJtd2FyZWAgaW4gcGFydGljdWxhciBpcyBhIGhpZ2gtdHJhZmZpYyBhcmVhLCBlc3BlY2lhbGx5IGR1cmluZyBzeXN0ZW0gYm9vdCwgYW5kIHRoYXQgbWFrZXMgaXQgYSBwcmltZSB0YXJnZXQuIFRoZSBiZWF1dHkgaXMsIHN5emthbGxlciBjYW4gcHJvYmUgaXQgdGhyb3VnaCB2YXJpb3VzIHJvdXRlcyBsaWtlIHBzZXVkby1kZXZpY2VzIG9yIHN5c2ZzLCBhbmQgdGhhdCYjMzk7cyBleGFjdGx5IHdoYXQgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGV4cGxvaXRpbmcgZm9yIGZ1enppbmcgcHVycG9zZXMuCgpXYWl0IGEgc2Vjb25k4oCmIHRoZSBmaXJtd2FyZSBsb2FkZXIgKml0c2VsZiogaGFzIGEgc3lzZnMgaW50ZXJmYWNlIGZvciBsb2FkaW5nIGZpcm13YXJlLiBCaW5nbyEgVGhhdCYjMzk7cyBhIGRpcmVjdCBlbnRyeSBwb2ludC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGFyb3VuZCB0aGF0IGludGVyZmFjZS4gTGV0JiMzOTtzIHNlZS4uLiBgRldfTE9BREVSX1NZU0ZTYOKApiBhaGEsIGl0JiMzOTtzIHNlbGVjdGVkIGJ5IGBGV19MT0FERVJfVVNFUl9IRUxQRVJgICphbmQqIGBGV19VUExPQURgLiBOb3csIHdoYXQgZG9lcyBgRldfTE9BREVSX1VTRVJfSEVMUEVSYCBkbyBzcGVjaWZpY2FsbHk/IFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RldfTE9BREVSX1VTRVJfSEVMUEVSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZz04Nj1jb25maWcgRVhUUkFfRklSTVdBUkVfRElSXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTkzLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjk0OmNvbmZpZyBGV19MT0FERVJfVVNFUl9IRUxQRVJcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy05NS1cdGJvb2wgXCYjMzQ7RW5hYmxlIHRoZSBmaXJtd2FyZSBzeXNmcyBmYWxsYmFjayBtZWNoYW5pc21cJiMzNDtcbi0tXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMTY2LVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjE2Nzpjb25maWcgRldfTE9BREVSX1VTRVJfSEVMUEVSX0ZBTExCQUNLXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMTY4LVx0Ym9vbCBcJiMzNDtGb3JjZSB0aGUgZmlybXdhcmUgc3lzZnMgZmFsbGJhY2sgbWVjaGFuaXNtIHdoZW4gcG9zc2libGVcJiMzNDtcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoxNjk6XHRkZXBlbmRzIG9uIEZXX0xPQURFUl9VU0VSX0hFTFBFUlxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE3MC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNzMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRmlybXdhcmUgTG9hZGluZyBPcHRpbWl6YXRpb24qKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgZGVhbC4gSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgd2hlcmUgYGZ3X3N0YXRlX3dhaXRgIG1pZ2h0IHJldHVybiAwIHdpdGggYW4gZW1wdHkgc2l6ZSBpZiB0aGUgdXNlciBoZWxwZXIgd3JpdGVzIHplcm8gYnl0ZXMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGBzeXNmc2AgZmFsbGJhY2sgc2NlbmFyaW8sIGFuZCB0aGUga2V5IGhlcmUgaXMgYEZXX0xPQURFUl9VU0VSX0hFTFBFUmAuIEVuYWJsaW5nIHRoYXQsIGFuZCBhbHNvIGl0cyBmYWxsYmFjayBjb3VudGVycGFydCwgYEZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS2AsIHNlZW1zIGxpa2UgdGhlIHJpZ2h0IG1vdmUgdG8gY292ZXIgYWxsIGJhc2VzIGFuZCBoYW5kbGUgdGhvc2UgZWRnZSBjYXNlcyBncmFjZWZ1bGx5LgoKTm93LCBhIHF1aWNrIHNhbml0eSBjaGVjazogZG8gd2UgKnJlYWxseSogbmVlZCBgRldfTE9BREVSYCBpdHNlbGY/IEhtbSwgaXQmIzM5O3Mgc2V0IHRvICYjMzQ7eSYjMzQ7IGJ5IGRlZmF1bHQsIHNvIHByZXN1bWFibHksIHdlIGRvLiBFeGNlbGxlbnQuIFRoaXMgbWVhbnMgZW5hYmxpbmcgYEZXX0xPQURFUl9VU0VSX0hFTFBFUmAgYW5kIGBGV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0tgIGlzIGEgc291bmQgY29uZmlndXJhdGlvbiBmb3IgY29tcHJlaGVuc2l2ZSBjb3ZlcmFnZSwgZXNwZWNpYWxseSBmb3IgdGhvc2UgdXNlci1zcGFjZSBpbnRlcmFjdGlvbnMuCgpUbyBtYWtlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bSBnb2luZyB0byB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgY29kZSB3aXRoaW4gYF9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmVgLiBKdXN0IHRvIHJlY29uZmlybSB0aGlzIGFwcHJvYWNoIGFsaWducyB3aXRoIHRoZSBleGlzdGluZyBsb2dpYyB0aGVyZSwgYW5kIHRoYXQgSSYjMzk7bSBub3Qgb3Zlcmxvb2tpbmcgYW55dGhpbmcgY3JpdGljYWwuIEFsd2F5cyBnb29kIHRvIGRvdWJsZS1jaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzUwOlx0XHQqZmlybXdhcmVfcCA9IGZpcm13YXJlID0ga3phbGxvY19vYmooKmZpcm13YXJlKTtcbiA3NTE6XHRcdGlmICghZmlybXdhcmUpIHtcbiA3NTI6XHRcdFx0ZGV2X2VycihkZXZpY2UsIFwmIzM0OyVzOiBrbWFsbG9jKHN0cnVjdCBmaXJtd2FyZSkgZmFpbGVkXFxuXCYjMzQ7LFxuIDc1MzpcdFx0XHRcdF9fZnVuY19fKTtcbiA3NTQ6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gNzU1Olx0XHR9XG4gNzU2Olx0XG4gNzU3Olx0XHRpZiAoZmlybXdhcmVfcmVxdWVzdF9idWlsdGluX2J1ZihmaXJtd2FyZSwgbmFtZSwgZGJ1Ziwgc2l6ZSkpIHtcbiA3NTg6XHRcdFx0ZGV2X2RiZyhkZXZpY2UsIFwmIzM0O3VzaW5nIGJ1aWx0LWluICVzXFxuXCYjMzQ7LCBuYW1lKTtcbiA3NTk6XHRcdFx0cmV0dXJuIDA7IC8qIGFzc2lnbmVkICovXG4gNzYwOlx0XHR9XG4gNzYxOlx0XG4gNzYyOlx0XHRyZXQgPSBhbGxvY19sb29rdXBfZndfcHJpdihuYW1lLCBcdTAwMjZmd19jYWNoZSwgXHUwMDI2ZndfcHJpdiwgZGJ1Ziwgc2l6ZSxcbiA3NjM6XHRcdFx0XHRcdCAgIG9mZnNldCwgb3B0X2ZsYWdzKTtcbiA3NjQ6XHRcbiA3NjU6XHRcdC8qXG4gNzY2Olx0XHQgKiBiaW5kIHdpdGggJiMzOTtwcml2JiMzOTsgbm93IHRvIGF2b2lkIHdhcm5pbmcgaW4gZmFpbHVyZSBwYXRoXG4gNzY3Olx0XHQgKiBvZiByZXF1ZXN0aW5nIGZpcm13YXJlLlxuIDc2ODpcdFx0ICovXG4gNzY5Olx0XHRmaXJtd2FyZS1cdTAwM2Vwcml2ID0gZndfcHJpdjtcbiA3NzA6XHRcbiA3NzE6XHRcdGlmIChyZXQgXHUwMDNlIDApIHtcbiA3NzI6XHRcdFx0cmV0ID0gZndfc3RhdGVfd2FpdChmd19wcml2KTtcbiA3NzM6XHRcdFx0aWYgKCFyZXQpIHtcbiA3NzQ6XHRcdFx0XHRpZiAoIWZ3X3ByaXYtXHUwMDNlc2l6ZSlcbiA3NzU6XHRcdFx0XHRcdHJldHVybiAtRU5PRU5UO1xuIDc3NjpcdFx0XHRcdGZ3X3NldF9wYWdlX2RhdGEoZndfcHJpdiwgZmlybXdhcmUpO1xuIDc3NzpcdFx0XHRcdHJldHVybiAwOyAvKiBhc3NpZ25lZCAqL1xuIDc3ODpcdFx0XHR9XG4gNzc5Olx0XHR9XG4gNzgwOlx0XG4gNzgxOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDc4MjpcdFx0XHRyZXR1cm4gcmV0O1xuIDc4MzpcdFx0cmV0dXJuIDE7IC8qIG5lZWQgdG8gbG9hZCAqL1xuIDc4NDpcdH1cbiA3ODU6XHRcbiA3ODY6XHQvKlxuIDc4NzpcdCAqIEJhdGNoZWQgcmVxdWVzdHMgbmVlZCBvbmx5IG9uZSB3YWtlLCB3ZSBuZWVkIHRvIGRvIHRoaXMgc3RlcCBsYXN0IGR1ZSB0byB0aGVcbiA3ODg6XHQgKiBmYWxsYmFjayBtZWNoYW5pc20uIFRoZSBidWYgaXMgcHJvdGVjdGVkIHdpdGgga3JlZl9nZXQoKSwgYW5kIGl0IHdvbiYjMzk7dCBiZVxuIDc4OTpcdCAqIHJlbGVhc2VkIHVudGlsIHRoZSBsYXN0IHVzZXIgY2FsbHMgcmVsZWFzZV9maXJtd2FyZSgpLlxuIDc5MDpcdCAqXG4gNzkxOlx0ICogRmFpbGVkIGJhdGNoZWQgcmVxdWVzdHMgYXJlIHBvc3NpYmxlIGFzIHdlbGwsIGluIHN1Y2ggY2FzZXMgd2UganVzdCBzaGFyZVxuIDc5MjpcdCAqIHRoZSBzdHJ1Y3QgZndfcHJpdiBhbmQgd29uJiMzOTt0IHJlbGVhc2UgaXQgdW50aWwgYWxsIHJlcXVlc3RzIGFyZSB3b2tlblxuIDc5MzpcdCAqIGFuZCBoYXZlIGdvbmUgdGhyb3VnaCB0aGlzIHNhbWUgcGF0aC5cbiA3OTQ6XHQgKi9cbiA3OTU6XHRzdGF0aWMgdm9pZCBmd19hYm9ydF9iYXRjaF9yZXFzKHN0cnVjdCBmaXJtd2FyZSAqZncpXG4gNzk2Olx0e1xuIDc5NzpcdFx0c3RydWN0IGZ3X3ByaXYgKmZ3X3ByaXY7XG4gNzk4Olx0XG4gNzk5Olx0XHQvKiBMb2FkZWQgZGlyZWN0bHk/ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzYyCgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDUzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGaXJtd2FyZSBMb2FkaW5nIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoIGFuZCBoZXJlJiMzOTtzIG15IHRha2U6IHRoZSBmaXggaXMgc3F1YXJlbHkgd2l0aGluIGBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlYC4gVGhlIGNvcmUgaXNzdWUgcmV2b2x2ZXMgYXJvdW5kIGNvbmN1cnJlbnQgZmlybXdhcmUgbG9hZGluZyDigJMgc3BlY2lmaWNhbGx5LCB3aGF0IGhhcHBlbnMgd2hlbiB0d28gdGhyZWFkcyB0cnkgdG8gZ3JhYiB0aGUgc2FtZSBmaXJtd2FyZSBzaW11bHRhbmVvdXNseS4gSWYgYGFsbG9jX2xvb2t1cF9md19wcml2YCByZXR1cm5zIGEgcG9zaXRpdmUgdmFsdWUsIGluZGljYXRpbmcgYW5vdGhlciB0aHJlYWQgaXMgYWxyZWFkeSBvbiB0aGUgY2FzZSwgaXQgdGhlbiB3YWl0cyBvbiB0aGUgZmlybXdhcmUgc3RhdGUgdXNpbmcgYGZ3X3N0YXRlX3dhaXQoZndfcHJpdilgLgoKVGhlIGNydWNpYWwgcGFydCBpcyB0aGUgY2hlY2sgYWZ0ZXIgdGhlIHdhaXQuIElmIGBmd19zdGF0ZV93YWl0YCBzdWNjZWVkcyAocmV0dXJucyAwKSwgdGhlIGNvZGUgbm93ICpleHBsaWNpdGx5KiBjaGVja3MgaWYgYGZ3X3ByaXYtJmd0O3NpemVgIGlzIHplcm8uIElmIGl0ICppcyogemVybywgdGhhdCBtZWFucyB0aGUgY29uY3VycmVudCBsb2FkIGVpdGhlciBmYWlsZWQgb3IsIG1vcmUgcHJvYmxlbWF0aWNhbGx5LCByZXN1bHRlZCBpbiBhbiBlbXB0eSBmaXJtd2FyZS4gVGhlIHByZXZpb3VzIGJlaGF2aW9yIHdhcyB0byBoYXBwaWx5IGhhbmQgb3ZlciBhIGZpcm13YXJlIG9iamVjdCBvZiBzaXplIHplcm8gd2l0aG91dCBpbmRpY2F0aW5nIGEgZmFpbHVyZS4gVGhpcywgYXMgd2Uga25vdywgaXMgYmFkIG5ld3MuIE5vdywgaXQgcmV0dXJucyBgLUVOT0VOVGAgaW4gdGhhdCBzY2VuYXJpby4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBjbGVhciBhbmQgZGlyZWN0IGZpeCBmb3IgYSByYWNlIGNvbmRpdGlvbi4gSXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2Ugc2hvdWxkIGZ1enouCgpNeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGZvbGxvd2luZyBzeW1ib2xzOiBgcmVxdWVzdF9maXJtd2FyZWAsIGByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdGAsIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAsIGBmaXJtd2FyZV9yZXF1ZXN0X25vd2FybmAsIGByZXF1ZXN0X2Zpcm13YXJlX2ludG9fYnVmYCwgYW5kIGByZXF1ZXN0X3BhcnRpYWxfZmlybXdhcmVfaW50b19idWZgLgoKUmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLCBgRldfTE9BREVSX1VTRVJfSEVMUEVSYCBhbmQgYEZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS2AgYXJlIHRoZSBtb3N0IHJlbGV2YW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIGFyZSBlbmFibGVkLCBhcyB0aGlzIGlzIHRoZSBwYXRoIHdoZXJlIHRoZSBlbXB0eSBmaXJtd2FyZSBjb3VsZCBiZSBsb2FkZWQuIEkmIzM5O2xsIGFsc28gYWRkIGBGV19MT0FERVJfQ09NUFJFU1NgLCBgRldfTE9BREVSX0NPTVBSRVNTX1haYCwgYW5kIGBGV19MT0FERVJfQ09NUFJFU1NfWlNURGAgdG8gZW5hYmxlIGNvbXByZXNzZWQgZmlybXdhcmUgc3VwcG9ydCwgc2luY2UgdGhhdCBjb3VsZCB0cmlnZ2VyIGRpZmZlcmVudCBjb2RlcGF0aHMuCgpTbywgdG8gc3VtbWFyaXplIG15IHJlc3BvbnNlIGZvciBmdXp6aW5nLCBJJiMzOTtkIHNheToKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlCiogICAqKkZvY3VzU3ltYm9sczoqKiBgcmVxdWVzdF9maXJtd2FyZWAsIGByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdGAsIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAsIGBmaXJtd2FyZV9yZXF1ZXN0X25vd2FybmAsIGByZXF1ZXN0X2Zpcm13YXJlX2ludG9fYnVmYCwgYHJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1ZmAKKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgRldfTE9BREVSX1VTRVJfSEVMUEVSYCwgYEZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS2AsIGBGV19MT0FERVJfQ09NUFJFU1NgLCBgRldfTE9BREVSX0NPTVBSRVNTX1haYCwgYEZXX0xPQURFUl9DT01QUkVTU19aU1REYAoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGNyaXRpY2FsIGNvbmN1cnJlbmN5IGlzc3VlIHdoZXJlIGNvbmN1cnJlbnQgZmlybXdhcmUgcmVxdWVzdHMgY291bGQgbGVhZCB0byB6ZXJvLXNpemVkIGZpcm13YXJlIG9iamVjdHMgYW5kIGluY29ycmVjdCBlcnJvciBoYW5kbGluZywgdGhpcyBpcyBhIGNvcmUgZmlybXdhcmUgbG9hZGVyIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZXX0xPQURFUl9VU0VSX0hFTFBFUiYjMzQ7LAogICAgJiMzNDtGV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXF1ZXN0X2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfbm93YWl0JiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfZGlyZWN0JiMzNDssCiAgICAmIzM0O2Zpcm13YXJlX3JlcXVlc3Rfbm93YXJuJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfaW50b19idWYmIzM0OywKICAgICYjMzQ7cmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjb3JlIGZpcm13YXJlIGxvYWRlciB3aGVyZSBjb25jdXJyZW50IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBmaXJtd2FyZSBjb3VsZCByZXN1bHQgaW4gcmV0dXJuaW5nIGEgZmlybXdhcmUgb2JqZWN0IHdpdGggc2l6ZSAwIGlmIHRoZSBjb25jdXJyZW50IGxvYWQgZmFpbGVkIG9yIHJlc3VsdGVkIGluIGFuIGVtcHR5IGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZXX0xPQURFUl9VU0VSX0hFTFBFUiYjMzQ7LAogICAgJiMzNDtGV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXF1ZXN0X2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfbm93YWl0JiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfZGlyZWN0JiMzNDssCiAgICAmIzM0O2Zpcm13YXJlX3JlcXVlc3Rfbm93YXJuJiMzNDssCiAgICAmIzM0O3JlcXVlc3RfZmlybXdhcmVfaW50b19idWYmIzM0OywKICAgICYjMzQ7cmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjb3JlIGZpcm13YXJlIGxvYWRlciB3aGVyZSBjb25jdXJyZW50IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBmaXJtd2FyZSBjb3VsZCByZXN1bHQgaW4gcmV0dXJuaW5nIGEgZmlybXdhcmUgb2JqZWN0IHdpdGggc2l6ZSAwIGlmIHRoZSBjb25jdXJyZW50IGxvYWQgZmFpbGVkIG9yIHJlc3VsdGVkIGluIGFuIGVtcHR5IGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0ODoxMy45MzI2OTgzNTRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTI2NDY1MjE2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGV19MT0FERVJfVVNFUl9IRUxQRVJcIixcbiAgICBcIkZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlcXVlc3RfZmlybXdhcmVcIixcbiAgICBcInJlcXVlc3RfZmlybXdhcmVfbm93YWl0XCIsXG4gICAgXCJyZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdFwiLFxuICAgIFwiZmlybXdhcmVfcmVxdWVzdF9ub3dhcm5cIixcbiAgICBcInJlcXVlc3RfZmlybXdhcmVfaW50b19idWZcIixcbiAgICBcInJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1ZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjb3JlIGZpcm13YXJlIGxvYWRlciB3aGVyZSBjb25jdXJyZW50IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBmaXJtd2FyZSBjb3VsZCByZXN1bHQgaW4gcmV0dXJuaW5nIGEgZmlybXdhcmUgb2JqZWN0IHdpdGggc2l6ZSAwIGlmIHRoZSBjb25jdXJyZW50IGxvYWQgZmFpbGVkIG9yIHJlc3VsdGVkIGluIGFuIGVtcHR5IGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQ4OjEzLjkzMjcwODEwNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwMTM4OTM5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI1MmZlODNjMDkyZmQ2YjAzYjVjNGFlZDI0NTEwNjg5ZGNlM2I1NTNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwOTo0ODoxMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYyBiL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXFxuaW5kZXggMjQyMTNhMGVhODMxNy4uYjE1MjFhMWRhMTMyYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uY1xcbisrKyBiL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXFxuQEAgLTc3MSw2ICs3NzEsOCBAQCBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlKHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsIGNvbnN0IGNoYXIgKm5hbWUsXFxuIFxcdGlmIChyZXQgXFx1MDAzZSAwKSB7XFxuIFxcdFxcdHJldCA9IGZ3X3N0YXRlX3dhaXQoZndfcHJpdik7XFxuIFxcdFxcdGlmICghcmV0KSB7XFxuK1xcdFxcdFxcdGlmICghZndfcHJpdi1cXHUwMDNlc2l6ZSlcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuIFxcdFxcdFxcdGZ3X3NldF9wYWdlX2RhdGEoZndfcHJpdiwgZmlybXdhcmUpO1xcbiBcXHRcXHRcXHRyZXR1cm4gMDsgLyogYXNzaWduZWQgKi9cXG4gXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0ODoxNS4xMzUxMjk5M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUwMDYyMjA0Njc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZXX0xPQURFUl9VU0VSX0hFTFBFUlwiLFxuICAgIFwiRldfTE9BREVSX1VTRVJfSEVMUEVSX0ZBTExCQUNLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVxdWVzdF9maXJtd2FyZVwiLFxuICAgIFwicmVxdWVzdF9maXJtd2FyZV9ub3dhaXRcIixcbiAgICBcInJlcXVlc3RfZmlybXdhcmVfZGlyZWN0XCIsXG4gICAgXCJmaXJtd2FyZV9yZXF1ZXN0X25vd2FyblwiLFxuICAgIFwicmVxdWVzdF9maXJtd2FyZV9pbnRvX2J1ZlwiLFxuICAgIFwicmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNvcmUgZmlybXdhcmUgbG9hZGVyIHdoZXJlIGNvbmN1cnJlbnQgcmVxdWVzdHMgZm9yIHRoZSBzYW1lIGZpcm13YXJlIGNvdWxkIHJlc3VsdCBpbiByZXR1cm5pbmcgYSBmaXJtd2FyZSBvYmplY3Qgd2l0aCBzaXplIDAgaWYgdGhlIGNvbmN1cnJlbnQgbG9hZCBmYWlsZWQgb3IgcmVzdWx0ZWQgaW4gYW4gZW1wdHkgZmlybXdhcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUga2VybmVsIHN1YnN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjUyZmU4M2MwOTJmZDZiMDNiNWM0YWVkMjQ1MTA2ODlkY2UzYjU1M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDk6NDg6MTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYyBiL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXG5pbmRleCAyNDIxM2EwZWE4MzE3Li5iMTUyMWExZGExMzJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmNcbisrKyBiL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXG5AQCAtNzcxLDYgKzc3MSw4IEBAIF9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmUoc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcbiBcdGlmIChyZXQgXHUwMDNlIDApIHtcbiBcdFx0cmV0ID0gZndfc3RhdGVfd2FpdChmd19wcml2KTtcbiBcdFx0aWYgKCFyZXQpIHtcbitcdFx0XHRpZiAoIWZ3X3ByaXYtXHUwMDNlc2l6ZSlcbitcdFx0XHRcdHJldHVybiAtRU5PRU5UO1xuIFx0XHRcdGZ3X3NldF9wYWdlX2RhdGEoZndfcHJpdiwgZmlybXdhcmUpO1xuIFx0XHRcdHJldHVybiAwOyAvKiBhc3NpZ25lZCAqL1xuIFx0XHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0ODoxNS4xMzUxMzE5ODFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzAyMDQzNDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZpcm13YXJlIExvYWRlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlYCBmdW5jdGlvbiB3aXRoaW4gYGRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jYC4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkaXJlY3RseSBpbXBhY3RpbmcgaG93IGZpcm13YXJlIGxvYWRpbmcgaXMgaGFuZGxlZCwgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nLiBUaGUgY2hhbmdlIGludHJvZHVjZXMgYSBjcnVjaWFsIGNoZWNrICphZnRlciogdGhlIGBmd19zdGF0ZV93YWl0YCBjYWxsLiAgRXNzZW50aWFsbHksIGl0J3MgdmVyaWZ5aW5nIHRoYXQgdGhlIGBmd19wcml2LVx1MDAzZXNpemVgIG1lbWJlciBpcyBub24temVybyBiZWZvcmUgcHJvY2VlZGluZy4gSWYgYGZ3X3ByaXYtXHUwMDNlc2l6ZWAgKmlzKiB6ZXJvLCBtZWFuaW5nIHRoZSBmaXJtd2FyZSBpcyBlc3NlbnRpYWxseSBlbXB0eSAob3Igbm90IGZvdW5kKSwgdGhlIGNvZGUgbm93IHJldHVybnMgYC1FTk9FTlRgLiBUaGVuIGBmd19zZXRfcGFnZV9kYXRhYCB3aWxsIG5vdCBydW4gYW5kIHdlIHJldHVybi4gVGhpcyBpbmRpY2F0ZXMgYSBwb3RlbnRpYWwgcHJvYmxlbSB3aXRoIHRoZSBmaXJtd2FyZSBpdHNlbGYsIG9yIHRoZSBsb2FkaW5nIHByb2Nlc3MgZmFpbGVkIHRvIHJldHJpZXZlIGl0cyBzaXplLCB3aGljaCBtYWtlcyBzZW5zZSB0byBhZGRyZXNzLiBSZXR1cm5pbmcgYC1FTk9FTlRgIGlzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGhlcmUsIHNpZ25hbGluZyBhIFwiTm8gc3VjaCBlbnRyeVwiIGVycm9yLCBhcyBleHBlY3RlZCBieSB0aGUgY2FsbGVyIG9mIGBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlYC4gVGhpcyBpcyBhIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBtZWFzdXJlLiBJdCBzaG91bGQgaGVscCBwcmV2ZW50IHBvdGVudGlhbCBpc3N1ZXMgZG93biB0aGUgbGluZSBpZiBhbiBlbXB0eSBvciBpbXByb3Blcmx5IHNpemVkIGZpcm13YXJlIGlzIHNvbWVob3cgcHJvY2Vzc2VkLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb250ZXh0cyB3aGVyZSB0aGlzIGBmd19wcml2YCBzdHJ1Y3R1cmUgaXMgcG9wdWxhdGVkIGFuZCBob3cgdGhlIGBzaXplYCBmaWVsZCBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIHRvIGVuc3VyZSB0aGlzIGNoZWNrIGRvZXMgd2hhdCBpdCBpcyBzdXBwb3NlZCB0by4gQWxzbyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgbWFpbi5jYCB0byBzZWUgdGhlIGludGVuZGVkIGJlaGF2aW9yIGluIGNhc2Ugb2YgdGhlIGVycm9yIGNvZGUgdGhhdCBpcyByZXR1cm5lZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQ4OjE5LjgzNzE4MDA1MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTkyNTY2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTc0MT1zdGF0aWMgaW50XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6NzQyOl9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmUoc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy03NDMtXFx0XFx0XFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIHZvaWQgKmRidWYsIHNpemVfdCBzaXplLFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9ODI5PV9yZXF1ZXN0X2Zpcm13YXJlKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsIGNvbnN0IGNoYXIgKm5hbWUsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy04NjMtXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6ODY0OlxcdHJldCA9IF9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmUoXFx1MDAyNmZ3LCBuYW1lLCBkZXZpY2UsIGJ1Ziwgc2l6ZSxcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy04NjUtXFx0XFx0XFx0XFx0XFx0b2Zmc2V0LCBvcHRfZmxhZ3MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0ODoxOS45MTMxMTAyMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTExNzYwNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OlxuXG4qKkRpdmluZyBpbnRvIEZpcm13YXJlIFJlcXVlc3RzKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZWAgZnVuY3Rpb24sIGFuZCBpdCdzIGZsYWdnZWQgYXMgYSBzdGF0aWMgaGVscGVyLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0J3MgZGVzaWduZWQgdG8gYmUgdXNlZCAqb25seSogd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgdW5pdCDigJMgaW4gdGhpcyBjYXNlLCBgX3JlcXVlc3RfZmlybXdhcmVgLiBJdCdzIHByZXR0eSBjbGVhciB0aGF0IGl0J3MgbWVhbnQgdG8gZG8gc29tZSBwcmVwYXJhdG9yeSB3b3JrLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0J3MgdHJpZ2dlcmluZyBgX3JlcXVlc3RfZmlybXdhcmVgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnRzIGZvciB0aGlzIHdob2xlIHByb2Nlc3MuIFdoZXJlIGFyZSAqdGhvc2UqIGNhbGxzIGNvbWluZyBmcm9tPyBUaW1lIHRvIHRyYWNlIGJhY2sgYW5kIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgZ3JhcGggaGVyZSBpcyBjcnVjaWFsIGZvciBjb21wcmVoZW5kaW5nIHRoZSBjb21wbGV0ZSBzeXN0ZW0gaW50ZXJhY3Rpb24uIEknbSBnb2luZyB0byBmb2xsb3cgdGhlIGNhbGwgc3RhY2sgdG8gc2VlIHRoZSBjb250ZXh0IHdpdGhpbiB3aGljaCB0aGlzIGZpcm13YXJlIHJlcXVlc3QgaXMgZXZlbiBpbml0aWF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MDQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0ODoyMy41MDQyODg2OTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MDU3OTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9yZXF1ZXN0X2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTc0MT1zdGF0aWMgaW50XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6NzQyOl9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmUoc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy03NDMtXFx0XFx0XFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIHZvaWQgKmRidWYsIHNpemVfdCBzaXplLFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9ODI4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzo4Mjk6X3JlcXVlc3RfZmlybXdhcmUoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy04MzAtXFx0XFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy04NjMtXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6ODY0OlxcdHJldCA9IF9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmUoXFx1MDAyNmZ3LCBuYW1lLCBkZXZpY2UsIGJ1Ziwgc2l6ZSxcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy04NjUtXFx0XFx0XFx0XFx0XFx0b2Zmc2V0LCBvcHRfZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9OTQzPXJlcXVlc3RfZmlybXdhcmUoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTk0OS1cXHRfX21vZHVsZV9nZXQoVEhJU19NT0RVTEUpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjk1MDpcXHRyZXQgPSBfcmVxdWVzdF9maXJtd2FyZShmaXJtd2FyZV9wLCBuYW1lLCBkZXZpY2UsIE5VTEwsIDAsIDAsXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTUxLVxcdFxcdFxcdFxcdEZXX09QVF9VRVZFTlQpO1xcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9OTcwPWludCBmaXJtd2FyZV9yZXF1ZXN0X25vd2Fybihjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZSwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTk3Ni1cXHRfX21vZHVsZV9nZXQoVEhJU19NT0RVTEUpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjk3NzpcXHRyZXQgPSBfcmVxdWVzdF9maXJtd2FyZShmaXJtd2FyZSwgbmFtZSwgZGV2aWNlLCBOVUxMLCAwLCAwLFxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTk3OC1cXHRcXHRcXHRcXHRGV19PUFRfVUVWRU5UIHwgRldfT1BUX05PX1dBUk4pO1xcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9OTk1PWludCByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdChjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTAwMC1cXHRfX21vZHVsZV9nZXQoVEhJU19NT0RVTEUpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEwMDE6XFx0cmV0ID0gX3JlcXVlc3RfZmlybXdhcmUoZmlybXdhcmVfcCwgbmFtZSwgZGV2aWNlLCBOVUxMLCAwLCAwLFxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwMDItXFx0XFx0XFx0XFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9OT19XQVJOIHxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEwMTk9aW50IGZpcm13YXJlX3JlcXVlc3RfcGxhdGZvcm0oY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmUsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDI1LVxcdF9fbW9kdWxlX2dldChUSElTX01PRFVMRSk7XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTAyNjpcXHRyZXQgPSBfcmVxdWVzdF9maXJtd2FyZShmaXJtd2FyZSwgbmFtZSwgZGV2aWNlLCBOVUxMLCAwLCAwLFxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwMjctXFx0XFx0XFx0XFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9GQUxMQkFDS19QTEFURk9STSk7XFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMDczPXJlcXVlc3RfZmlybXdhcmVfaW50b19idWYoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwODEtXFx0X19tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKTtcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMDgyOlxcdHJldCA9IF9yZXF1ZXN0X2Zpcm13YXJlKGZpcm13YXJlX3AsIG5hbWUsIGRldmljZSwgYnVmLCBzaXplLCAwLFxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwODMtXFx0XFx0XFx0XFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9OT0NBQ0hFKTtcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTExMDI9cmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlX3AsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMTExLVxcdF9fbW9kdWxlX2dldChUSElTX01PRFVMRSk7XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTExMjpcXHRyZXQgPSBfcmVxdWVzdF9maXJtd2FyZShmaXJtd2FyZV9wLCBuYW1lLCBkZXZpY2UsIGJ1Ziwgc2l6ZSwgb2Zmc2V0LFxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExMTMtXFx0XFx0XFx0XFx0RldfT1BUX1VFVkVOVCB8IEZXX09QVF9OT0NBQ0hFIHxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTExNTc9c3RhdGljIHZvaWQgcmVxdWVzdF9maXJtd2FyZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTE2My1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMTY0OlxcdF9yZXF1ZXN0X2Zpcm13YXJlKFxcdTAwMjZmdywgZndfd29yay1cXHUwMDNlbmFtZSwgZndfd29yay1cXHUwMDNlZGV2aWNlLCBOVUxMLCAwLCAwLFxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExNjUtXFx0XFx0XFx0ICBmd193b3JrLVxcdTAwM2VvcHRfZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTE3OC1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMTc5OnN0YXRpYyBpbnQgX3JlcXVlc3RfZmlybXdhcmVfbm93YWl0KFxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExODAtXFx0c3RydWN0IG1vZHVsZSAqbW9kdWxlLCBib29sIHVldmVudCxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEyNTA9aW50IHJlcXVlc3RfZmlybXdhcmVfbm93YWl0KFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTI1NC17XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTI1NTpcXHRyZXR1cm4gX3JlcXVlc3RfZmlybXdhcmVfbm93YWl0KG1vZHVsZSwgdWV2ZW50LCBuYW1lLCBkZXZpY2UsIGdmcCxcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMjU2LVxcdFxcdFxcdFxcdFxcdGNvbnRleHQsIGNvbnQsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEyNzY9aW50IGZpcm13YXJlX3JlcXVlc3Rfbm93YWl0X25vd2FybihcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEyODAte1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEyODE6XFx0cmV0dXJuIF9yZXF1ZXN0X2Zpcm13YXJlX25vd2FpdChtb2R1bGUsIEZXX0FDVElPTl9VRVZFTlQsIG5hbWUsIGRldmljZSxcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMjgyLVxcdFxcdFxcdFxcdFxcdGdmcCwgY29udGV4dCwgY29udCwgdHJ1ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQ4OjIzLjYxMDM1MTQ1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MzU2MjE3NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRmlybXdhcmUgTG9hZGVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYF9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmVgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBmZWVkcyBpbnRvIGBfcmVxdWVzdF9maXJtd2FyZWAsIHdoaWNoIGlzICp0aGUqIGNvcmUgb2YgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gSSBzZWUgdGhlIG1vZGlmaWNhdGlvbjogdGhlIGNvZGUgaXMgY2hlY2tpbmcgYGZ3X3ByaXYtXHUwMDNlc2l6ZWAgKmFmdGVyKiBgZndfc3RhdGVfd2FpdGAgcmV0dXJucyBzdWNjZXNzZnVsbHkuIFRoZSBrZXkgaXMgdGhhdCBpZiBgZndfc3RhdGVfd2FpdGAgcmV0dXJucyBzdWNjZXNzICgwKSBidXQgdGhlIGZpcm13YXJlIHNpemUsIGBmd19wcml2LVx1MDAzZXNpemVgLCBpcyB6ZXJvLCBpdCdzIHJldHVybmluZyBgLUVOT0VOVGAuIFRoYXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlOyBpdCBhbHRlcnMgdGhlIGJlaGF2aW9yIG9mIHRoZSBjb3JlIGZpcm13YXJlIGxvYWRpbmcgbG9naWMuIFRoaXMgaXMgcG90ZW50aWFsbHkgaW1wb3J0YW50LlxuXG5MZXQncyB0aGluayBhYm91dCB0aGUgaW1wbGljYXRpb25zLiBUaGlzIGZpcm13YXJlIGxvYWRlciBpcyBmdW5kYW1lbnRhbCwgcmlnaHQ/IEl0J3MgdG91Y2hlZCBieSBhIHNsZXcgb2YgZHJpdmVycyBhbmQgc3Vic3lzdGVtcywgc28gdGhlIGZ1bmN0aW9ucyB0byBjb25zaWRlciB3b3VsZCBiZTogYHJlcXVlc3RfZmlybXdhcmVgLCBgcmVxdWVzdF9maXJtd2FyZV9ub3dhaXRgLCBgcmVxdWVzdF9maXJtd2FyZV9kaXJlY3RgLCBgZmlybXdhcmVfcmVxdWVzdF9ub3dhcm5gLCBgZmlybXdhcmVfcmVxdWVzdF9wbGF0Zm9ybWAsIGByZXF1ZXN0X2Zpcm13YXJlX2ludG9fYnVmYCwgYW5kIGByZXF1ZXN0X3BhcnRpYWxfZmlybXdhcmVfaW50b19idWZgLiBXYWl0LCBgcmVxdWVzdF9maXJtd2FyZWAgaXMgKnN1cGVyKiBjb21tb24uIFRoYXQncyBhIGxvdCBvZiBwb3RlbnRpYWwgaW1wYWN0LlxuXG5SaWdodCwgc28gdG8gdW5kZXJzdGFuZCB0aGUgcmVhY2ggb2YgdGhpcyBwYXRjaCwgSSBzaG91bGQgY2hlY2sgd2hldGhlciB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IGFmZmVjdCB0aGlzIGJlaGF2aW9yLiBMZXQncyBzZWUuLi4gYWgsIHRoZSBmaXJtd2FyZSBsb2FkZXIgaXMgZW5hYmxlZCBieSBgQ09ORklHX0ZXX0xPQURFUmAuIFRoYXQncyB0aGUgYmFzZWxpbmUsIGJ1dCBhcmUgdGhlcmUgb3RoZXIgb3B0aW9ucyB0aGF0IG1pZ2h0IGludGVyYWN0PyBJIG5lZWQgdG8gbG9vayBpbnRvIHdoZXRoZXIgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIGludm9sdmVkIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2OTQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6NDg6MjkuMjQ1OTc2NDIyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1Mzc5NzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZXX0xPQURFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnPTI9bWVudSBcXFwiRmlybXdhcmUgbG9hZGVyXFxcIlxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0zLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzo0OmNvbmZpZyBGV19MT0FERVJcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiRmlybXdhcmUgbG9hZGluZyBmYWNpbGl0eVxcXCIgaWYgRVhQRVJUXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjY6XFx0c2VsZWN0IENSWVBUT19MSUJfU0hBMjU2IGlmIEZXX0xPQURFUl9ERUJVR1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy03LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTI3LVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoyODpjb25maWcgRldfTE9BREVSX0RFQlVHXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTI5LVxcdGJvb2wgXFxcIkxvZyBmaWxlbmFtZXMgYW5kIGNoZWNrc3VtcyBmb3IgbG9hZGVkIGZpcm13YXJlXFxcIlxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0zMC1cXHRkZXBlbmRzIG9uIERZTkFNSUNfREVCVUdcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MzE6XFx0ZGVwZW5kcyBvbiBGV19MT0FERVJcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MzI6XFx0ZGVmYXVsdCBGV19MT0FERVJcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMzMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTM3LVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzozODpjb25maWcgUlVTVF9GV19MT0FERVJfQUJTVFJBQ1RJT05TXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTM5LVxcdGJvb2wgXFxcIlJ1c3QgRmlybXdhcmUgTG9hZGVyIGFic3RyYWN0aW9uc1xcXCJcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNDAtXFx0ZGVwZW5kcyBvbiBSVVNUXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjQxOlxcdHNlbGVjdCBGV19MT0FERVJcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNDItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTQ0LVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzo0NTppZiBGV19MT0FERVJcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNDYtXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjQ3OmNvbmZpZyBGV19MT0FERVJfUEFHRURfQlVGXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTQ4LVxcdGJvb2xcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNDktXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjUwOmNvbmZpZyBGV19MT0FERVJfU1lTRlNcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNTEtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnPTUzPWNvbmZpZyBFWFRSQV9GSVJNV0FSRVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTYwLVxcdCAgb3ZlciBmaXJtd2FyZSBsb29rdXBzIHVzaW5nIHlvdXIgZmlsZXN5c3RlbSBvdmVyIHRoZSBzdXBwb3J0ZWRcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6NjE6XFx0ICAvbGliL2Zpcm13YXJlIHBhdGhzIGRvY3VtZW50ZWQgb24gQ09ORklHX0ZXX0xPQURFUi5cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctNjItXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc9ODY9Y29uZmlnIEVYVFJBX0ZJUk1XQVJFX0RJUlxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTkzLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzo5NDpjb25maWcgRldfTE9BREVSX1VTRVJfSEVMUEVSXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTk1LVxcdGJvb2wgXFxcIkVuYWJsZSB0aGUgZmlybXdhcmUgc3lzZnMgZmFsbGJhY2sgbWVjaGFuaXNtXFxcIlxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzo5NjpcXHRzZWxlY3QgRldfTE9BREVSX1NZU0ZTXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjk3OlxcdHNlbGVjdCBGV19MT0FERVJfUEFHRURfQlVGXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTk4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0xNjYtXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjE2Nzpjb25maWcgRldfTE9BREVSX1VTRVJfSEVMUEVSX0ZBTExCQUNLXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE2OC1cXHRib29sIFxcXCJGb3JjZSB0aGUgZmlybXdhcmUgc3lzZnMgZmFsbGJhY2sgbWVjaGFuaXNtIHdoZW4gcG9zc2libGVcXFwiXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjE2OTpcXHRkZXBlbmRzIG9uIEZXX0xPQURFUl9VU0VSX0hFTFBFUlxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0xNzAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE4MS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MTgyOmNvbmZpZyBGV19MT0FERVJfQ09NUFJFU1NcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMTgzLVxcdGJvb2wgXFxcIkVuYWJsZSBjb21wcmVzc2VkIGZpcm13YXJlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMTkyLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoxOTM6aWYgRldfTE9BREVSX0NPTVBSRVNTXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjE5NDpjb25maWcgRldfTE9BREVSX0NPTVBSRVNTX1haXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE5NS1cXHRib29sIFxcXCJFbmFibGUgWFotY29tcHJlc3NlZCBmaXJtd2FyZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoxOTY6XFx0c2VsZWN0IEZXX0xPQURFUl9QQUdFRF9CVUZcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMTk3LVxcdHNlbGVjdCBYWl9ERUNcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yMDMtXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjIwNDpjb25maWcgRldfTE9BREVSX0NPTVBSRVNTX1pTVERcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjA1LVxcdGJvb2wgXFxcIkVuYWJsZSBaU1RELWNvbXByZXNzZWQgZmlybXdhcmUgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yMDktXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjIxMDplbmRpZiAjIEZXX0xPQURFUl9DT01QUkVTU1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yMTEtXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc9MjI0PWNvbmZpZyBGV19VUExPQURcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjI1LVxcdGJvb2wgXFxcIkVuYWJsZSB1c2VycyB0byBpbml0aWF0ZSBmaXJtd2FyZSB1cGRhdGVzIHVzaW5nIHN5c2ZzXFxcIlxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoyMjY6XFx0c2VsZWN0IEZXX0xPQURFUl9TWVNGU1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzoyMjc6XFx0c2VsZWN0IEZXX0xPQURFUl9QQUdFRF9CVUZcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMjI4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yMzctXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjIzODplbmRpZiAjIEZXX0xPQURFUlxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0yMzktZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0ODoyOS4zMTEzNjAyODZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDA4MzI5MDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZpcm13YXJlIExvYWRpbmcgRWRnZSBDYXNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MsIGFuZCBteSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBGV19MT0FERVJgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIOKAkyBpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdCwgd2hpY2ggaXMgZ29vZC4gVGhhdCBzZXRzIHRoZSBzdGFnZS4gQnV0IG5vdyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIGZhaWx1cmVzLCBwYXJ0aWN1bGFybHkgd2l0aGluIGBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlYC4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBJJ20gc2VlaW5nIGEgc2NlbmFyaW8gd2hlcmUgYGZ3X3N0YXRlX3dhaXRgIHJldHVybnMgYSBzdWNjZXNzIGNvZGUgKDApLCAqYnV0KiB0aGUgZmlybXdhcmUgc2l6ZSAoYGZ3X3ByaXYtXHUwMDNlc2l6ZWApIGVuZHMgdXAgYmVpbmcgemVyby4gQWxhcm0gYmVsbHMhXG5cblRoaXMgbGlrZWx5IGluZGljYXRlcyBzb21ldGhpbmcgd2VudCB3cm9uZywgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aHkqLiBNeSBicmFpbiBpcyBpbW1lZGlhdGVseSBqdW1waW5nIHRvIGEgY291cGxlIG9mIHBvc3NpYmlsaXRpZXM6IHBlcmhhcHMgYSBjb25jdXJyZW50IGZpcm13YXJlIGxvYWQgY29tcGxldGVkLCBidXQgZmFpbGVkIHNvbWVob3csIGxlYXZpbmcgdXMgd2l0aCBub3RoaW5nLiBPciwgbWF5YmUgdGhlIHVzZXIgaGVscGVyIGZhbGxiYWNrIG1lY2hhbmlzbSB3YXMgdHJpZ2dlcmVkLCBhbmQgZm9yIHNvbWUgcmVhc29uLCBpdCBhbHNvIHByb3ZpZGVkIGFuIGVtcHR5IGZpcm13YXJlLlxuXG5Tbywgd2hlcmUgZG8gSSBnbyBuZXh0PyBSaWdodCwgdGltZSB0byBkaWcgZGVlcGVyIGludG8gdGhhdCBgZndfc3RhdGVfd2FpdGAgZnVuY3Rpb24gaXRzZWxmLiBVbmRlcnN0YW5kaW5nIGhvdyBpdCBjYW4gcmV0dXJuIHN1Y2Nlc3MgKmRlc3BpdGUqIGEgemVyby1zaXplZCBmaXJtd2FyZSBpcyBjcnVjaWFsIGhlcmUgdG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgcm9vdCBjYXVzZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIGZsb3cgd2l0aGluIHRoYXQgZnVuY3Rpb24gYW5kIHRoZSBjb25kaXRpb25zIGl0J3MgY2hlY2tpbmcgdG8gZnVsbHkgZGlhZ25vc2UgdGhpcyBzaXR1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MDIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6NDg6MzUuMzE5Njk1NzQyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjU0MTU2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmd19zdGF0ZV93YWl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvZmFsbGJhY2suYz00Mj1zdGF0aWMgaW5saW5lIGludCBmd19zeXNmc193YWl0X3RpbWVvdXQoc3RydWN0IGZ3X3ByaXYgKmZ3X3ByaXYsICBsb25nIHRpbWVvdXQpXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9mYWxsYmFjay5jLTQzLXtcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL2ZhbGxiYWNrLmM6NDQ6XFx0cmV0dXJuIF9fZndfc3RhdGVfd2FpdF9jb21tb24oZndfcHJpdiwgdGltZW91dCk7XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9mYWxsYmFjay5jLTQ1LX1cXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvZmlybXdhcmUuaD05MT1zdGF0aWMgaW5saW5lIGJvb2wgX19md19zdGF0ZV9jaGVjayhzdHJ1Y3QgZndfcHJpdiAqZndfcHJpdixcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvZmlybXdhcmUuaC05OC1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL2Zpcm13YXJlLmg6OTk6c3RhdGljIGlubGluZSBpbnQgX19md19zdGF0ZV93YWl0X2NvbW1vbihzdHJ1Y3QgZndfcHJpdiAqZndfcHJpdiwgbG9uZyB0aW1lb3V0KVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvZmlybXdhcmUuaC0xMDAte1xcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9OTg9dm9pZCBmd19zdGF0ZV9pbml0KHN0cnVjdCBmd19wcml2ICpmd19wcml2KVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTA1LVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEwNjpzdGF0aWMgaW5saW5lIGludCBmd19zdGF0ZV93YWl0KHN0cnVjdCBmd19wcml2ICpmd19wcml2KVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwNy17XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTA4OlxcdHJldHVybiBfX2Z3X3N0YXRlX3dhaXRfY29tbW9uKGZ3X3ByaXYsIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTtcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDktfVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9NzQyPV9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmUoc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTc3MS1cXHRpZiAocmV0IFxcdTAwM2UgMCkge1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjc3MjpcXHRcXHRyZXQgPSBmd19zdGF0ZV93YWl0KGZ3X3ByaXYpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTc3My1cXHRcXHRpZiAoIXJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0ODozNS40MDYyNDUyMjRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMxOTM2NzgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGaXJtd2FyZSBMb2FkZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZWAuIEl0J3MgYSBwcmV0dHkgY2VudHJhbCBmdW5jdGlvbiwgcmVhY2hhYmxlIHRocm91Z2ggdGhlIGNvbW1vbiBgcmVxdWVzdF9maXJtd2FyZWAgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLCB3aGljaCBhcmUgYWxsIG92ZXIgdGhlIHBsYWNlIGluIGRyaXZlciBjb2RlLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIHNpbXBsZSBlbm91Z2g6IGl0J3MgYWRkaW5nIGEgY2hlY2sgZm9yIGAhZndfcHJpdi1cdTAwM2VzaXplYCBhbmQgcmV0dXJuaW5nIGAtRU5PRU5UYCBpZiB0aGUgZmlybXdhcmUgc2l6ZSBpcyB6ZXJvLiBCYXNpY2FsbHksIHRoaXMgcHJldmVudHMgdXMgZnJvbSBhY2NpZGVudGFsbHkgdXNpbmcgb3IgZ2V0dGluZyBhIGZpcm13YXJlIG9iamVjdCB0aGF0IGhhcyBhIHplcm8gc2l6ZSwgZXZlbiBpZiBgZndfc3RhdGVfd2FpdGAgc3VjY2VlZHMuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZW5lZml0IGZyb20gZnV6emluZy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0cyBvbiB0aG9zZSBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBkaXJlY3RseSBjYWxsIGBfcmVxdWVzdF9maXJtd2FyZV9wcmVwYXJlYCBvciBgX3JlcXVlc3RfZmlybXdhcmVgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cy4gVGltZSB0byBkaWcgaW50byBgZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmNgIGFuZCBnZXQgYSBsaXN0IG9mIHRob3NlIGNyaXRpY2FsIHN5bWJvbHMuIFRoYXQnbGwgYmUgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXZlbG9waW5nIHNvbWUgdGFyZ2V0ZWQgZnV6eiBoYXJuZXNzZXMuIFRoaXMgd2lsbCBnaXZlIHVzIGEgZ29vZCB0ZXN0IHRvIHNlZSBpZiB0aGUgcGF0Y2ggbWFrZXMgYSBkaWZmZXJlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODQ0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQ4OjQwLjcyNTYxNTg0NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE2NjQ1NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz05NDM9cmVxdWVzdF9maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmaXJtd2FyZV9wLCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTU0LX1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzo5NTU6RVhQT1JUX1NZTUJPTChyZXF1ZXN0X2Zpcm13YXJlKTtcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy05NTYtXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz05NzA9aW50IGZpcm13YXJlX3JlcXVlc3Rfbm93YXJuKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlLCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtOTgxLX1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzo5ODI6RVhQT1JUX1NZTUJPTF9HUEwoZmlybXdhcmVfcmVxdWVzdF9ub3dhcm4pO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTk4My1cXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTk5NT1pbnQgcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwMDYtfVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEwMDc6RVhQT1JUX1NZTUJPTF9HUEwocmVxdWVzdF9maXJtd2FyZV9kaXJlY3QpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwMDgtXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMDE5PWludCBmaXJtd2FyZV9yZXF1ZXN0X3BsYXRmb3JtKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZpcm13YXJlLFxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTAzMC19XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTAzMTpFWFBPUlRfU1lNQk9MX0dQTChmaXJtd2FyZV9yZXF1ZXN0X3BsYXRmb3JtKTtcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDMyLVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9MTA0NT1pbnQgZmlybXdhcmVfcmVxdWVzdF9jYWNoZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDU0LX1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMDU1OkVYUE9SVF9TWU1CT0xfR1BMKGZpcm13YXJlX3JlcXVlc3RfY2FjaGUpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwNTYtXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMDczPXJlcXVlc3RfZmlybXdhcmVfaW50b19idWYoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEwODYtfVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEwODc6RVhQT1JUX1NZTUJPTChyZXF1ZXN0X2Zpcm13YXJlX2ludG9fYnVmKTtcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMDg4LVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9MTEwMj1yZXF1ZXN0X3BhcnRpYWxfZmlybXdhcmVfaW50b19idWYoY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZmlybXdhcmVfcCxcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExMTctfVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjExMTg6RVhQT1JUX1NZTUJPTChyZXF1ZXN0X3BhcnRpYWxfZmlybXdhcmVfaW50b19idWYpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExMTktXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMTI0PXZvaWQgcmVsZWFzZV9maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTEzMS19XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM6MTEzMjpFWFBPUlRfU1lNQk9MKHJlbGVhc2VfZmlybXdhcmUpO1xcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTExMzMtXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYz0xMjUwPWludCByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdChcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEyNTgtfVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEyNTk6RVhQT1JUX1NZTUJPTChyZXF1ZXN0X2Zpcm13YXJlX25vd2FpdCk7XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTI2MC1cXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jPTEyNzY9aW50IGZpcm13YXJlX3JlcXVlc3Rfbm93YWl0X25vd2FybihcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jLTEyODMtfVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvbWFpbi5jOjEyODQ6RVhQT1JUX1NZTUJPTF9HUEwoZmlybXdhcmVfcmVxdWVzdF9ub3dhaXRfbm93YXJuKTtcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMjg1LVxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmM9MTI5OT12b2lkIHJlcXVlc3RfZmlybXdhcmVfbm93YWl0X2NhbmNlbChzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIHZvaWQgKmNvbnRleHQsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYy0xMzIxLX1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL21haW4uYzoxMzIyOkVYUE9SVF9TWU1CT0xfR1BMKHJlcXVlc3RfZmlybXdhcmVfbm93YWl0X2NhbmNlbCk7XFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmMtMTMyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6NDg6NDAuNzk3Mjg0NzE4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzMDU2MzU2ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZpcm13YXJlIExvYWRpbmcgZm9yIFZ1bG5lcmFiaWxpdHkgUmVzZWFyY2gqKlxuXG5Pa2F5LCBteSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSBmaXJtd2FyZSByZXF1ZXN0IHN5bWJvbHM6IGByZXF1ZXN0X2Zpcm13YXJlYCwgYHJlcXVlc3RfZmlybXdhcmVfbm93YWl0YCwgYHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0YCwgYGZpcm13YXJlX3JlcXVlc3Rfbm93YXJuYCwgYHJlcXVlc3RfZmlybXdhcmVfaW50b19idWZgLCBhbmQgYHJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1ZmAuIEkga25vdyB0aGF0IGByZXF1ZXN0X2Zpcm13YXJlYCBpbiBwYXJ0aWN1bGFyIGlzIGEgaGlnaC10cmFmZmljIGFyZWEsIGVzcGVjaWFsbHkgZHVyaW5nIHN5c3RlbSBib290LCBhbmQgdGhhdCBtYWtlcyBpdCBhIHByaW1lIHRhcmdldC4gVGhlIGJlYXV0eSBpcywgc3l6a2FsbGVyIGNhbiBwcm9iZSBpdCB0aHJvdWdoIHZhcmlvdXMgcm91dGVzIGxpa2UgcHNldWRvLWRldmljZXMgb3Igc3lzZnMsIGFuZCB0aGF0J3MgZXhhY3RseSB3aGF0IEknbSBpbnRlcmVzdGVkIGluIGV4cGxvaXRpbmcgZm9yIGZ1enppbmcgcHVycG9zZXMuXG5cbldhaXQgYSBzZWNvbmTigKYgdGhlIGZpcm13YXJlIGxvYWRlciAqaXRzZWxmKiBoYXMgYSBzeXNmcyBpbnRlcmZhY2UgZm9yIGxvYWRpbmcgZmlybXdhcmUuIEJpbmdvISBUaGF0J3MgYSBkaXJlY3QgZW50cnkgcG9pbnQuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgY29uZmlndXJhdGlvbiBhcm91bmQgdGhhdCBpbnRlcmZhY2UuIExldCdzIHNlZS4uLiBgRldfTE9BREVSX1NZU0ZTYOKApiBhaGEsIGl0J3Mgc2VsZWN0ZWQgYnkgYEZXX0xPQURFUl9VU0VSX0hFTFBFUmAgKmFuZCogYEZXX1VQTE9BRGAuIE5vdywgd2hhdCBkb2VzIGBGV19MT0FERVJfVVNFUl9IRUxQRVJgIGRvIHNwZWNpZmljYWxseT8gVGhhdCdzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NjgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6NDg6NDkuMTAyOTI3OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE2NzA5NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRldfTE9BREVSX1VTRVJfSEVMUEVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc9ODY9Y29uZmlnIEVYVFJBX0ZJUk1XQVJFX0RJUlxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTkzLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZzo5NDpjb25maWcgRldfTE9BREVSX1VTRVJfSEVMUEVSXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTk1LVxcdGJvb2wgXFxcIkVuYWJsZSB0aGUgZmlybXdhcmUgc3lzZnMgZmFsbGJhY2sgbWVjaGFuaXNtXFxcIlxcbi0tXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE2Ni1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MTY3OmNvbmZpZyBGV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0tcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMTY4LVxcdGJvb2wgXFxcIkZvcmNlIHRoZSBmaXJtd2FyZSBzeXNmcyBmYWxsYmFjayBtZWNoYW5pc20gd2hlbiBwb3NzaWJsZVxcXCJcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6MTY5OlxcdGRlcGVuZHMgb24gRldfTE9BREVSX1VTRVJfSEVMUEVSXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTE3MC1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQ4OjQ5LjE5NDYwNjA1MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTAzMjY2OTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZpcm13YXJlIExvYWRpbmcgT3B0aW1pemF0aW9uKipcblxuT2theSwgaGVyZSdzIHRoZSBkZWFsLiBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHdoZXJlIGBmd19zdGF0ZV93YWl0YCBtaWdodCByZXR1cm4gMCB3aXRoIGFuIGVtcHR5IHNpemUgaWYgdGhlIHVzZXIgaGVscGVyIHdyaXRlcyB6ZXJvIGJ5dGVzLiBUaGF0J3MgYSBjbGFzc2ljIGBzeXNmc2AgZmFsbGJhY2sgc2NlbmFyaW8sIGFuZCB0aGUga2V5IGhlcmUgaXMgYEZXX0xPQURFUl9VU0VSX0hFTFBFUmAuIEVuYWJsaW5nIHRoYXQsIGFuZCBhbHNvIGl0cyBmYWxsYmFjayBjb3VudGVycGFydCwgYEZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS2AsIHNlZW1zIGxpa2UgdGhlIHJpZ2h0IG1vdmUgdG8gY292ZXIgYWxsIGJhc2VzIGFuZCBoYW5kbGUgdGhvc2UgZWRnZSBjYXNlcyBncmFjZWZ1bGx5LlxuXG5Ob3csIGEgcXVpY2sgc2FuaXR5IGNoZWNrOiBkbyB3ZSAqcmVhbGx5KiBuZWVkIGBGV19MT0FERVJgIGl0c2VsZj8gSG1tLCBpdCdzIHNldCB0byBcInlcIiBieSBkZWZhdWx0LCBzbyBwcmVzdW1hYmx5LCB3ZSBkby4gRXhjZWxsZW50LiBUaGlzIG1lYW5zIGVuYWJsaW5nIGBGV19MT0FERVJfVVNFUl9IRUxQRVJgIGFuZCBgRldfTE9BREVSX1VTRVJfSEVMUEVSX0ZBTExCQUNLYCBpcyBhIHNvdW5kIGNvbmZpZ3VyYXRpb24gZm9yIGNvbXByZWhlbnNpdmUgY292ZXJhZ2UsIGVzcGVjaWFsbHkgZm9yIHRob3NlIHVzZXItc3BhY2UgaW50ZXJhY3Rpb25zLlxuXG5UbyBtYWtlIGFic29sdXRlbHkgc3VyZSwgSSdtIGdvaW5nIHRvIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBjb2RlIHdpdGhpbiBgX3JlcXVlc3RfZmlybXdhcmVfcHJlcGFyZWAuIEp1c3QgdG8gcmVjb25maXJtIHRoaXMgYXBwcm9hY2ggYWxpZ25zIHdpdGggdGhlIGV4aXN0aW5nIGxvZ2ljIHRoZXJlLCBhbmQgdGhhdCBJJ20gbm90IG92ZXJsb29raW5nIGFueXRoaW5nIGNyaXRpY2FsLiBBbHdheXMgZ29vZCB0byBkb3VibGUtY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTczLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQ4OjU2LjI5Nzg3NTU3NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzUwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzUwOlxcdFxcdCpmaXJtd2FyZV9wID0gZmlybXdhcmUgPSBremFsbG9jX29iaigqZmlybXdhcmUpO1xcbiA3NTE6XFx0XFx0aWYgKCFmaXJtd2FyZSkge1xcbiA3NTI6XFx0XFx0XFx0ZGV2X2VycihkZXZpY2UsIFxcXCIlczoga21hbGxvYyhzdHJ1Y3QgZmlybXdhcmUpIGZhaWxlZFxcXFxuXFxcIixcXG4gNzUzOlxcdFxcdFxcdFxcdF9fZnVuY19fKTtcXG4gNzU0OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA3NTU6XFx0XFx0fVxcbiA3NTY6XFx0XFxuIDc1NzpcXHRcXHRpZiAoZmlybXdhcmVfcmVxdWVzdF9idWlsdGluX2J1ZihmaXJtd2FyZSwgbmFtZSwgZGJ1Ziwgc2l6ZSkpIHtcXG4gNzU4OlxcdFxcdFxcdGRldl9kYmcoZGV2aWNlLCBcXFwidXNpbmcgYnVpbHQtaW4gJXNcXFxcblxcXCIsIG5hbWUpO1xcbiA3NTk6XFx0XFx0XFx0cmV0dXJuIDA7IC8qIGFzc2lnbmVkICovXFxuIDc2MDpcXHRcXHR9XFxuIDc2MTpcXHRcXG4gNzYyOlxcdFxcdHJldCA9IGFsbG9jX2xvb2t1cF9md19wcml2KG5hbWUsIFxcdTAwMjZmd19jYWNoZSwgXFx1MDAyNmZ3X3ByaXYsIGRidWYsIHNpemUsXFxuIDc2MzpcXHRcXHRcXHRcXHRcXHQgICBvZmZzZXQsIG9wdF9mbGFncyk7XFxuIDc2NDpcXHRcXG4gNzY1OlxcdFxcdC8qXFxuIDc2NjpcXHRcXHQgKiBiaW5kIHdpdGggJ3ByaXYnIG5vdyB0byBhdm9pZCB3YXJuaW5nIGluIGZhaWx1cmUgcGF0aFxcbiA3Njc6XFx0XFx0ICogb2YgcmVxdWVzdGluZyBmaXJtd2FyZS5cXG4gNzY4OlxcdFxcdCAqL1xcbiA3Njk6XFx0XFx0ZmlybXdhcmUtXFx1MDAzZXByaXYgPSBmd19wcml2O1xcbiA3NzA6XFx0XFxuIDc3MTpcXHRcXHRpZiAocmV0IFxcdTAwM2UgMCkge1xcbiA3NzI6XFx0XFx0XFx0cmV0ID0gZndfc3RhdGVfd2FpdChmd19wcml2KTtcXG4gNzczOlxcdFxcdFxcdGlmICghcmV0KSB7XFxuIDc3NDpcXHRcXHRcXHRcXHRpZiAoIWZ3X3ByaXYtXFx1MDAzZXNpemUpXFxuIDc3NTpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gNzc2OlxcdFxcdFxcdFxcdGZ3X3NldF9wYWdlX2RhdGEoZndfcHJpdiwgZmlybXdhcmUpO1xcbiA3Nzc6XFx0XFx0XFx0XFx0cmV0dXJuIDA7IC8qIGFzc2lnbmVkICovXFxuIDc3ODpcXHRcXHRcXHR9XFxuIDc3OTpcXHRcXHR9XFxuIDc4MDpcXHRcXG4gNzgxOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA3ODI6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNzgzOlxcdFxcdHJldHVybiAxOyAvKiBuZWVkIHRvIGxvYWQgKi9cXG4gNzg0OlxcdH1cXG4gNzg1OlxcdFxcbiA3ODY6XFx0LypcXG4gNzg3OlxcdCAqIEJhdGNoZWQgcmVxdWVzdHMgbmVlZCBvbmx5IG9uZSB3YWtlLCB3ZSBuZWVkIHRvIGRvIHRoaXMgc3RlcCBsYXN0IGR1ZSB0byB0aGVcXG4gNzg4OlxcdCAqIGZhbGxiYWNrIG1lY2hhbmlzbS4gVGhlIGJ1ZiBpcyBwcm90ZWN0ZWQgd2l0aCBrcmVmX2dldCgpLCBhbmQgaXQgd29uJ3QgYmVcXG4gNzg5OlxcdCAqIHJlbGVhc2VkIHVudGlsIHRoZSBsYXN0IHVzZXIgY2FsbHMgcmVsZWFzZV9maXJtd2FyZSgpLlxcbiA3OTA6XFx0ICpcXG4gNzkxOlxcdCAqIEZhaWxlZCBiYXRjaGVkIHJlcXVlc3RzIGFyZSBwb3NzaWJsZSBhcyB3ZWxsLCBpbiBzdWNoIGNhc2VzIHdlIGp1c3Qgc2hhcmVcXG4gNzkyOlxcdCAqIHRoZSBzdHJ1Y3QgZndfcHJpdiBhbmQgd29uJ3QgcmVsZWFzZSBpdCB1bnRpbCBhbGwgcmVxdWVzdHMgYXJlIHdva2VuXFxuIDc5MzpcXHQgKiBhbmQgaGF2ZSBnb25lIHRocm91Z2ggdGhpcyBzYW1lIHBhdGguXFxuIDc5NDpcXHQgKi9cXG4gNzk1OlxcdHN0YXRpYyB2b2lkIGZ3X2Fib3J0X2JhdGNoX3JlcXMoc3RydWN0IGZpcm13YXJlICpmdylcXG4gNzk2OlxcdHtcXG4gNzk3OlxcdFxcdHN0cnVjdCBmd19wcml2ICpmd19wcml2O1xcbiA3OTg6XFx0XFxuIDc5OTpcXHRcXHQvKiBMb2FkZWQgZGlyZWN0bHk/ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQ4OjU2LjI5Nzk4MDY0NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzQyOTI4NDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZpcm13YXJlIExvYWRpbmcgRml4KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoIGFuZCBoZXJlJ3MgbXkgdGFrZTogdGhlIGZpeCBpcyBzcXVhcmVseSB3aXRoaW4gYF9yZXF1ZXN0X2Zpcm13YXJlX3ByZXBhcmVgLiBUaGUgY29yZSBpc3N1ZSByZXZvbHZlcyBhcm91bmQgY29uY3VycmVudCBmaXJtd2FyZSBsb2FkaW5nIOKAkyBzcGVjaWZpY2FsbHksIHdoYXQgaGFwcGVucyB3aGVuIHR3byB0aHJlYWRzIHRyeSB0byBncmFiIHRoZSBzYW1lIGZpcm13YXJlIHNpbXVsdGFuZW91c2x5LiBJZiBgYWxsb2NfbG9va3VwX2Z3X3ByaXZgIHJldHVybnMgYSBwb3NpdGl2ZSB2YWx1ZSwgaW5kaWNhdGluZyBhbm90aGVyIHRocmVhZCBpcyBhbHJlYWR5IG9uIHRoZSBjYXNlLCBpdCB0aGVuIHdhaXRzIG9uIHRoZSBmaXJtd2FyZSBzdGF0ZSB1c2luZyBgZndfc3RhdGVfd2FpdChmd19wcml2KWAuXG5cblRoZSBjcnVjaWFsIHBhcnQgaXMgdGhlIGNoZWNrIGFmdGVyIHRoZSB3YWl0LiBJZiBgZndfc3RhdGVfd2FpdGAgc3VjY2VlZHMgKHJldHVybnMgMCksIHRoZSBjb2RlIG5vdyAqZXhwbGljaXRseSogY2hlY2tzIGlmIGBmd19wcml2LVx1MDAzZXNpemVgIGlzIHplcm8uIElmIGl0ICppcyogemVybywgdGhhdCBtZWFucyB0aGUgY29uY3VycmVudCBsb2FkIGVpdGhlciBmYWlsZWQgb3IsIG1vcmUgcHJvYmxlbWF0aWNhbGx5LCByZXN1bHRlZCBpbiBhbiBlbXB0eSBmaXJtd2FyZS4gVGhlIHByZXZpb3VzIGJlaGF2aW9yIHdhcyB0byBoYXBwaWx5IGhhbmQgb3ZlciBhIGZpcm13YXJlIG9iamVjdCBvZiBzaXplIHplcm8gd2l0aG91dCBpbmRpY2F0aW5nIGEgZmFpbHVyZS4gVGhpcywgYXMgd2Uga25vdywgaXMgYmFkIG5ld3MuIE5vdywgaXQgcmV0dXJucyBgLUVOT0VOVGAgaW4gdGhhdCBzY2VuYXJpby4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBjbGVhciBhbmQgZGlyZWN0IGZpeCBmb3IgYSByYWNlIGNvbmRpdGlvbi4gSXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBzaG91bGQgZnV6ei5cblxuTXkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBmb2xsb3dpbmcgc3ltYm9sczogYHJlcXVlc3RfZmlybXdhcmVgLCBgcmVxdWVzdF9maXJtd2FyZV9ub3dhaXRgLCBgcmVxdWVzdF9maXJtd2FyZV9kaXJlY3RgLCBgZmlybXdhcmVfcmVxdWVzdF9ub3dhcm5gLCBgcmVxdWVzdF9maXJtd2FyZV9pbnRvX2J1ZmAsIGFuZCBgcmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmYC5cblxuUmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLCBgRldfTE9BREVSX1VTRVJfSEVMUEVSYCBhbmQgYEZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS2AgYXJlIHRoZSBtb3N0IHJlbGV2YW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIGFyZSBlbmFibGVkLCBhcyB0aGlzIGlzIHRoZSBwYXRoIHdoZXJlIHRoZSBlbXB0eSBmaXJtd2FyZSBjb3VsZCBiZSBsb2FkZWQuIEknbGwgYWxzbyBhZGQgYEZXX0xPQURFUl9DT01QUkVTU2AsIGBGV19MT0FERVJfQ09NUFJFU1NfWFpgLCBhbmQgYEZXX0xPQURFUl9DT01QUkVTU19aU1REYCB0byBlbmFibGUgY29tcHJlc3NlZCBmaXJtd2FyZSBzdXBwb3J0LCBzaW5jZSB0aGF0IGNvdWxkIHRyaWdnZXIgZGlmZmVyZW50IGNvZGVwYXRocy5cblxuU28sIHRvIHN1bW1hcml6ZSBteSByZXNwb25zZSBmb3IgZnV6emluZywgSSdkIHNheTpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWVcbiogICAqKkZvY3VzU3ltYm9sczoqKiBgcmVxdWVzdF9maXJtd2FyZWAsIGByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdGAsIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAsIGBmaXJtd2FyZV9yZXF1ZXN0X25vd2FybmAsIGByZXF1ZXN0X2Zpcm13YXJlX2ludG9fYnVmYCwgYHJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1ZmBcbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYEZXX0xPQURFUl9VU0VSX0hFTFBFUmAsIGBGV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0tgLCBgRldfTE9BREVSX0NPTVBSRVNTYCwgYEZXX0xPQURFUl9DT01QUkVTU19YWmAsIGBGV19MT0FERVJfQ09NUFJFU1NfWlNURGBcbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgY3JpdGljYWwgY29uY3VycmVuY3kgaXNzdWUgd2hlcmUgY29uY3VycmVudCBmaXJtd2FyZSByZXF1ZXN0cyBjb3VsZCBsZWFkIHRvIHplcm8tc2l6ZWQgZmlybXdhcmUgb2JqZWN0cyBhbmQgaW5jb3JyZWN0IGVycm9yIGhhbmRsaW5nLCB0aGlzIGlzIGEgY29yZSBmaXJtd2FyZSBsb2FkZXIgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM2MiwiT3V0cHV0VG9rZW5zIjoxNjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0OTowNS4wNDA5MTIyMTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY0MTg1NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZXX0xPQURFUl9VU0VSX0hFTFBFUlwiLFxuICAgIFwiRldfTE9BREVSX1VTRVJfSEVMUEVSX0ZBTExCQUNLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVxdWVzdF9maXJtd2FyZVwiLFxuICAgIFwicmVxdWVzdF9maXJtd2FyZV9ub3dhaXRcIixcbiAgICBcInJlcXVlc3RfZmlybXdhcmVfZGlyZWN0XCIsXG4gICAgXCJmaXJtd2FyZV9yZXF1ZXN0X25vd2FyblwiLFxuICAgIFwicmVxdWVzdF9maXJtd2FyZV9pbnRvX2J1ZlwiLFxuICAgIFwicmVxdWVzdF9wYXJ0aWFsX2Zpcm13YXJlX2ludG9fYnVmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNvcmUgZmlybXdhcmUgbG9hZGVyIHdoZXJlIGNvbmN1cnJlbnQgcmVxdWVzdHMgZm9yIHRoZSBzYW1lIGZpcm13YXJlIGNvdWxkIHJlc3VsdCBpbiByZXR1cm5pbmcgYSBmaXJtd2FyZSBvYmplY3Qgd2l0aCBzaXplIDAgaWYgdGhlIGNvbmN1cnJlbnQgbG9hZCBmYWlsZWQgb3IgcmVzdWx0ZWQgaW4gYW4gZW1wdHkgZmlybXdhcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUga2VybmVsIHN1YnN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGV19MT0FERVJfVVNFUl9IRUxQRVJcIixcbiAgICBcIkZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlcXVlc3RfZmlybXdhcmVcIixcbiAgICBcInJlcXVlc3RfZmlybXdhcmVfbm93YWl0XCIsXG4gICAgXCJyZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdFwiLFxuICAgIFwiZmlybXdhcmVfcmVxdWVzdF9ub3dhcm5cIixcbiAgICBcInJlcXVlc3RfZmlybXdhcmVfaW50b19idWZcIixcbiAgICBcInJlcXVlc3RfcGFydGlhbF9maXJtd2FyZV9pbnRvX2J1ZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjb3JlIGZpcm13YXJlIGxvYWRlciB3aGVyZSBjb25jdXJyZW50IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBmaXJtd2FyZSBjb3VsZCByZXN1bHQgaW4gcmV0dXJuaW5nIGEgZmlybXdhcmUgb2JqZWN0IHdpdGggc2l6ZSAwIGlmIHRoZSBjb25jdXJyZW50IGxvYWQgZmFpbGVkIG9yIHJlc3VsdGVkIGluIGFuIGVtcHR5IGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowmbsx4[1] Phase: Succeeded StartedAt: 2026-08-03 09:49:16 +0000 UTC FinishedAt: 2026-08-03 09:49:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 09:49:16 +0000 UTC FinishedAt: 2026-08-03 09:49:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2] Phase: Succeeded StartedAt: 2026-08-03 09:49:16 +0000 UTC FinishedAt: 2026-08-03 14:04:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 09:49:17 +0000 UTC FinishedAt: 2026-08-03 14:04:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 09:49:17 +0000 UTC FinishedAt: 2026-08-03 09:49:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 09:49:17 +0000 UTC FinishedAt: 2026-08-03 09:49:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-workflowmbsx4/series-workflowmbsx4-convert-artifact-1634314920/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 09:49:28 +0000 UTC FinishedAt: 2026-08-03 10:24:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 09:49:28 +0000 UTC FinishedAt: 2026-08-03 10:24:45 +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:*4167b3e7-78a3-480d-a9ca-b9a04e4471df,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-workflowmbsx4/series-workflowmbsx4-convert-artifact-1634314920/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": "e8e2d941-2f9a-4487-9fed-e761f5f10f8c", "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-workflowmbsx4/series-workflowmbsx4-build-action-3460964638/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 09:49:28 +0000 UTC FinishedAt: 2026-08-03 10:24:21 +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:*4167b3e7-78a3-480d-a9ca-b9a04e4471df,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-workflowmbsx4/series-workflowmbsx4-convert-artifact-1634314920/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": "e8e2d941-2f9a-4487-9fed-e761f5f10f8c", "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-workflowmbsx4/series-workflowmbsx4-build-action-3460964638/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:24:45 +0000 UTC FinishedAt: 2026-08-03 10:24:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:24:46 +0000 UTC FinishedAt: 2026-08-03 10:24:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:24:46 +0000 UTC FinishedAt: 2026-08-03 10:25:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:24:46 +0000 UTC FinishedAt: 2026-08-03 10:25:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-workflowmbsx4/series-workflowmbsx4-convert-artifact-4154352527/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:25:18 +0000 UTC FinishedAt: 2026-08-03 10:27:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:25:18 +0000 UTC FinishedAt: 2026-08-03 10:27:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e8e2d941-2f9a-4487-9fed-e761f5f10f8c,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-workflowmbsx4/series-workflowmbsx4-build-action-3460964638/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-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:27:23 +0000 UTC FinishedAt: 2026-08-03 10:27:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:27:23 +0000 UTC FinishedAt: 2026-08-03 10:27:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:27:23 +0000 UTC FinishedAt: 2026-08-03 10:58:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:27:23 +0000 UTC FinishedAt: 2026-08-03 10:58: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:*4167b3e7-78a3-480d-a9ca-b9a04e4471df,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-workflowmbsx4/series-workflowmbsx4-convert-artifact-4154352527/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": "b42dc144-718a-4270-829f-5936851d7b1c", "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-workflowmbsx4/series-workflowmbsx4-build-action-2341946531/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:27:23 +0000 UTC FinishedAt: 2026-08-03 10:58: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:*4167b3e7-78a3-480d-a9ca-b9a04e4471df,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-workflowmbsx4/series-workflowmbsx4-convert-artifact-4154352527/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": "b42dc144-718a-4270-829f-5936851d7b1c", "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-workflowmbsx4/series-workflowmbsx4-build-action-2341946531/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:58:51 +0000 UTC FinishedAt: 2026-08-03 10:58:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:58:51 +0000 UTC FinishedAt: 2026-08-03 10:58:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:58:51 +0000 UTC FinishedAt: 2026-08-03 11:00:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 10:58:51 +0000 UTC FinishedAt: 2026-08-03 11:00:46 +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:*b42dc144-718a-4270-829f-5936851d7b1c,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-workflowmbsx4/series-workflowmbsx4-build-action-2341946531/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-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 11:00:56 +0000 UTC FinishedAt: 2026-08-03 14:04:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 11:00:56 +0000 UTC FinishedAt: 2026-08-03 14:04:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"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:*e8e2d941-2f9a-4487-9fed-e761f5f10f8c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b42dc144-718a-4270-829f-5936851d7b1c,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-workflowmbsx4/series-workflowmbsx4-build-action-3460964638/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-workflowmbsx4/series-workflowmbsx4-build-action-2341946531/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 11:00:56 +0000 UTC FinishedAt: 2026-08-03 11:01:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 11:00:56 +0000 UTC FinishedAt: 2026-08-03 11:01:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"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-workflowmbsx4/series-workflowmbsx4-convert-artifact-46337608/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 11:00:56 +0000 UTC FinishedAt: 2026-08-03 11:00:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 11:00:56 +0000 UTC FinishedAt: 2026-08-03 11:00:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 11:00:56 +0000 UTC FinishedAt: 2026-08-03 11:00:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 11:01:06 +0000 UTC FinishedAt: 2026-08-03 14:04:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbsx4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["request_firmware","request_firmware_nowait","request_firmware_direct","firmware_request_nowarn","request_firmware_into_buf","request_partial_firmware_into_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["FW_LOADER_USER_HELPER","FW_LOADER_USER_HELPER_FALLBACK"],"series_id":"aec59f05-db1a-4000-ba44-3428052c7d79","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-03 11:01:06 +0000 UTC FinishedAt: 2026-08-03 14:04:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e8e2d941-2f9a-4487-9fed-e761f5f10f8c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b42dc144-718a-4270-829f-5936851d7b1c,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-workflowmbsx4/series-workflowmbsx4-build-action-3460964638/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-workflowmbsx4/series-workflowmbsx4-build-action-2341946531/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-workflowmbsx4/series-workflowmbsx4-convert-artifact-46337608/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,}