Name: series-workflow4dsn4 Phase: Succeeded StartedAt: 2026-08-08 10:38:59 +0000 UTC FinishedAt: 2026-08-08 11:44:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[0] Phase: Succeeded StartedAt: 2026-08-08 10:38:59 +0000 UTC FinishedAt: 2026-08-08 11:04:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[0].run-triage Phase: Succeeded StartedAt: 2026-08-08 10:38:59 +0000 UTC FinishedAt: 2026-08-08 11:04:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "R8169" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "R8169" ], "series_id": "0bc3718d-1497-4954-9891-e6cc7875d741" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtl_init_one" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDExOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsX2luaXRfb25lJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gZW51bSB2YWx1ZSBjb2xsaXNpb24gaW4gYGVudW0gbWFjX3ZlcnNpb25gIHdoZXJlIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpbXBsaWNpdGx5IGhhZCB0aGUgc2FtZSB2YWx1ZSBhcyBgUlRMX0dJR0FfTUFDX05PTkVgLiBUaGlzIGlzIGEgbG9naWMgYnVnIGFmZmVjdGluZyBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gZm9yIHNwZWNpZmljIFJlYWx0ZWsgbmV0d29yayBjYXJkcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIEtBU0FOIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIGNoYW5nZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gZW51bSB2YWx1ZSBjb2xsaXNpb24gd2hlcmUgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB3YXMgaW1wbGljaXRseSBlcXVhbCB0byBSVExfR0lHQV9NQUNfTk9ORS4gVGhpcyBjYXVzZWQgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiAocnRsX2luaXRfb25lKSB0byBtaXNpZGVudGlmeSB1bmtub3duIGNoaXBzIGFzIGV4dGVuZGVkIGNoaXBzLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluY29ycmVjdCBpbml0aWFsaXphdGlvbiBvciBjcmFzaGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBQQ0kgZHJpdmVyIHByb2JlIHBhdGggdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgc3l6a2FsbGVyJiMzOTtzIHN5el9wY2lfZGV2aWNlX2FkZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDk3ZjUzNWVlZTJlN2FkYmUwYWYwMTM1NjYzNjVjZjJmNWJkODg3ZGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDExOjAyOjQ2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaFxuaW5kZXggMGI5YzFkNGViNDhiYS4uZmI3NzJjYzA0MzEwNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oXG5AQCAtNzQsNyAmIzQzOzc0LDcgQEAgZW51bSBtYWNfdmVyc2lvbiB7XG4gXHRSVExfR0lHQV9NQUNfVkVSXzgwLFxuIFx0UlRMX0dJR0FfTUFDX05PTkUsXG4gXHRSVExfR0lHQV9NQUNfVkVSX0xBU1QgPSBSVExfR0lHQV9NQUNfTk9ORSAtIDEsXG4tXHRSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEXG4mIzQzO1x0UlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCA9IFJUTF9HSUdBX01BQ19OT05FICYjNDM7IDFcbiB9O1xuIFxuIHN0cnVjdCBydGw4MTY5X3ByaXZhdGU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsX2luaXRfb25lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGVudW0gdmFsdWUgY29sbGlzaW9uIHdoZXJlIFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgd2FzIGltcGxpY2l0bHkgZXF1YWwgdG8gUlRMX0dJR0FfTUFDX05PTkUuIFRoaXMgY2F1c2VkIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gKHJ0bF9pbml0X29uZSkgdG8gbWlzaWRlbnRpZnkgdW5rbm93biBjaGlwcyBhcyBleHRlbmRlZCBjaGlwcywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBpbmNvcnJlY3QgaW5pdGlhbGl6YXRpb24gb3IgY3Jhc2hlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgUENJIGRyaXZlciBwcm9iZSBwYXRoIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHN5emthbGxlciYjMzk7cyBzeXpfcGNpX2RldmljZV9hZGQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5N2Y1MzVlZWUyZTdhZGJlMGFmMDEzNTY2MzY1Y2YyZjViZDg4N2RlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAxMTowMjo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaAppbmRleCAwYjljMWQ0ZWI0OGJhLi5mYjc3MmNjMDQzMTA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oCkBAIC03NCw3ICYjNDM7NzQsNyBAQCBlbnVtIG1hY192ZXJzaW9uIHsKIAlSVExfR0lHQV9NQUNfVkVSXzgwLAogCVJUTF9HSUdBX01BQ19OT05FLAogCVJUTF9HSUdBX01BQ19WRVJfTEFTVCA9IFJUTF9HSUdBX01BQ19OT05FIC0gMSwKLQlSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVECiYjNDM7CVJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgPSBSVExfR0lHQV9NQUNfTk9ORSAmIzQzOyAxCiB9OwogCiBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDIyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlYWx0ZWsgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oYC4gSW1tZWRpYXRlbHksIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIGFuIGBlbnVtIG1hY192ZXJzaW9uYCBhbmQgc3BlY2lmaWNhbGx5LCB0aGUgdmFsdWUgYXNzaWduZWQgdG8gYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgLiBJbml0aWFsbHksIGl0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIG9yaWdpbmFsIGVudW0gaGFkIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpbXBsaWNpdGx5IGFzc2lnbmVkLCBwb3NpdGlvbmVkIGFmdGVyIGBSVExfR0lHQV9NQUNfVkVSX0xBU1RgLgoKQnV0IGhhbmcgb27igKYgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBgUlRMX0dJR0FfTUFDX1ZFUl9MQVNUYCBpcyBkZWZpbmVkIGFzIGBSVExfR0lHQV9NQUNfTk9ORSAtIDFgLiBUaGF0IG1lYW5zIHRoZSBvcmlnaW5hbCBpbXBsaWNpdCBhc3NpZ25tZW50IG9mIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCB3YXMsIGluIGZhY3QsIGBSVExfR0lHQV9NQUNfTk9ORWAuIFdhaXQgYSBtaW51dGUsIHRoYXQmIzM5O3MgYSBwcm9ibGVtLCBiZWNhdXNlIGBSVExfR0lHQV9NQUNfTk9ORWAgaXMgYWxyZWFkeSBleHBsaWNpdGx5IGRlZmluZWQgd2l0aGluIHRoZSBlbnVtLiBTbywgaXQgd2FzIGVmZmVjdGl2ZWx5IGEgZHVwbGljYXRlIHZhbHVlIQoKTm93LCB0aGUgcGF0Y2ggaXMgZXhwbGljaXRseSBhc3NpZ25pbmcgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGFzIGBSVExfR0lHQV9NQUNfTk9ORSAmIzQzOyAxYC4gVGhpcyBmaXhlcyB0aGUgaW1wbGljaXQgZHVwbGljYXRpb24gYW5kIGVuc3VyZXMgaXQmIzM5O3MgYSB1bmlxdWUgdmFsdWUgd2l0aGluIHRoZSBlbnVtZXJhdGlvbi4gTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIHdhcyBuZWVkZWQuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBpbnN0YW5jZXMgd2hlcmUgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGlzIGFjdHVhbGx5IHVzZWQuIFRoaXMgY2hhbmdlIG1pZ2h0IGJlIGEgYnVnIGZpeCwgb3IgbWF5YmUgaXQmIzM5O3Mgc2V0dGluZyB0aGUgc3RhZ2UgZm9yIHNvbWUgZnV0dXJlIGV4dGVuc2lvbiBpbiB0aGlzIGRyaXZlciwgb3IgcGVyaGFwcyBpdCYjMzk7cyByZWxhdGVkIHRvIHNvbWUgc2lsaWNvbiByZXZpc2lvbiBvciB2YXJpYW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDExOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg9MTU9ZW51bSBtYWNfdmVyc2lvbiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTc2LVx0UlRMX0dJR0FfTUFDX1ZFUl9MQVNUID0gUlRMX0dJR0FfTUFDX05PTkUgLSAxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjc3Olx0UlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCA9IFJUTF9HSUdBX01BQ19OT05FICYjNDM7IDFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC03OC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjEzLVx0LyogZXh0ZW5kZWQgY2hpcCB2ZXJzaW9uKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjIxNDpcdHsgMHg3Y2YsIDB4N2M4LCBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTYwMj1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NjU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTY1OTpcdGlmIChjaGlwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU2NjAtXHRcdGV4dF94aWRfc3RyID0gXCYjMzQ7ZXh0XCYjMzQ7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDExOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyODEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1MzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSByODE2OSBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpcyBzaG93aW5nIHVwIGluIGBydGxfaW5pdF9vbmVgIHdpdGhpbiB0aGUgYHJ0bF9jaGlwX2luZm9gIGFycmF5LCBhbmQgdGhlIGRyaXZlciBpcyB0aGUgYHI4MTY5YCBQQ0kgZHJpdmVyIGZvciBSZWFsdGVrIGdpZ2FiaXQgZXRoZXJuZXQgY29udHJvbGxlcnMuIE15IGZpcnN0IHRob3VnaHQgaXMgd2hldGhlciB0aGlzIGRyaXZlciBpcyBldmVuIHJlYWNoYWJsZSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LiBRRU1VIGhhbmRsZXMgYHJ0bDgxMzlgLCBidXQgZG9lcyBpdCBzdXBwb3J0IHRoZSBgcnRsODE2OWAgdmFyaWFudD8gQSBxdWljayBjaGVjayBvZiBRRU1VJiMzOTtzIGVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlcyByZXZlYWxzIGEgbGlzdCwgYnV0IG5vIGRpcmVjdCBgcnRsODE2OWAgZW11bGF0aW9uLgoKSG93ZXZlciwganVzdCBiZWNhdXNlIGl0JiMzOTtzIG5vdCBuYXRpdmVseSBlbXVsYXRlZCBkb2VzbiYjMzk7dCBtZWFuIGl0JiMzOTtzIG9mZi1saW1pdHMuIFN5emthbGxlciYjMzk7cyBgc3l6X3BjaV9kZXZpY2VfYWRkYCBjYWxsIG1pZ2h0IGJlIGEgd29ya2Fyb3VuZCwgYXMgaXQgY2FuIGluamVjdCBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgQkFScyB0byBlbXVsYXRlIGFueSBQQ0kgZGV2aWNlLiBJZiBgcjgxNjlgIGlzIGEgcGh5c2ljYWwgUENJIGhhcmR3YXJlIGRyaXZlciwgdGhlbiwgaW4gdGhlb3J5LCBpdCBzaG91bGQgYmUgZnV6emFibGUgdGhyb3VnaCBgc3l6X3BjaV9kZXZpY2VfYWRkYC4KCkkgbmVlZCB0byByZS1ldmFsdWF0ZSB0aGUgY29udGV4dCBvZiB0aGUgcHJvbXB0LCB0aG91Z2guIEl0IHNwZWNpZmljYWxseSBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVIGRyaXZlcnPigJR0aGluZ3MgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgYW5kIGFyZSAqbm90KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBEb2VzIGByODE2OWAgZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnk/IE5vLCBpdCYjMzk7cyBhIHN0YW5kYXJkIEV0aGVybmV0IGRyaXZlci4KClRoZSBQQ0kgZnV6emVyIGluIHN5emthbGxlciBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHRoaXMgcHVycG9zZSwgc28gSSBzaG91bGQgYmUgYWJsZSB0byBmdXp6IGl0IQoKQWgsIHJpZ2h0LCBsb29raW5nIGF0IHRoZSBwYXRjaCwgaXQgc2VlbXMgdG8gYmUganVzdCBjaGFuZ2luZyBhbiBlbnVtIHZhbHVlLiBJbnRlcmVzdGluZy4gYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIHdhcywgYXBwYXJlbnRseSwgZXF1YWwgdG8gYFJUTF9HSUdBX01BQ19OT05FYCBiZWZvcmUsIHdoaWNoIGNyZWF0ZWQgYSBidWcgd2hlcmUgYGNoaXAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIHdvdWxkIGV2YWx1YXRlIHRvIHRydWUgd2hlbiBgUlRMX0dJR0FfTUFDX05PTkVgIHdhcyB0aGUgYWN0dWFsIGludGVuZGVkIHZhbHVlLiBXZWxsLCB0aGF0IG1ha2VzIHNlbnNlOyBgUlRMX0dJR0FfTUFDX05PTkVgIGlzIHVzZWQgd2hlbiB0aGVyZSYjMzk7cyBubyBtYXRjaGluZyBNQUMgdmVyc2lvbi4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byBob3cgdGhlc2UgZW51bSB2YWx1ZXMgYXJlIHVzZWQsIHN0YXJ0aW5nIHdpdGggYHJ0bF9pbml0X29uZWAgYW5kIHRoZSBgcnRsX2NoaXBfaW5mb2AgYXJyYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlRMX0dJR0FfTUFDX05PTkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg9MTU9ZW51bSBtYWNfdmVyc2lvbiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTc0LVx0UlRMX0dJR0FfTUFDX1ZFUl84MCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo3NTpcdFJUTF9HSUdBX01BQ19OT05FLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjc2Olx0UlRMX0dJR0FfTUFDX1ZFUl9MQVNUID0gUlRMX0dJR0FfTUFDX05PTkUgLSAxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjc3Olx0UlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCA9IFJUTF9HSUdBX01BQ19OT05FICYjNDM7IDFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC03OC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjE2LVx0LyogQ2F0Y2gtYWxsICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMTc6XHR7IDB4MDAwLCAweDAwMCxcdFJUTF9HSUdBX01BQ19OT05FIH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIxOC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTIyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gcnRsX2NoaXBfaW5mb3NfZXh0ZW5kZWRbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMjQtXHQvKiBDYXRjaC1hbGwgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjIyNTpcdHsgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgUlRMX0dJR0FfTUFDX05PTkUgfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjI2LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTYwMj1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NjYzLVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTY2NDpcdGlmIChjaGlwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19OT05FKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY2NS1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIC1FTk9ERVYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA3NQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIFJlZHVuZGFuY3kgaW4gTUFDIFZlcnNpb24gSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IGBSVExfR0lHQV9NQUNfTk9ORWAgaXMgdXNlZCBhcyBhIGNhdGNoLWFsbCwgcmlnaHQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGlmIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCB3ZXJlIGFjY2lkZW50YWxseSAqZXF1YWwqIHRvIGBSVExfR0lHQV9NQUNfTk9ORWAsIHRoZSBjb2RlJiMzOTtzIGxvZ2ljIHdvdWxkIGJlY29tZSBjb21wbGV0ZWx5IHNrZXdlZC4gTGV0IG1lIHdhbGsgdGhyb3VnaCBteSBtZW50YWwgcHJvY2Vzcy4KCklmIHRoZXkgd2VyZSBlcXVpdmFsZW50LCBhIGBjaGlwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBjaGVjayB3b3VsZCAqYWxzbyogYmUgdHJ1ZSBmb3IgdGhlIGBSVExfR0lHQV9NQUNfTk9ORWAgY2FzZS4gVGhhdCBtYWtlcyBzZW5zZSwgaW4gdGhlIGNvbnRleHQgb2YgaXQgYmVpbmcgYSBjYXRjaC1hbGwuCgpOb3csIGxldCYjMzk7cyB6b29tIGluIG9uIGBydGxfaW5pdF9vbmVgLiBJIHNlZSBhIGNvdXBsZSBvZiBjcnVjaWFsIGBpZmAgc3RhdGVtZW50cy4gVGhlIGZpcnN0IG9uZSBjaGVja3MgYGNoaXAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGFuZCwgaWYgdHJ1ZSwgc2V0cyBgZXh0X3hpZF9zdHJgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gVGhlbiB0aGVyZSYjMzk7cyBhbm90aGVyIGBpZmAgdGhhdCBjaGVja3MgaWYgYGNoaXAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19OT05FYC4gSWYgKnRoYXQmIzM5O3MqIHRydWUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGAtRU5PREVWYCwgaW5kaWNhdGluZyBhIGZhaWx1cmUuCgpIZXJlJiMzOTtzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcgYW5kIGNvbmNlcm5pbmcuIElmIHRob3NlIHR3byBNQUMgdmVyc2lvbiBjb25zdGFudHMgKndlcmUqIHRoZSBzYW1lLCB0aGUgZmlyc3QgYGlmYCBzdGF0ZW1lbnQgd291bGQgZXhlY3V0ZSwgc2V0dGluZyBzb21ldGhpbmcgdXAuIFRoZW4sIHRoZSBzZWNvbmQgYGlmYCBzdGF0ZW1lbnQsIGJlY2F1c2UgdGhlIHZhbHVlIGlzIHRoZSBzYW1lLCB3b3VsZCAqYWxzbyogZXhlY3V0ZSBhbmQgcmV0dXJuIGAtRU5PREVWYC4gU28sIGl0IHdvdWxkIHJ1biBzb21lIGluaXRpYWxpemF0aW9uIGNvZGUsIGFuZCB0aGVuIGltbWVkaWF0ZWx5IHJldHVybiBhbiBlcnJvci4gVGhhdCBzZWVtcyBsaWtlIHJlYWxseSBiYWQgbG9naWMsIGEgcmFjZSBjb25kaXRpb24gd2l0aCB0aGUgY29kZSB0aHJvd2luZyBhbiBlcnJvciBmb3Igc29tZXRoaW5nIGl0IHdhcyBhdHRlbXB0aW5nIHRvIGhhbmRsZS4KClNvLCBsZXQgbWUgYmFjayB1cCBhIGxpdHRsZS4gVGhpcyBtZWFucyB0aGUgY2F0Y2gtYWxsIGluIGBydGxfY2hpcF9pbmZvYCB3b3VsZCBzZXQgYG1hY192ZXJzaW9uYCB0byBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaW4gdGhlIGNhc2Ugb2YgYSBtYXRjaC4gVGhpcyBzZXRzIG9mZiBhbGFybSBiZWxscyBhbmQgbmVlZHMgYSBkZWVwZXIgbG9vay4KCk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgbG9naWMgYmV0dGVyLiBMZXQgbWUganVtcCBiYWNrIHRvIGBydGxfaW5pdF9vbmVgIGFnYWluLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBjb2RlIGZsb3cgYW5kIGVuc3VyZSB0aGVyZSBpc24mIzM5O3Qgc29tZSB1bmludGVuZGVkIGNvbnNlcXVlbmNlLCBhIGRvdWJsZS1leGVjdXRpb24gb3IgY29uZmxpY3QsIGlmIHRoaXMgZXF1aXZhbGVuY2UgZXhpc3RlZC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBtaXN1bmRlcnN0YW5kaW5nIG9mIHRoZSB2ZXJzaW9uIGNvbnN0YW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTY0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs1NjQwOlx0XHQvKiB1c2UgZmlyc3QgTU1JTyByZWdpb24gKi9cbjU2NDE6XHRcdHJlZ2lvbiA9IGZmcyhwY2lfc2VsZWN0X2JhcnMocGRldiwgSU9SRVNPVVJDRV9NRU0pKSAtIDE7XG41NjQyOlx0XHRpZiAocmVnaW9uIFx1MDAzYyAwKVxuNTY0MzpcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVOT0RFViwgXCYjMzQ7bm8gTU1JTyByZXNvdXJjZSBmb3VuZFxcblwmIzM0Oyk7XG41NjQ0Olx0XG41NjQ1Olx0XHR0cC1cdTAwM2VtbWlvX2FkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwZGV2LCByZWdpb24sIEtCVUlMRF9NT0ROQU1FKTtcbjU2NDY6XHRcdGlmIChJU19FUlIodHAtXHUwMDNlbW1pb19hZGRyKSlcbjU2NDc6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFBUUl9FUlIodHAtXHUwMDNlbW1pb19hZGRyKSxcbjU2NDg6XHRcdFx0XHRcdCAgICAgXCYjMzQ7Y2Fubm90IHJlbWFwIE1NSU8sIGFib3J0aW5nXFxuXCYjMzQ7KTtcbjU2NDk6XHRcbjU2NTA6XHRcdHR4Y29uZmlnID0gUlRMX1IzMih0cCwgVHhDb25maWcpO1xuNTY1MTpcdFx0aWYgKHR4Y29uZmlnID09IH4wVSlcbjU2NTI6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIC1FSU8sIFwmIzM0O1BDSSByZWFkIGZhaWxlZFxcblwmIzM0Oyk7XG41NjUzOlx0XG41NjU0Olx0XHR4aWQgPSAodHhjb25maWcgXHUwMDNlXHUwMDNlIDIwKSBcdTAwMjYgMHhmY2Y7XG41NjU1Olx0XG41NjU2Olx0XHQvKiBJZGVudGlmeSBjaGlwIGF0dGFjaGVkIHRvIGJvYXJkICovXG41NjU3Olx0XHRjaGlwID0gcnRsODE2OV9nZXRfY2hpcF92ZXJzaW9uKHhpZCwgdHAtXHUwMDNlc3VwcG9ydHNfZ21paSk7XG41NjU4Olx0XG41NjU5Olx0XHRpZiAoY2hpcC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEKSB7XG41NjYwOlx0XHRcdGV4dF94aWRfc3RyID0gXCYjMzQ7ZXh0XCYjMzQ7O1xuNTY2MTpcdFx0XHR4aWQgPSBSVExfUjMyKHRwLCBUWF9DT05GSUdfVjIpO1xuNTY2MjpcdFx0XHRjaGlwID0gcnRsODE2OV9nZXRfZXh0ZW5kZWRfY2hpcF92ZXJzaW9uKHhpZCk7XG41NjYzOlx0XHR9XG41NjY0Olx0XHRpZiAoY2hpcC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfTk9ORSlcbjU2NjU6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIC1FTk9ERVYsXG41NjY2Olx0XHRcdFx0XHQgICAgIFwmIzM0O3Vua25vd24gY2hpcCAlc1hJRCAleCwgY29udGFjdCByODE2OSBtYWludGFpbmVycyAoc2VlIE1BSU5UQUlORVJTIGZpbGUpXFxuXCYjMzQ7LFxuNTY2NzpcdFx0XHRcdFx0ICAgICBleHRfeGlkX3N0ciwgeGlkKTtcbjU2Njg6XHRcdHRwLVx1MDAzZW1hY192ZXJzaW9uID0gY2hpcC1cdTAwM2VtYWNfdmVyc2lvbjtcbjU2Njk6XHRcdHRwLVx1MDAzZWZ3X25hbWUgPSBjaGlwLVx1MDAzZWZ3X25hbWU7XG41NjcwOlx0XG41NjcxOlx0XHQvKiBEaXNhYmxlIEFTUE0gTDEgYXMgdGhhdCBjYXVzZSByYW5kb20gZGV2aWNlIHN0b3Agd29ya2luZ1xuNTY3MjpcdFx0ICogcHJvYmxlbXMgYXMgd2VsbCBhcyBmdWxsIHN5c3RlbSBoYW5ncyBmb3Igc29tZSBQQ0llIGRldmljZXMgdXNlcnMuXG41NjczOlx0XHQgKi9cbjU2NzQ6XHRcdGlmIChydGxfYXNwbV9pc19zYWZlKHRwKSkge1xuNTY3NTpcdFx0XHRkZXZfaW5mbyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7U3lzdGVtIHZlbmRvciBmbGFncyBBU1BNIGFzIHNhZmVcXG5cJiMzNDspO1xuNTY3NjpcdFx0XHRyYyA9IDA7XG41Njc3Olx0XHR9IGVsc2Uge1xuNTY3ODpcdFx0XHRyYyA9IHBjaV9kaXNhYmxlX2xpbmtfc3RhdGUocGRldiwgUENJRV9MSU5LX1NUQVRFX0wxKTtcbjU2Nzk6XHRcdH1cbjU2ODA6XHRcdHRwLVx1MDAzZWFzcG1fbWFuYWdlYWJsZSA9ICFyYztcbjU2ODE6XHRcbjU2ODI6XHRcdGlmIChydGxfaXNfODEyNSh0cCkpIHtcbjU2ODM6XHRcdFx0dTE2IGRhdGEgPSByODE2OF9tYWNfb2NwX3JlYWQodHAsIDB4ZDAwNik7XG41Njg0Olx0XG41Njg1Olx0XHRcdGlmICgoZGF0YSBcdTAwMjYgMHhmZikgPT0gMHgwNylcbjU2ODY6XHRcdFx0XHR0cC1cdTAwM2VzZnBfbW9kZSA9IHRydWU7XG41Njg3Olx0XHR9XG41Njg4Olx0XG41Njg5Olx0XHR0cC1cdTAwM2VkYXNoX3R5cGUgPSBydGxfZ2V0X2Rhc2hfdHlwZSh0cCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkyMAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIENoaXAgSWRlbnRpZmljYXRpb24gRmxhdyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcnRsODE2OV9nZXRfY2hpcF92ZXJzaW9uYCBmdW5jdGlvbiwgYW5kIGl0IHJldHVybnMgdGhpcyBgY2hpcGAgc3RydWN0LiBUaGUgY29yZSBpc3N1ZSBzZWVtcyB0byBiZSBhcm91bmQgaG93IHRoZSBjb2RlIGhhbmRsZXMgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgLiBJZiB0aGUgYGNoaXAtJmd0O21hY192ZXJzaW9uYCBpcyBlcXVhbCB0byBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAsIGl0IHJlYWRzIGBUWF9DT05GSUdfVjJgIGFuZCBkaXZlcyBpbnRvIGBydGw4MTY5X2dldF9leHRlbmRlZF9jaGlwX3ZlcnNpb25gLgoKVGhlIHByb2JsZW0gaXMgdGhhdCBpZiBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaXMgZXNzZW50aWFsbHkgYSBjYXRjaC1hbGwg4oCTIHNheSwgaXTigJlzIGVxdWl2YWxlbnQgdG8gYFJUTF9HSUdBX01BQ19OT05FYCDigJMgdGhlbiBhbnkgdW5rbm93biBjaGlwLCB3aGljaCBkZWZhdWx0cyB0byBgUlRMX0dJR0FfTUFDX05PTkVgLCB3b3VsZCB0cmlnZ2VyIHRoaXMgZXh0ZW5kZWQgdmVyc2lvbiBjaGVjay4gSXQgd291bGQganVtcCBpbnRvIHRoZSBgaWZgIGJsb2NrLCByZWFkIGBUWF9DT05GSUdfVjJgLCBhbmQgY2FsbCBgcnRsODE2OV9nZXRfZXh0ZW5kZWRfY2hpcF92ZXJzaW9uKHhpZClgLiBJZiB0aGF0IGV4dGVuZGVkIGNoZWNrICphbHNvKiByZXR1cm5zIGBSVExfR0lHQV9NQUNfTk9ORWAsIGl0IGNvcnJlY3RseSBmYWlscyB3aXRoIGAtRU5PREVWYC4gCgpCdXQgaGVyZSYjMzk7cyB0aGUgY2F0Y2g6IElmIHRoZSBpbml0aWFsIGB4aWRgIHdhcyB1bmtub3duLCBpdCBkZWZhdWx0cyB0byBgUlRMX0dJR0FfTUFDX05PTkVgLiBUaGVuIHdlIHJlYWQgYFRYX0NPTkZJR19WMmAsIGNhbGwgdGhlIGV4dGVuZGVkIGZ1bmN0aW9uLiBJZiB0aGUgZXh0ZW5kZWQgY2hpcCB2ZXJzaW9uIGhhcHBlbnMgdG8gKm1hdGNoKiBzb21ldGhpbmcsIHNheSBpZiB0aGUgZmFsbGJhY2sgcm91dGluZSBlcnJvbmVvdXNseSByZXR1cm5zIGEgZGVmaW5lZCB2YWx1ZSwgd2XigJlkIGluY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjaGlwISBUaGlzIGlzIGEgc2VyaW91cyBwcm9ibGVtLgoKSSBoYXZlIGEgc3VzcGljaW9uIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpcyBhIHJlY2VudCBhZGRpdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGhpc3Rvcnkgb2YgYHI4MTY5LmhgIHRvIGNvbmZpcm0gdGhlIGNvZGUmIzM5O3MgcmVjZW50IGhpc3RvcnkgdG8gaGVscCB0cmFjayBkb3duIHRoZSBwb3RlbnRpYWwgb3JpZ2luIG9mIHRoZSBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaD0xNT1lbnVtIG1hY192ZXJzaW9uIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtNzYtXHRSVExfR0lHQV9NQUNfVkVSX0xBU1QgPSBSVExfR0lHQV9NQUNfTk9ORSAtIDEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6Nzc6XHRSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEID0gUlRMX0dJR0FfTUFDX05PTkUgJiM0MzsgMVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTc4LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9OTk9c3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTMtXHQvKiBleHRlbmRlZCBjaGlwIHZlcnNpb24qL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjE0Olx0eyAweDdjZiwgMHg3YzgsIFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIxNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01NjAyPXN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU2NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NjU5Olx0aWYgKGNoaXAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY2MC1cdFx0ZXh0X3hpZF9zdHIgPSBcJiMzNDtleHRcJiMzNDs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDExOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNzIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVhbHRlayBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHNpbXBsZSBvbmUgb24gdGhlIHN1cmZhY2UsIGp1c3QgaW5jcmVtZW50aW5nIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBmcm9tIGBSVExfR0lHQV9NQUNfTk9ORWAgdG8gYFJUTF9HSUdBX01BQ19OT05FICYjNDM7IDFgLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIGFzIGEgYnVnIGZpeCDigJMgdGhlIG9sZCBhc3NpZ25tZW50IG11c3QgaGF2ZSBiZWVuIGFuIGVycm9yLiBCdXQgYXMgYSBmdXp6aW5nIGV4cGVydCwgbXkgbWluZCBqdW1wcyB0byB0aGUgaW1wYWN0LiBJcyB0aGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZT8gQWJzb2x1dGVseSwgaWYgYHI4MTY5YCBpcyBldmVuIGZ1enphYmxlLiBUaGF0JiMzOTtzIHRoZSByZWFsIHF1ZXN0aW9uLgoKQ2FuIFN5emthbGxlciBldmVuIHJlYWNoIHRoaXMgZHJpdmVyPyBMZXQgbWUgdGhpbmsuLi4gd2UgaGF2ZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCwgd2hpY2ggY2FuIHRyaWdnZXIgUENJIHByb2JlIGZ1bmN0aW9ucy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIG5leHQgcXVlc3Rpb246IGlzIGByODE2OWAgZW5hYmxlZCBpbiB0aGUgc3RhbmRhcmQgY29uZmlndXJhdGlvbnMgdGhhdCBTeXprYWxsZXIgdXNlcz8gSXQmIzM5O3MgYSBSZWFsdGVrIGdpZ2FiaXQgZXRoZXJuZXQgZHJpdmVyLCBwcmV0dHkgY29tbW9uLiBJJiMzOTttIGdvaW5nIHRvIGJldCBpdCYjMzk7cyB0aGVyZS4gTGV0IG1lIGNoZWNrLi4uIHllcCwgYENPTkZJR19SODE2OWAgbG9va3MgdmVyeSBmYW1pbGlhci4gR29vZCwgaXQmIzM5O3MgdGhlcmUuIFRoaXMgZGVzZXJ2ZXMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBhcyBldmVuIGEgc21hbGwgYnVnIGZpeCBjb3VsZCByZXZlYWwgbmV3LCBleHBsb2l0YWJsZSBjb2RlIHBhdGhzIGR1cmluZyBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUjgxNjkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9NzQ9Y29uZmlnIDgxMzlfT0xEX1JYX1JFU0VUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjg0OmNvbmZpZyBSODE2OVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTg1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MTY5LzgxNjgvODEwMS84MTI1IGV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwMjpjb25maWcgUjgxNjlfTEVEU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTEwMy1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIE5JQyBMRURzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDExOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4NTkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzOgoKKipDaGVja2luZyBSODE2OSBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgdGltZSB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCB0aGUgYFI4MTY5YCBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBleGFtaW5lIHRoZSBgS2NvbmZpZ2AgZmlsZSBzcGVjaWZpY2FsbHkgZm9yIHRoYXQgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgc3RyYWlnaHQgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciBSZWFsdGVrIEV0aGVybmV0IGRyaXZlcnMgYXJlIGRlZmluZWQgaW4gdGhlIGtlcm5lbCBzb3VyY2UuIEJ5IG9wZW5pbmcgYW5kIHJlYWRpbmcgdGhpcyBmaWxlLCBJJiMzOTtsbCBiZSBhYmxlIHRvIHNlZSBleGFjdGx5IHdoYXQgb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIG1vZHVsZXMgYFI4MTY5YCByZWxpZXMgdXBvbiwgYW5kIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBiZWdpbiBteSBpbnZlc3RpZ2F0aW9uIHRvIHVuZGVyc3RhbmQgaXRzIGludGVncmF0aW9uIHdpdGggdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gYW5kIGl0cyByZXF1aXJlbWVudHMuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgaW5mb3JtYXRpb24gb24gZGVwZW5kZW5jaWVzIGxpa2Ugb3RoZXIgbmV0d29yayBkcml2ZXJzLCBzcGVjaWZpYyBoYXJkd2FyZSBzdXBwb3J0LCBvciBwb3RlbnRpYWxseSBvdGhlciBrZXJuZWwgZmVhdHVyZXMgaXQgbmVlZHMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIHRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDExOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4MDpcdFx0ICBSWC1yZXNldCBtZXRob2Qgc2hvdWxkIGJlIGFkZXF1YXRlIGZvciBhbGwgYm9hcmRzLiAgQnV0IGlmIHlvdVxuICA4MTpcdFx0ICBleHBlcmllbmNlIHByb2JsZW1zLCB5b3UgY2FuIGVuYWJsZSB0aGlzIG9wdGlvbiB0byByZXN0b3JlIHRoZVxuICA4MjpcdFx0ICBvbGQgUlgtcmVzZXQgYmVoYXZpb3IuICBJZiB1bnN1cmUsIHNheSBOLlxuICA4MzpcdFxuICA4NDpcdGNvbmZpZyBSODE2OVxuICA4NTpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MTY5LzgxNjgvODEwMS84MTI1IGV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgODY6XHRcdGRlcGVuZHMgb24gUENJXG4gIDg3Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDg4Olx0XHRzZWxlY3QgQ1JDMzJcbiAgODk6XHRcdHNlbGVjdCBQSFlMSUJcbiAgOTA6XHRcdHNlbGVjdCBSRUFMVEVLX1BIWVxuICA5MTpcdFx0aGVscFxuICA5MjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGEgUmVhbHRlayBFdGhlcm5ldCBhZGFwdGVyIGJlbG9uZ2luZyB0b1xuICA5MzpcdFx0ICB0aGUgZm9sbG93aW5nIGZhbWlsaWVzOlxuICA5NDpcdFx0ICBSVEw4MTY5IEdpZ2FiaXQgRXRoZXJuZXRcbiAgOTU6XHRcdCAgUlRMODE2OCBHaWdhYml0IEV0aGVybmV0XG4gIDk2Olx0XHQgIFJUTDgxMDEgRmFzdCBFdGhlcm5ldFxuICA5NzpcdFx0ICBSVEw4MTI1IDIuNUdCaXQgRXRoZXJuZXRcbiAgOTg6XHRcbiAgOTk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDQyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQQ0kgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIHRoaXMgZGVmaW5pdGVseSBoaW5nZXMgb24gYFBDSWAuIFRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtIGhlcmUgaXMgYENPTkZJR19SODE2OWAsIHRoYXQmIzM5O3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBDb25zaWRlcmluZyB0aGlzIGlzIGEgUENJIGRyaXZlciBwcm9iZSBmdW5jdGlvbiBmaXgsIGZ1enppbmcgc2VlbXMgbGlrZSBhIHdvcnRod2hpbGUgZW5kZWF2b3IuIFRoZSBhY3R1YWwgcHJvYmUgZnVuY3Rpb24gd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4gaXMgYHJ0bF9pbml0X29uZWAuIE5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHdlJiMzOTt2ZSBpZGVudGlmaWVkIHRoZSByaWdodCBzcG90LCBhbmQgdGhhdCB3ZSYjMzk7cmUgbm90IG1pc3Npbmcgb3RoZXIgaW1wb3J0YW50IGZ1bmN0aW9ucyBpbiB0aGlzIGFyZWEgdGhhdCBtaWdodCBiZSB3b3J0aCBzaW1pbGFyIGF0dGVudGlvbi4gVGhlcmUgbWF5IGJlIGFkamFjZW50IHBvaW50cyBmb3IgdXMgdG8gZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGxfaW5pdF9vbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xOTQ1PXN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9jb3VudGVyX29mZnNldHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTk1OC1cdCAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxOTU5Olx0ICogKCopIFdlIGNhbiYjMzk7dCBjYWxsIHJ0bDgxNjlfaW5pdF9jb3VudGVyX29mZnNldHMgZnJvbSBydGxfaW5pdF9vbmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE5NjAtXHQgKiBmb3IgdGhlIHJlYXNvbiBzdGF0ZWQgaW4gcnRsODE2OV91cGRhdGVfY291bnRlcnM7IENtZFJ4RW5iIGlzIG9ubHlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01NTkzPXN0YXRpYyBib29sIHJ0bF9hc3BtX2lzX3NhZmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTYwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU2MDI6c3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NjAzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01ODI2PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBydGw4MTY5X3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTgyOC1cdC5pZF90YWJsZVx0PSBydGw4MTY5X3BjaV90YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1ODI5Olx0LnByb2JlXHRcdD0gcnRsX2luaXRfb25lLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTgzMC1cdC5yZW1vdmVcdFx0PSBydGxfcmVtb3ZlX29uZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxODcKCQkJCQkJCW91dHB1dDogMTQwCgkJCQkJCQl0aG91Z2h0czogNTgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFN1YnRsZSBCdWcgaW4gdGhlIGBydGxfaW5pdF9vbmVgIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSB0aGUgcHJvYmxlbSBqdW1wcyBvdXQgYXQgbWUuIFRoZSBjb3JlIGlzc3VlIGlzIHRoZSB2YWx1ZSBhc3NpZ25tZW50OiBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgYW5kIGBSVExfR0lHQV9NQUNfTk9ORWAgYXJlIGJlaW5nIHRyZWF0ZWQgYXMgdGhlIHNhbWUsIHdoaWNoIGlzIGEgYmlnIHJlZCBmbGFnIGluIHRoaXMgY29udGV4dC4gTGV0JiMzOTtzIGJyZWFrIGl0IGRvd246CgpUaGUgcHJvYmUgZnVuY3Rpb24sIGBydGxfaW5pdF9vbmVgLCBpcyB0aGUgZW50cnkgcG9pbnQuIFRoZSBwYXRjaCBhaW1zIHRvIGZpeCBhIGNvbmRpdGlvbiB3aGVyZSB0aGVzZSB0d28gY29uc3RhbnRzIGFyZSBpZGVudGljYWwuIElmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIHRoZW4gdGhlIGNhdGNoLWFsbCBlbnRyeSBpbiBgcnRsX2NoaXBfaW5mb2AgZW5kcyB1cCBhc3NpZ25pbmcgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkIGBSVExfR0lHQV9NQUNfTk9ORWAuIEl0IGJlY29tZXMgYSBzb3VyY2Ugb2YgbWlzaWRlbnRpZmljYXRpb24uCgpUaGlzIG1lYW5zIHRoZSBjYXRjaC1hbGwgZW50cnk6CmBgYGMKLyogQ2F0Y2gtYWxsICovCnsgMHgwMDAsIDB4MDAwLAlSVExfR0lHQV9NQUNfTk9ORSB9CmBgYAppcyBlZmZlY3RpdmVseToKYGBgYwovKiBDYXRjaC1hbGwgKi8KeyAweDAwMCwgMHgwMDAsIFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgfQpgYGAKCkFuZCBzaW1pbGFybHksIHRoZSBpbnRlbmRlZCBleHRlbmRlZCBlbnRyeToKYGBgYwovKiBleHRlbmRlZCBjaGlwIHZlcnNpb24qLwp7IDB4N2NmLCAweDdjOCwgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB9LApgYGAKaXMgaW5zdGVhZCB0aGlzOgpgYGBjCi8qIGV4dGVuZGVkIGNoaXAgdmVyc2lvbiovCnsgMHg3Y2YsIDB4N2M4LCBSVExfR0lHQV9NQUNfTk9ORSB9LApgYGAKCkNvbnNlcXVlbnRseSwgaWYgYSBjaGlwIGhhcHBlbnMgdG8gbWF0Y2ggdGhlIGV4dGVuZGVkIGVudHJ5LCBpdCYjMzk7cyB3cm9uZ2x5IGdpdmVuIGBSVExfR0lHQV9NQUNfTk9ORWAuCgpUaGlzIGNyZWF0ZXMgYSBjaGFpbiByZWFjdGlvbi4gIFRoZSBjb2RlIHRoZW4gY2hlY2tzIGBpZiAoY2hpcC0mZ3Q7bWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRClgLiBTaW5jZSB0aGVzZSB0d28gY29uc3RhbnRzIGFyZSBlcXVhbCwgdGhhdCBjb25kaXRpb24gbm93IGJlY29tZXMgdHJ1ZSwgZXZlbiBmb3IgYSBub24tZXh0ZW5kZWQgY2hpcC4gQXMgYSByZXN1bHQgaXQgcmVhZHMgYFRYX0NPTkZJR19WMmAgYW5kIHRyaWdnZXJzIGBydGw4MTY5X2dldF9leHRlbmRlZF9jaGlwX3ZlcnNpb25gLgoKSWYgdGhlIGNoaXAgZG9lc24mIzM5O3QgbWF0Y2ggdGhlIGV4dGVuZGVkIGVudHJ5LCBpdCBoaXRzIHRoZSBjYXRjaC1hbGwsIGFuZCBpcyBhc3NpZ25lZCB0aGUgdmFsdWUgdGhhdCBpcyB1c2VkIGluIHRoZSBgUlRMX0dJR0FfTUFDX05PTkVgIGVudHJ5LiAgYFJUTF9HSUdBX01BQ19OT05FYCBpcyB0aGUgc2FtZSBhcyBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAuICBUaGVuIHRoZSBzYW1lIGNvbmRpdGlvbiwgYGlmIChjaGlwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEKWAgaXMgbm93IHRydWUhIFRoaXMgbGVhZHMgdGhlIHByb2JlIHRvIGluY29ycmVjdGx5IGNhbGwgYHJ0bDgxNjlfZ2V0X2V4dGVuZGVkX2NoaXBfdmVyc2lvbmAgYWdhaW4sIGV2ZW4gZm9yIHRoZSAmIzM0O3Vua25vd24mIzM0OyBjaGlwcy4KClRoZSBwcm9ibGVtIGVzY2FsYXRlcy4gSWYgYHJ0bDgxNjlfZ2V0X2V4dGVuZGVkX2NoaXBfdmVyc2lvbmAgcmV0dXJucyBgUlRMX0dJR0FfTUFDX05PTkVgIChiZWNhdXNlIGl0IGRvZXNuJiMzOTt0IHJlY29nbml6ZSB0aGUgZXh0ZW5kZWQgdmVyc2lvbiksIHRoZW4gYGlmIChjaGlwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfTk9ORSlgIGJlY29tZXMgdHJ1ZSwgbGVhZGluZyB0byBhIGAtRU5PREVWYCBlcnJvci4gQnV0LCB0aGUgcmVhbCBraWNrZXIgaXMgaWYgdGhlIGV4dGVuZGVkIHZlcnNpb24gKmRvZXMqIG1hdGNoIHNvbWV0aGluZywgdGhlbiB0aGUgY29kZSB3aWxsIGVycm9uZW91c2x5IGNsYXNzaWZ5IGFuIHVua25vd24gY2hpcCBhcyBhbiAmIzM0O2V4dGVuZGVkJiMzNDsgY2hpcC4gVGhhdCYjMzk7cyBhIHNlcmlvdXMgZnVuY3Rpb25hbCBidWcgdGhhdCBoYXMgdG8gYmUgZml4ZWQuCgpJIGFtIHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYCBiZWNhdXNlIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBgcnRsX2luaXRfb25lYCBmdW5jdGlvbiBpcyB0aGUgcGxhY2UgdG8gZm9jdXMgb24sIGFuZCBJJiMzOTtsbCBrZWVwIHRoZSBgUjgxNjlgIGNvbmZpZyBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UjgxNjkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydGxfaW5pdF9vbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gZW51bSB2YWx1ZSBjb2xsaXNpb24gd2hlcmUgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB3YXMgaW1wbGljaXRseSBlcXVhbCB0byBSVExfR0lHQV9NQUNfTk9ORS4gVGhpcyBjYXVzZWQgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiAocnRsX2luaXRfb25lKSB0byBtaXNpZGVudGlmeSB1bmtub3duIGNoaXBzIGFzIGV4dGVuZGVkIGNoaXBzLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluY29ycmVjdCBpbml0aWFsaXphdGlvbiBvciBjcmFzaGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBQQ0kgZHJpdmVyIHByb2JlIHBhdGggdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgc3l6a2FsbGVyJiMzOTtzIHN5el9wY2lfZGV2aWNlX2FkZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UjgxNjkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydGxfaW5pdF9vbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gZW51bSB2YWx1ZSBjb2xsaXNpb24gd2hlcmUgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB3YXMgaW1wbGljaXRseSBlcXVhbCB0byBSVExfR0lHQV9NQUNfTk9ORS4gVGhpcyBjYXVzZWQgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiAocnRsX2luaXRfb25lKSB0byBtaXNpZGVudGlmeSB1bmtub3duIGNoaXBzIGFzIGV4dGVuZGVkIGNoaXBzLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluY29ycmVjdCBpbml0aWFsaXphdGlvbiBvciBjcmFzaGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBQQ0kgZHJpdmVyIHByb2JlIHBhdGggdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgc3l6a2FsbGVyJiMzOTtzIHN5el9wY2lfZGV2aWNlX2FkZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBlbnVtIHZhbHVlIGNvbGxpc2lvbiBpbiBgZW51bSBtYWNfdmVyc2lvbmAgd2hlcmUgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGltcGxpY2l0bHkgaGFkIHRoZSBzYW1lIHZhbHVlIGFzIGBSVExfR0lHQV9NQUNfTk9ORWAuIFRoaXMgaXMgYSBsb2dpYyBidWcgYWZmZWN0aW5nIGhhcmR3YXJlIGlkZW50aWZpY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBmb3Igc3BlY2lmaWMgUmVhbHRlayBuZXR3b3JrIGNhcmRzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gU3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgY2hhbmdlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5N2Y1MzVlZWUyZTdhZGJlMGFmMDEzNTY2MzY1Y2YyZjViZDg4N2RlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAxMTowMjo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaAppbmRleCAwYjljMWQ0ZWI0OGJhLi5mYjc3MmNjMDQzMTA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oCkBAIC03NCw3ICYjNDM7NzQsNyBAQCBlbnVtIG1hY192ZXJzaW9uIHsKIAlSVExfR0lHQV9NQUNfVkVSXzgwLAogCVJUTF9HSUdBX01BQ19OT05FLAogCVJUTF9HSUdBX01BQ19WRVJfTEFTVCA9IFJUTF9HSUdBX01BQ19OT05FIC0gMSwKLQlSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVECiYjNDM7CVJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgPSBSVExfR0lHQV9NQUNfTk9ORSAmIzQzOyAxCiB9OwogCiBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxOQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQ4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWFsdGVrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIFJlYWx0ZWsgcjgxNjkgZHJpdmVyLCBhbmQgaXQmIzM5O3MgdHdlYWtpbmcgdGhlIGBtYWNfdmVyc2lvbmAgZW51bSBpbiBgcjgxNjkuaGAuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYC4gSW5pdGlhbGx5LCBpdCB3YXMgYmVpbmcgYXNzaWduZWQgaW1wbGljaXRseSwgYW5kIHRoYXQmIzM5O3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gTGV0IG1lIHdhbGsgdGhyb3VnaCB0aGlzLi4uCgpCZWZvcmUgdGhlIHBhdGNoLCBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaW1wbGljaXRseSBhc3N1bWVkIHRoZSBuZXh0IHZhbHVlLiBOb3csIHRoZSBlbnVtIGFzIGl0IHN0YW5kcyBpcyBkZWZpbmVkIGFzOgoKYGBgYwplbnVtIG1hY192ZXJzaW9uIHsKICAgIC4uLgoJUlRMX0dJR0FfTUFDX1ZFUl84MCwKCVJUTF9HSUdBX01BQ19OT05FLAoJUlRMX0dJR0FfTUFDX1ZFUl9MQVNUID0gUlRMX0dJR0FfTUFDX05PTkUgLSAxLAoJUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRAp9OwpgYGAKClNvLCBgUlRMX0dJR0FfTUFDX1ZFUl9MQVNUYCBpcyBleHBsaWNpdGx5IHNldCB0byBgUlRMX0dJR0FfTUFDX05PTkUgLSAxYC4gVGhpcyBtZWFucyB0aGF0IGJlZm9yZSB0aGUgcGF0Y2gsIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCB3YXMgaW1wbGljaXRseSAqZXF1YWwqIHRvIGBSVExfR0lHQV9NQUNfTk9ORWAhIFRoYXQmIzM5O3MgYSBkZWZpbml0ZSBjb2xsaXNpb24uIFRoZSBpbXBsaWNpdCBpbmNyZW1lbnQgbWFkZSBpdCBlcXVhbCB0byB0aGUgZXhwbGljaXRseSBkZWNsYXJlZCBgUlRMX0dJR0FfTUFDX05PTkVgLgoKVGhlIHBhdGNoIGZpeGVzIHRoaXMgYnkgbWFraW5nIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEID0gUlRMX0dJR0FfTUFDX05PTkUgJiM0MzsgMWAuIFRoaXMgcmVzb2x2ZXMgdGhlIHZhbHVlIGNsYXNoLgoKVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZW51bSB2YWx1ZSBidWcsIEkgZG9uJiMzOTt0IHNlZSBhbnkgaW1tZWRpYXRlIGNvbmNlcm5zIHJlZ2FyZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXQmIzM5O3MganVzdCBhIG1hdHRlciBvZiBlbnN1cmluZyBkaXN0aW5jdCB2YWx1ZXMuIE5vdywgSSBuZWVkIHRvIGNoZWNrIHdoZXJlIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpcyBhY3R1YWxseSB1c2VkIGluIHRoZSBkcml2ZXIgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oPTE1PWVudW0gbWFjX3ZlcnNpb24ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC03Ni1cdFJUTF9HSUdBX01BQ19WRVJfTEFTVCA9IFJUTF9HSUdBX01BQ19OT05FIC0gMSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo3NzpcdFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgPSBSVExfR0lHQV9NQUNfTk9ORSAmIzQzOyAxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtNzgtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz05OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIxMy1cdC8qIGV4dGVuZGVkIGNoaXAgdmVyc2lvbiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMTQ6XHR7IDB4N2NmLCAweDdjOCwgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjE1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTU2MDI9c3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU2NTk6XHRpZiAoY2hpcC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NjYwLVx0XHRleHRfeGlkX3N0ciA9IFwmIzM0O2V4dFwmIzM0OztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ0OQoJCQkJCQkJb3V0cHV0OiAxMzAKCQkJCQkJCXRob3VnaHRzOiAxMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFbnVtIENvbGxpc2lvbiBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFdlIGhhdmUgYW4gZW51bSBjb2xsaXNpb24gaXNzdWUuIFNwZWNpZmljYWxseSwgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIHdhcywgZm9yIHNvbWUgcmVhc29uLCBnZXR0aW5nIHRoZSBzYW1lIHZhbHVlIGFzIGBSVExfR0lHQV9NQUNfTk9ORWAuIFRoaXMgaXMgYSBjbGFzc2ljIGxvZ2ljIGVycm9yLCBub3RoaW5nIHRoYXQgaGludHMgYXQgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgd29lcy4gSXQgbWVhbnMgdGhhdCBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQsIHRoZSBjb2RlIHdhcyBtaXNpbnRlcnByZXRpbmcgdGhlIGhhcmR3YXJlIHZlcnNpb24uIElmIGBjaGlwLSZndDttYWNfdmVyc2lvbmAgaGVsZCBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAsIGl0IHdhcyBzb21ldGltZXMgYmVpbmcgdHJlYXRlZCBhcyBgUlRMX0dJR0FfTUFDX05PTkVgLCBhbmQgdmljZSB2ZXJzYS4gQ2xlYXJseSBhIGJ1ZywgYnV0IG5vdCBhIG1lbW9yeSBzYWZldHkgb25lLiBJJiMzOTttIGdvaW5nIHRvIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYmVjYXVzZSBpdCYjMzk7cyBub3QgYXBwbGljYWJsZSBoZXJlLiBUaGlzIGlzIGp1c3QgYSBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiBsb2dpYyBidWcsIHJlcXVpcmluZyBhIHNpbXBsZSBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDExOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGVudW0gdmFsdWUgY29sbGlzaW9uIGluIGBlbnVtIG1hY192ZXJzaW9uYCB3aGVyZSBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaW1wbGljaXRseSBoYWQgdGhlIHNhbWUgdmFsdWUgYXMgYFJUTF9HSUdBX01BQ19OT05FYC4gVGhpcyBpcyBhIGxvZ2ljIGJ1ZyBhZmZlY3RpbmcgaGFyZHdhcmUgaWRlbnRpZmljYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGZvciBzcGVjaWZpYyBSZWFsdGVrIG5ldHdvcmsgY2FyZHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBTdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTiBhcmUgc3VmZmljaWVudCBmb3IgdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBlbnVtIHZhbHVlIGNvbGxpc2lvbiBpbiBgZW51bSBtYWNfdmVyc2lvbmAgd2hlcmUgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGltcGxpY2l0bHkgaGFkIHRoZSBzYW1lIHZhbHVlIGFzIGBSVExfR0lHQV9NQUNfTk9ORWAuIFRoaXMgaXMgYSBsb2dpYyBidWcgYWZmZWN0aW5nIGhhcmR3YXJlIGlkZW50aWZpY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBmb3Igc3BlY2lmaWMgUmVhbHRlayBuZXR3b3JrIGNhcmRzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gU3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgY2hhbmdlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMjo0Ny4yMjU5NTM5MDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzQ4ODUzNzMwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSODE2OVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bF9pbml0X29uZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gZW51bSB2YWx1ZSBjb2xsaXNpb24gaW4gYGVudW0gbWFjX3ZlcnNpb25gIHdoZXJlIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpbXBsaWNpdGx5IGhhZCB0aGUgc2FtZSB2YWx1ZSBhcyBgUlRMX0dJR0FfTUFDX05PTkVgLiBUaGlzIGlzIGEgbG9naWMgYnVnIGFmZmVjdGluZyBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gZm9yIHNwZWNpZmljIFJlYWx0ZWsgbmV0d29yayBjYXJkcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIEtBU0FOIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIGNoYW5nZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBlbnVtIHZhbHVlIGNvbGxpc2lvbiB3aGVyZSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEIHdhcyBpbXBsaWNpdGx5IGVxdWFsIHRvIFJUTF9HSUdBX01BQ19OT05FLiBUaGlzIGNhdXNlZCB0aGUgZHJpdmVyJ3MgcHJvYmUgZnVuY3Rpb24gKHJ0bF9pbml0X29uZSkgdG8gbWlzaWRlbnRpZnkgdW5rbm93biBjaGlwcyBhcyBleHRlbmRlZCBjaGlwcywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBpbmNvcnJlY3QgaW5pdGlhbGl6YXRpb24gb3IgY3Jhc2hlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgUENJIGRyaXZlciBwcm9iZSBwYXRoIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHN5emthbGxlcidzIHN5el9wY2lfZGV2aWNlX2FkZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDI6NDcuMjI1OTU5MzIxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzcxMzA3MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5N2Y1MzVlZWUyZTdhZGJlMGFmMDEzNTY2MzY1Y2YyZjViZDg4N2RlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDggMTE6MDI6NDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oXFxuaW5kZXggMGI5YzFkNGViNDhiYS4uZmI3NzJjYzA0MzEwNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmhcXG5AQCAtNzQsNyArNzQsNyBAQCBlbnVtIG1hY192ZXJzaW9uIHtcXG4gXFx0UlRMX0dJR0FfTUFDX1ZFUl84MCxcXG4gXFx0UlRMX0dJR0FfTUFDX05PTkUsXFxuIFxcdFJUTF9HSUdBX01BQ19WRVJfTEFTVCA9IFJUTF9HSUdBX01BQ19OT05FIC0gMSxcXG4tXFx0UlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRFxcbitcXHRSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEID0gUlRMX0dJR0FfTUFDX05PTkUgKyAxXFxuIH07XFxuIFxcbiBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMjo0Ny42NjM4MjYxNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY0NTU5MTc5OTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlI4MTY5XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRsX2luaXRfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gZW51bSB2YWx1ZSBjb2xsaXNpb24gd2hlcmUgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB3YXMgaW1wbGljaXRseSBlcXVhbCB0byBSVExfR0lHQV9NQUNfTk9ORS4gVGhpcyBjYXVzZWQgdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIChydGxfaW5pdF9vbmUpIHRvIG1pc2lkZW50aWZ5IHVua25vd24gY2hpcHMgYXMgZXh0ZW5kZWQgY2hpcHMsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gaW5jb3JyZWN0IGluaXRpYWxpemF0aW9uIG9yIGNyYXNoZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFBDSSBkcml2ZXIgcHJvYmUgcGF0aCB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBzeXprYWxsZXIncyBzeXpfcGNpX2RldmljZV9hZGQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDk3ZjUzNWVlZTJlN2FkYmUwYWYwMTM1NjYzNjVjZjJmNWJkODg3ZGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDExOjAyOjQ2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oXG5pbmRleCAwYjljMWQ0ZWI0OGJhLi5mYjc3MmNjMDQzMTA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmhcbkBAIC03NCw3ICs3NCw3IEBAIGVudW0gbWFjX3ZlcnNpb24ge1xuIFx0UlRMX0dJR0FfTUFDX1ZFUl84MCxcbiBcdFJUTF9HSUdBX01BQ19OT05FLFxuIFx0UlRMX0dJR0FfTUFDX1ZFUl9MQVNUID0gUlRMX0dJR0FfTUFDX05PTkUgLSAxLFxuLVx0UlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRFxuK1x0UlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCA9IFJUTF9HSUdBX01BQ19OT05FICsgMVxuIH07XG4gXG4gc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDExOjAyOjQ3LjY2MzgyNzQ1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI2NzU0NjI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSZWFsdGVrIEV0aGVybmV0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmhgLiBJbW1lZGlhdGVseSwgSSBzZWUgaXQncyB0b3VjaGluZyBhbiBgZW51bSBtYWNfdmVyc2lvbmAgYW5kIHNwZWNpZmljYWxseSwgdGhlIHZhbHVlIGFzc2lnbmVkIHRvIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYC4gSW5pdGlhbGx5LCBpdCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIFRoZSBvcmlnaW5hbCBlbnVtIGhhZCBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaW1wbGljaXRseSBhc3NpZ25lZCwgcG9zaXRpb25lZCBhZnRlciBgUlRMX0dJR0FfTUFDX1ZFUl9MQVNUYC5cblxuQnV0IGhhbmcgb27igKYgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBgUlRMX0dJR0FfTUFDX1ZFUl9MQVNUYCBpcyBkZWZpbmVkIGFzIGBSVExfR0lHQV9NQUNfTk9ORSAtIDFgLiBUaGF0IG1lYW5zIHRoZSBvcmlnaW5hbCBpbXBsaWNpdCBhc3NpZ25tZW50IG9mIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCB3YXMsIGluIGZhY3QsIGBSVExfR0lHQV9NQUNfTk9ORWAuIFdhaXQgYSBtaW51dGUsIHRoYXQncyBhIHByb2JsZW0sIGJlY2F1c2UgYFJUTF9HSUdBX01BQ19OT05FYCBpcyBhbHJlYWR5IGV4cGxpY2l0bHkgZGVmaW5lZCB3aXRoaW4gdGhlIGVudW0uIFNvLCBpdCB3YXMgZWZmZWN0aXZlbHkgYSBkdXBsaWNhdGUgdmFsdWUhXG5cbk5vdywgdGhlIHBhdGNoIGlzIGV4cGxpY2l0bHkgYXNzaWduaW5nIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBhcyBgUlRMX0dJR0FfTUFDX05PTkUgKyAxYC4gVGhpcyBmaXhlcyB0aGUgaW1wbGljaXQgZHVwbGljYXRpb24gYW5kIGVuc3VyZXMgaXQncyBhIHVuaXF1ZSB2YWx1ZSB3aXRoaW4gdGhlIGVudW1lcmF0aW9uLiBOb3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgd2FzIG5lZWRlZC4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gdHJhY2sgZG93biBhbGwgdGhlIGluc3RhbmNlcyB3aGVyZSBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaXMgYWN0dWFsbHkgdXNlZC4gVGhpcyBjaGFuZ2UgbWlnaHQgYmUgYSBidWcgZml4LCBvciBtYXliZSBpdCdzIHNldHRpbmcgdGhlIHN0YWdlIGZvciBzb21lIGZ1dHVyZSBleHRlbnNpb24gaW4gdGhpcyBkcml2ZXIsIG9yIHBlcmhhcHMgaXQncyByZWxhdGVkIHRvIHNvbWUgc2lsaWNvbiByZXZpc2lvbiBvciB2YXJpYW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDIyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDI6NTMuOTMxMzc2OTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxNjI5NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg9MTU9ZW51bSBtYWNfdmVyc2lvbiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtNzYtXFx0UlRMX0dJR0FfTUFDX1ZFUl9MQVNUID0gUlRMX0dJR0FfTUFDX05PTkUgLSAxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo3NzpcXHRSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEID0gUlRMX0dJR0FfTUFDX05PTkUgKyAxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTc4LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz05OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjEzLVxcdC8qIGV4dGVuZGVkIGNoaXAgdmVyc2lvbiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjE0OlxcdHsgMHg3Y2YsIDB4N2M4LCBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTYwMj1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU2NTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTY1OTpcXHRpZiAoY2hpcC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU2NjAtXFx0XFx0ZXh0X3hpZF9zdHIgPSBcXFwiZXh0XFxcIjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDI6NTMuOTc5NTQ1ODY5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODcwNzI0MjA0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHI4MTY5IERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaXMgc2hvd2luZyB1cCBpbiBgcnRsX2luaXRfb25lYCB3aXRoaW4gdGhlIGBydGxfY2hpcF9pbmZvYCBhcnJheSwgYW5kIHRoZSBkcml2ZXIgaXMgdGhlIGByODE2OWAgUENJIGRyaXZlciBmb3IgUmVhbHRlayBnaWdhYml0IGV0aGVybmV0IGNvbnRyb2xsZXJzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHdoZXRoZXIgdGhpcyBkcml2ZXIgaXMgZXZlbiByZWFjaGFibGUgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudC4gUUVNVSBoYW5kbGVzIGBydGw4MTM5YCwgYnV0IGRvZXMgaXQgc3VwcG9ydCB0aGUgYHJ0bDgxNjlgIHZhcmlhbnQ/IEEgcXVpY2sgY2hlY2sgb2YgUUVNVSdzIGVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlcyByZXZlYWxzIGEgbGlzdCwgYnV0IG5vIGRpcmVjdCBgcnRsODE2OWAgZW11bGF0aW9uLlxuXG5Ib3dldmVyLCBqdXN0IGJlY2F1c2UgaXQncyBub3QgbmF0aXZlbHkgZW11bGF0ZWQgZG9lc24ndCBtZWFuIGl0J3Mgb2ZmLWxpbWl0cy4gU3l6a2FsbGVyJ3MgYHN5el9wY2lfZGV2aWNlX2FkZGAgY2FsbCBtaWdodCBiZSBhIHdvcmthcm91bmQsIGFzIGl0IGNhbiBpbmplY3QgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIEJBUnMgdG8gZW11bGF0ZSBhbnkgUENJIGRldmljZS4gSWYgYHI4MTY5YCBpcyBhIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSBkcml2ZXIsIHRoZW4sIGluIHRoZW9yeSwgaXQgc2hvdWxkIGJlIGZ1enphYmxlIHRocm91Z2ggYHN5el9wY2lfZGV2aWNlX2FkZGAuXG5cbkkgbmVlZCB0byByZS1ldmFsdWF0ZSB0aGUgY29udGV4dCBvZiB0aGUgcHJvbXB0LCB0aG91Z2guIEl0IHNwZWNpZmljYWxseSBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVIGRyaXZlcnPigJR0aGluZ3MgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgYW5kIGFyZSAqbm90KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBEb2VzIGByODE2OWAgZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnk/IE5vLCBpdCdzIGEgc3RhbmRhcmQgRXRoZXJuZXQgZHJpdmVyLlxuXG5UaGUgUENJIGZ1enplciBpbiBzeXprYWxsZXIgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciB0aGlzIHB1cnBvc2UsIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gZnV6eiBpdCFcblxuQWgsIHJpZ2h0LCBsb29raW5nIGF0IHRoZSBwYXRjaCwgaXQgc2VlbXMgdG8gYmUganVzdCBjaGFuZ2luZyBhbiBlbnVtIHZhbHVlLiBJbnRlcmVzdGluZy4gYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIHdhcywgYXBwYXJlbnRseSwgZXF1YWwgdG8gYFJUTF9HSUdBX01BQ19OT05FYCBiZWZvcmUsIHdoaWNoIGNyZWF0ZWQgYSBidWcgd2hlcmUgYGNoaXAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgd291bGQgZXZhbHVhdGUgdG8gdHJ1ZSB3aGVuIGBSVExfR0lHQV9NQUNfTk9ORWAgd2FzIHRoZSBhY3R1YWwgaW50ZW5kZWQgdmFsdWUuIFdlbGwsIHRoYXQgbWFrZXMgc2Vuc2U7IGBSVExfR0lHQV9NQUNfTk9ORWAgaXMgdXNlZCB3aGVuIHRoZXJlJ3Mgbm8gbWF0Y2hpbmcgTUFDIHZlcnNpb24uIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gaG93IHRoZXNlIGVudW0gdmFsdWVzIGFyZSB1c2VkLCBzdGFydGluZyB3aXRoIGBydGxfaW5pdF9vbmVgIGFuZCB0aGUgYHJ0bF9jaGlwX2luZm9gIGFycmF5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjgxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDExOjAzOjAyLjY4Njc5MDQ1NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTM1MzM2OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUlRMX0dJR0FfTUFDX05PTkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oPTE1PWVudW0gbWFjX3ZlcnNpb24ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTc0LVxcdFJUTF9HSUdBX01BQ19WRVJfODAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjc1OlxcdFJUTF9HSUdBX01BQ19OT05FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo3NjpcXHRSVExfR0lHQV9NQUNfVkVSX0xBU1QgPSBSVExfR0lHQV9NQUNfTk9ORSAtIDEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjc3OlxcdFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgPSBSVExfR0lHQV9NQUNfTk9ORSArIDFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtNzgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTYtXFx0LyogQ2F0Y2gtYWxsICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjE3OlxcdHsgMHgwMDAsIDB4MDAwLFxcdFJUTF9HSUdBX01BQ19OT05FIH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTIyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gcnRsX2NoaXBfaW5mb3NfZXh0ZW5kZWRbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIyNC1cXHQvKiBDYXRjaC1hbGwgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMjU6XFx0eyAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCBSVExfR0lHQV9NQUNfTk9ORSB9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjI2LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01NjAyPXN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY2My1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTY2NDpcXHRpZiAoY2hpcC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX05PTkUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY2NS1cXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCAtRU5PREVWLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzowMi45NDAzMjk2NjhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTI3OTE5MjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgUmVkdW5kYW5jeSBpbiBNQUMgVmVyc2lvbiBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IGBSVExfR0lHQV9NQUNfTk9ORWAgaXMgdXNlZCBhcyBhIGNhdGNoLWFsbCwgcmlnaHQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGlmIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCB3ZXJlIGFjY2lkZW50YWxseSAqZXF1YWwqIHRvIGBSVExfR0lHQV9NQUNfTk9ORWAsIHRoZSBjb2RlJ3MgbG9naWMgd291bGQgYmVjb21lIGNvbXBsZXRlbHkgc2tld2VkLiBMZXQgbWUgd2FsayB0aHJvdWdoIG15IG1lbnRhbCBwcm9jZXNzLlxuXG5JZiB0aGV5IHdlcmUgZXF1aXZhbGVudCwgYSBgY2hpcC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBjaGVjayB3b3VsZCAqYWxzbyogYmUgdHJ1ZSBmb3IgdGhlIGBSVExfR0lHQV9NQUNfTk9ORWAgY2FzZS4gVGhhdCBtYWtlcyBzZW5zZSwgaW4gdGhlIGNvbnRleHQgb2YgaXQgYmVpbmcgYSBjYXRjaC1hbGwuXG5cbk5vdywgbGV0J3Mgem9vbSBpbiBvbiBgcnRsX2luaXRfb25lYC4gSSBzZWUgYSBjb3VwbGUgb2YgY3J1Y2lhbCBgaWZgIHN0YXRlbWVudHMuIFRoZSBmaXJzdCBvbmUgY2hlY2tzIGBjaGlwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGFuZCwgaWYgdHJ1ZSwgc2V0cyBgZXh0X3hpZF9zdHJgLiBUaGF0J3MgaW1wb3J0YW50LiBUaGVuIHRoZXJlJ3MgYW5vdGhlciBgaWZgIHRoYXQgY2hlY2tzIGlmIGBjaGlwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19OT05FYC4gSWYgKnRoYXQncyogdHJ1ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgYC1FTk9ERVZgLCBpbmRpY2F0aW5nIGEgZmFpbHVyZS5cblxuSGVyZSdzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcgYW5kIGNvbmNlcm5pbmcuIElmIHRob3NlIHR3byBNQUMgdmVyc2lvbiBjb25zdGFudHMgKndlcmUqIHRoZSBzYW1lLCB0aGUgZmlyc3QgYGlmYCBzdGF0ZW1lbnQgd291bGQgZXhlY3V0ZSwgc2V0dGluZyBzb21ldGhpbmcgdXAuIFRoZW4sIHRoZSBzZWNvbmQgYGlmYCBzdGF0ZW1lbnQsIGJlY2F1c2UgdGhlIHZhbHVlIGlzIHRoZSBzYW1lLCB3b3VsZCAqYWxzbyogZXhlY3V0ZSBhbmQgcmV0dXJuIGAtRU5PREVWYC4gU28sIGl0IHdvdWxkIHJ1biBzb21lIGluaXRpYWxpemF0aW9uIGNvZGUsIGFuZCB0aGVuIGltbWVkaWF0ZWx5IHJldHVybiBhbiBlcnJvci4gVGhhdCBzZWVtcyBsaWtlIHJlYWxseSBiYWQgbG9naWMsIGEgcmFjZSBjb25kaXRpb24gd2l0aCB0aGUgY29kZSB0aHJvd2luZyBhbiBlcnJvciBmb3Igc29tZXRoaW5nIGl0IHdhcyBhdHRlbXB0aW5nIHRvIGhhbmRsZS5cblxuU28sIGxldCBtZSBiYWNrIHVwIGEgbGl0dGxlLiBUaGlzIG1lYW5zIHRoZSBjYXRjaC1hbGwgaW4gYHJ0bF9jaGlwX2luZm9gIHdvdWxkIHNldCBgbWFjX3ZlcnNpb25gIHRvIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpbiB0aGUgY2FzZSBvZiBhIG1hdGNoLiBUaGlzIHNldHMgb2ZmIGFsYXJtIGJlbGxzIGFuZCBuZWVkcyBhIGRlZXBlciBsb29rLlxuXG5Pa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGxvZ2ljIGJldHRlci4gTGV0IG1lIGp1bXAgYmFjayB0byBgcnRsX2luaXRfb25lYCBhZ2Fpbi4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgY29kZSBmbG93IGFuZCBlbnN1cmUgdGhlcmUgaXNuJ3Qgc29tZSB1bmludGVuZGVkIGNvbnNlcXVlbmNlLCBhIGRvdWJsZS1leGVjdXRpb24gb3IgY29uZmxpY3QsIGlmIHRoaXMgZXF1aXZhbGVuY2UgZXhpc3RlZC4gSXQncyBhIGZ1bmRhbWVudGFsIG1pc3VuZGVyc3RhbmRpbmcgb2YgdGhlIHZlcnNpb24gY29uc3RhbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDc1LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDExOjAzOjA5LjQ2ODI1MTE2M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMDUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NjQwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI1NjQwOlxcdFxcdC8qIHVzZSBmaXJzdCBNTUlPIHJlZ2lvbiAqL1xcbjU2NDE6XFx0XFx0cmVnaW9uID0gZmZzKHBjaV9zZWxlY3RfYmFycyhwZGV2LCBJT1JFU09VUkNFX01FTSkpIC0gMTtcXG41NjQyOlxcdFxcdGlmIChyZWdpb24gXFx1MDAzYyAwKVxcbjU2NDM6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgLUVOT0RFViwgXFxcIm5vIE1NSU8gcmVzb3VyY2UgZm91bmRcXFxcblxcXCIpO1xcbjU2NDQ6XFx0XFxuNTY0NTpcXHRcXHR0cC1cXHUwMDNlbW1pb19hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGRldiwgcmVnaW9uLCBLQlVJTERfTU9ETkFNRSk7XFxuNTY0NjpcXHRcXHRpZiAoSVNfRVJSKHRwLVxcdTAwM2VtbWlvX2FkZHIpKVxcbjU2NDc6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgUFRSX0VSUih0cC1cXHUwMDNlbW1pb19hZGRyKSxcXG41NjQ4OlxcdFxcdFxcdFxcdFxcdCAgICAgXFxcImNhbm5vdCByZW1hcCBNTUlPLCBhYm9ydGluZ1xcXFxuXFxcIik7XFxuNTY0OTpcXHRcXG41NjUwOlxcdFxcdHR4Y29uZmlnID0gUlRMX1IzMih0cCwgVHhDb25maWcpO1xcbjU2NTE6XFx0XFx0aWYgKHR4Y29uZmlnID09IH4wVSlcXG41NjUyOlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIC1FSU8sIFxcXCJQQ0kgcmVhZCBmYWlsZWRcXFxcblxcXCIpO1xcbjU2NTM6XFx0XFxuNTY1NDpcXHRcXHR4aWQgPSAodHhjb25maWcgXFx1MDAzZVxcdTAwM2UgMjApIFxcdTAwMjYgMHhmY2Y7XFxuNTY1NTpcXHRcXG41NjU2OlxcdFxcdC8qIElkZW50aWZ5IGNoaXAgYXR0YWNoZWQgdG8gYm9hcmQgKi9cXG41NjU3OlxcdFxcdGNoaXAgPSBydGw4MTY5X2dldF9jaGlwX3ZlcnNpb24oeGlkLCB0cC1cXHUwMDNlc3VwcG9ydHNfZ21paSk7XFxuNTY1ODpcXHRcXG41NjU5OlxcdFxcdGlmIChjaGlwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEKSB7XFxuNTY2MDpcXHRcXHRcXHRleHRfeGlkX3N0ciA9IFxcXCJleHRcXFwiO1xcbjU2NjE6XFx0XFx0XFx0eGlkID0gUlRMX1IzMih0cCwgVFhfQ09ORklHX1YyKTtcXG41NjYyOlxcdFxcdFxcdGNoaXAgPSBydGw4MTY5X2dldF9leHRlbmRlZF9jaGlwX3ZlcnNpb24oeGlkKTtcXG41NjYzOlxcdFxcdH1cXG41NjY0OlxcdFxcdGlmIChjaGlwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfTk9ORSlcXG41NjY1OlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIC1FTk9ERVYsXFxuNTY2NjpcXHRcXHRcXHRcXHRcXHQgICAgIFxcXCJ1bmtub3duIGNoaXAgJXNYSUQgJXgsIGNvbnRhY3QgcjgxNjkgbWFpbnRhaW5lcnMgKHNlZSBNQUlOVEFJTkVSUyBmaWxlKVxcXFxuXFxcIixcXG41NjY3OlxcdFxcdFxcdFxcdFxcdCAgICAgZXh0X3hpZF9zdHIsIHhpZCk7XFxuNTY2ODpcXHRcXHR0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPSBjaGlwLVxcdTAwM2VtYWNfdmVyc2lvbjtcXG41NjY5OlxcdFxcdHRwLVxcdTAwM2Vmd19uYW1lID0gY2hpcC1cXHUwMDNlZndfbmFtZTtcXG41NjcwOlxcdFxcbjU2NzE6XFx0XFx0LyogRGlzYWJsZSBBU1BNIEwxIGFzIHRoYXQgY2F1c2UgcmFuZG9tIGRldmljZSBzdG9wIHdvcmtpbmdcXG41NjcyOlxcdFxcdCAqIHByb2JsZW1zIGFzIHdlbGwgYXMgZnVsbCBzeXN0ZW0gaGFuZ3MgZm9yIHNvbWUgUENJZSBkZXZpY2VzIHVzZXJzLlxcbjU2NzM6XFx0XFx0ICovXFxuNTY3NDpcXHRcXHRpZiAocnRsX2FzcG1faXNfc2FmZSh0cCkpIHtcXG41Njc1OlxcdFxcdFxcdGRldl9pbmZvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJTeXN0ZW0gdmVuZG9yIGZsYWdzIEFTUE0gYXMgc2FmZVxcXFxuXFxcIik7XFxuNTY3NjpcXHRcXHRcXHRyYyA9IDA7XFxuNTY3NzpcXHRcXHR9IGVsc2Uge1xcbjU2Nzg6XFx0XFx0XFx0cmMgPSBwY2lfZGlzYWJsZV9saW5rX3N0YXRlKHBkZXYsIFBDSUVfTElOS19TVEFURV9MMSk7XFxuNTY3OTpcXHRcXHR9XFxuNTY4MDpcXHRcXHR0cC1cXHUwMDNlYXNwbV9tYW5hZ2VhYmxlID0gIXJjO1xcbjU2ODE6XFx0XFxuNTY4MjpcXHRcXHRpZiAocnRsX2lzXzgxMjUodHApKSB7XFxuNTY4MzpcXHRcXHRcXHR1MTYgZGF0YSA9IHI4MTY4X21hY19vY3BfcmVhZCh0cCwgMHhkMDA2KTtcXG41Njg0OlxcdFxcbjU2ODU6XFx0XFx0XFx0aWYgKChkYXRhIFxcdTAwMjYgMHhmZikgPT0gMHgwNylcXG41Njg2OlxcdFxcdFxcdFxcdHRwLVxcdTAwM2VzZnBfbW9kZSA9IHRydWU7XFxuNTY4NzpcXHRcXHR9XFxuNTY4ODpcXHRcXG41Njg5OlxcdFxcdHRwLVxcdTAwM2VkYXNoX3R5cGUgPSBydGxfZ2V0X2Rhc2hfdHlwZSh0cCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDExOjAzOjA5LjQ2ODU4MzIwM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NTg1Nzg4MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBDaGlwIElkZW50aWZpY2F0aW9uIEZsYXcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBydGw4MTY5X2dldF9jaGlwX3ZlcnNpb25gIGZ1bmN0aW9uLCBhbmQgaXQgcmV0dXJucyB0aGlzIGBjaGlwYCBzdHJ1Y3QuIFRoZSBjb3JlIGlzc3VlIHNlZW1zIHRvIGJlIGFyb3VuZCBob3cgdGhlIGNvZGUgaGFuZGxlcyBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAuIElmIHRoZSBgY2hpcC1cdTAwM2VtYWNfdmVyc2lvbmAgaXMgZXF1YWwgdG8gYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgLCBpdCByZWFkcyBgVFhfQ09ORklHX1YyYCBhbmQgZGl2ZXMgaW50byBgcnRsODE2OV9nZXRfZXh0ZW5kZWRfY2hpcF92ZXJzaW9uYC5cblxuVGhlIHByb2JsZW0gaXMgdGhhdCBpZiBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaXMgZXNzZW50aWFsbHkgYSBjYXRjaC1hbGwg4oCTIHNheSwgaXTigJlzIGVxdWl2YWxlbnQgdG8gYFJUTF9HSUdBX01BQ19OT05FYCDigJMgdGhlbiBhbnkgdW5rbm93biBjaGlwLCB3aGljaCBkZWZhdWx0cyB0byBgUlRMX0dJR0FfTUFDX05PTkVgLCB3b3VsZCB0cmlnZ2VyIHRoaXMgZXh0ZW5kZWQgdmVyc2lvbiBjaGVjay4gSXQgd291bGQganVtcCBpbnRvIHRoZSBgaWZgIGJsb2NrLCByZWFkIGBUWF9DT05GSUdfVjJgLCBhbmQgY2FsbCBgcnRsODE2OV9nZXRfZXh0ZW5kZWRfY2hpcF92ZXJzaW9uKHhpZClgLiBJZiB0aGF0IGV4dGVuZGVkIGNoZWNrICphbHNvKiByZXR1cm5zIGBSVExfR0lHQV9NQUNfTk9ORWAsIGl0IGNvcnJlY3RseSBmYWlscyB3aXRoIGAtRU5PREVWYC4gXG5cbkJ1dCBoZXJlJ3MgdGhlIGNhdGNoOiBJZiB0aGUgaW5pdGlhbCBgeGlkYCB3YXMgdW5rbm93biwgaXQgZGVmYXVsdHMgdG8gYFJUTF9HSUdBX01BQ19OT05FYC4gVGhlbiB3ZSByZWFkIGBUWF9DT05GSUdfVjJgLCBjYWxsIHRoZSBleHRlbmRlZCBmdW5jdGlvbi4gSWYgdGhlIGV4dGVuZGVkIGNoaXAgdmVyc2lvbiBoYXBwZW5zIHRvICptYXRjaCogc29tZXRoaW5nLCBzYXkgaWYgdGhlIGZhbGxiYWNrIHJvdXRpbmUgZXJyb25lb3VzbHkgcmV0dXJucyBhIGRlZmluZWQgdmFsdWUsIHdl4oCZZCBpbmNvcnJlY3RseSBpZGVudGlmeSB0aGUgY2hpcCEgVGhpcyBpcyBhIHNlcmlvdXMgcHJvYmxlbS5cblxuSSBoYXZlIGEgc3VzcGljaW9uIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpcyBhIHJlY2VudCBhZGRpdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGhpc3Rvcnkgb2YgYHI4MTY5LmhgIHRvIGNvbmZpcm0gdGhlIGNvZGUncyByZWNlbnQgaGlzdG9yeSB0byBoZWxwIHRyYWNrIGRvd24gdGhlIHBvdGVudGlhbCBvcmlnaW4gb2YgdGhlIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTIwLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDM6MTguNDI3MTY1NDAyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM3MDI3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaD0xNT1lbnVtIG1hY192ZXJzaW9uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC03Ni1cXHRSVExfR0lHQV9NQUNfVkVSX0xBU1QgPSBSVExfR0lHQV9NQUNfTk9ORSAtIDEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjc3OlxcdFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgPSBSVExfR0lHQV9NQUNfTk9ORSArIDFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtNzgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTMtXFx0LyogZXh0ZW5kZWQgY2hpcCB2ZXJzaW9uKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMTQ6XFx0eyAweDdjZiwgMHg3YzgsIFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01NjAyPXN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NjU5OlxcdGlmIChjaGlwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY2MC1cXHRcXHRleHRfeGlkX3N0ciA9IFxcXCJleHRcXFwiO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzoxOC40NzQ1NDYyMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzY0MjM4MDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlYWx0ZWsgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHNpbXBsZSBvbmUgb24gdGhlIHN1cmZhY2UsIGp1c3QgaW5jcmVtZW50aW5nIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBmcm9tIGBSVExfR0lHQV9NQUNfTk9ORWAgdG8gYFJUTF9HSUdBX01BQ19OT05FICsgMWAuIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYXMgYSBidWcgZml4IOKAkyB0aGUgb2xkIGFzc2lnbm1lbnQgbXVzdCBoYXZlIGJlZW4gYW4gZXJyb3IuIEJ1dCBhcyBhIGZ1enppbmcgZXhwZXJ0LCBteSBtaW5kIGp1bXBzIHRvIHRoZSBpbXBhY3QuIElzIHRoaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlPyBBYnNvbHV0ZWx5LCBpZiBgcjgxNjlgIGlzIGV2ZW4gZnV6emFibGUuIFRoYXQncyB0aGUgcmVhbCBxdWVzdGlvbi5cblxuQ2FuIFN5emthbGxlciBldmVuIHJlYWNoIHRoaXMgZHJpdmVyPyBMZXQgbWUgdGhpbmsuLi4gd2UgaGF2ZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCwgd2hpY2ggY2FuIHRyaWdnZXIgUENJIHByb2JlIGZ1bmN0aW9ucy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbjogaXMgYHI4MTY5YCBlbmFibGVkIGluIHRoZSBzdGFuZGFyZCBjb25maWd1cmF0aW9ucyB0aGF0IFN5emthbGxlciB1c2VzPyBJdCdzIGEgUmVhbHRlayBnaWdhYml0IGV0aGVybmV0IGRyaXZlciwgcHJldHR5IGNvbW1vbi4gSSdtIGdvaW5nIHRvIGJldCBpdCdzIHRoZXJlLiBMZXQgbWUgY2hlY2suLi4geWVwLCBgQ09ORklHX1I4MTY5YCBsb29rcyB2ZXJ5IGZhbWlsaWFyLiBHb29kLCBpdCdzIHRoZXJlLiBUaGlzIGRlc2VydmVzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgYXMgZXZlbiBhIHNtYWxsIGJ1ZyBmaXggY291bGQgcmV2ZWFsIG5ldywgZXhwbG9pdGFibGUgY29kZSBwYXRocyBkdXJpbmcgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE3MiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzoyNS44Mzg3ODc4MDZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjMxMzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSODE2OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9NzQ9Y29uZmlnIDgxMzlfT0xEX1JYX1JFU0VUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjg0OmNvbmZpZyBSODE2OVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy04NS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MTY5LzgxNjgvODEwMS84MTI1IGV0aGVybmV0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMDI6Y29uZmlnIFI4MTY5X0xFRFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAzLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIGNvbnRyb2xsaW5nIHRoZSBOSUMgTEVEc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDM6MjUuODg2MDI0MDg0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTc4MTUzMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6XG5cbioqQ2hlY2tpbmcgUjgxNjkgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgdGltZSB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBgUjgxNjlgIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIGBLY29uZmlnYCBmaWxlIHNwZWNpZmljYWxseSBmb3IgdGhhdCBkcml2ZXIuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHN0cmFpZ2h0IHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgUmVhbHRlayBFdGhlcm5ldCBkcml2ZXJzIGFyZSBkZWZpbmVkIGluIHRoZSBrZXJuZWwgc291cmNlLiBCeSBvcGVuaW5nIGFuZCByZWFkaW5nIHRoaXMgZmlsZSwgSSdsbCBiZSBhYmxlIHRvIHNlZSBleGFjdGx5IHdoYXQgb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIG1vZHVsZXMgYFI4MTY5YCByZWxpZXMgdXBvbiwgYW5kIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUuIFRoYXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIG15IGludmVzdGlnYXRpb24gdG8gdW5kZXJzdGFuZCBpdHMgaW50ZWdyYXRpb24gd2l0aCB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSBhbmQgaXRzIHJlcXVpcmVtZW50cy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGluZm9ybWF0aW9uIG9uIGRlcGVuZGVuY2llcyBsaWtlIG90aGVyIG5ldHdvcmsgZHJpdmVycywgc3BlY2lmaWMgaGFyZHdhcmUgc3VwcG9ydCwgb3IgcG90ZW50aWFsbHkgb3RoZXIga2VybmVsIGZlYXR1cmVzIGl0IG5lZWRzIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gVGhpcyBpcyB0aGUgZmlyc3QgbG9naWNhbCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODU5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDM6MjkuNzQzODQyNDQ5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MDpcXHRcXHQgIFJYLXJlc2V0IG1ldGhvZCBzaG91bGQgYmUgYWRlcXVhdGUgZm9yIGFsbCBib2FyZHMuICBCdXQgaWYgeW91XFxuICA4MTpcXHRcXHQgIGV4cGVyaWVuY2UgcHJvYmxlbXMsIHlvdSBjYW4gZW5hYmxlIHRoaXMgb3B0aW9uIHRvIHJlc3RvcmUgdGhlXFxuICA4MjpcXHRcXHQgIG9sZCBSWC1yZXNldCBiZWhhdmlvci4gIElmIHVuc3VyZSwgc2F5IE4uXFxuICA4MzpcXHRcXG4gIDg0OlxcdGNvbmZpZyBSODE2OVxcbiAgODU6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODE2OS84MTY4LzgxMDEvODEyNSBldGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgODY6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDg3OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDg4OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgODk6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAgOTA6XFx0XFx0c2VsZWN0IFJFQUxURUtfUEhZXFxuICA5MTpcXHRcXHRoZWxwXFxuICA5MjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBSZWFsdGVrIEV0aGVybmV0IGFkYXB0ZXIgYmVsb25naW5nIHRvXFxuICA5MzpcXHRcXHQgIHRoZSBmb2xsb3dpbmcgZmFtaWxpZXM6XFxuICA5NDpcXHRcXHQgIFJUTDgxNjkgR2lnYWJpdCBFdGhlcm5ldFxcbiAgOTU6XFx0XFx0ICBSVEw4MTY4IEdpZ2FiaXQgRXRoZXJuZXRcXG4gIDk2OlxcdFxcdCAgUlRMODEwMSBGYXN0IEV0aGVybmV0XFxuICA5NzpcXHRcXHQgIFJUTDgxMjUgMi41R0JpdCBFdGhlcm5ldFxcbiAgOTg6XFx0XFxuICA5OTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDM6MjkuNzQzOTA3Mzk5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNjA0Nzk0NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQQ0kgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gdGhpcyBkZWZpbml0ZWx5IGhpbmdlcyBvbiBgUENJYC4gVGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0gaGVyZSBpcyBgQ09ORklHX1I4MTY5YCwgdGhhdCdzIG91ciBzdGFydGluZyBwb2ludC4gQ29uc2lkZXJpbmcgdGhpcyBpcyBhIFBDSSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24gZml4LCBmdXp6aW5nIHNlZW1zIGxpa2UgYSB3b3J0aHdoaWxlIGVuZGVhdm9yLiBUaGUgYWN0dWFsIHByb2JlIGZ1bmN0aW9uIHdlJ3JlIGludGVyZXN0ZWQgaW4gaXMgYHJ0bF9pbml0X29uZWAuIE5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUgd2UndmUgaWRlbnRpZmllZCB0aGUgcmlnaHQgc3BvdCwgYW5kIHRoYXQgd2UncmUgbm90IG1pc3Npbmcgb3RoZXIgaW1wb3J0YW50IGZ1bmN0aW9ucyBpbiB0aGlzIGFyZWEgdGhhdCBtaWdodCBiZSB3b3J0aCBzaW1pbGFyIGF0dGVudGlvbi4gVGhlcmUgbWF5IGJlIGFkamFjZW50IHBvaW50cyBmb3IgdXMgdG8gZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDQyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzozNC44MDQzODk2OTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MjU1MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bF9pbml0X29uZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xOTQ1PXN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9jb3VudGVyX29mZnNldHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xOTU4LVxcdCAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTk1OTpcXHQgKiAoKikgV2UgY2FuJ3QgY2FsbCBydGw4MTY5X2luaXRfY291bnRlcl9vZmZzZXRzIGZyb20gcnRsX2luaXRfb25lXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTk2MC1cXHQgKiBmb3IgdGhlIHJlYXNvbiBzdGF0ZWQgaW4gcnRsODE2OV91cGRhdGVfY291bnRlcnM7IENtZFJ4RW5iIGlzIG9ubHlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTU1OTM9c3RhdGljIGJvb2wgcnRsX2FzcG1faXNfc2FmZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU2MDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTYwMjpzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NjAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTU4MjY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ0bDgxNjlfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU4MjgtXFx0LmlkX3RhYmxlXFx0PSBydGw4MTY5X3BjaV90YmwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTgyOTpcXHQucHJvYmVcXHRcXHQ9IHJ0bF9pbml0X29uZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01ODMwLVxcdC5yZW1vdmVcXHRcXHQ9IHJ0bF9yZW1vdmVfb25lLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzozNC44NTM2NDkyOTVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcyOTMxMDQ3ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgU3VidGxlIEJ1ZyBpbiB0aGUgYHJ0bF9pbml0X29uZWAgUHJvYmUgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSB0aGUgcHJvYmxlbSBqdW1wcyBvdXQgYXQgbWUuIFRoZSBjb3JlIGlzc3VlIGlzIHRoZSB2YWx1ZSBhc3NpZ25tZW50OiBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgYW5kIGBSVExfR0lHQV9NQUNfTk9ORWAgYXJlIGJlaW5nIHRyZWF0ZWQgYXMgdGhlIHNhbWUsIHdoaWNoIGlzIGEgYmlnIHJlZCBmbGFnIGluIHRoaXMgY29udGV4dC4gTGV0J3MgYnJlYWsgaXQgZG93bjpcblxuVGhlIHByb2JlIGZ1bmN0aW9uLCBgcnRsX2luaXRfb25lYCwgaXMgdGhlIGVudHJ5IHBvaW50LiBUaGUgcGF0Y2ggYWltcyB0byBmaXggYSBjb25kaXRpb24gd2hlcmUgdGhlc2UgdHdvIGNvbnN0YW50cyBhcmUgaWRlbnRpY2FsLiBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZW4gdGhlIGNhdGNoLWFsbCBlbnRyeSBpbiBgcnRsX2NoaXBfaW5mb2AgZW5kcyB1cCBhc3NpZ25pbmcgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkIGBSVExfR0lHQV9NQUNfTk9ORWAuIEl0IGJlY29tZXMgYSBzb3VyY2Ugb2YgbWlzaWRlbnRpZmljYXRpb24uXG5cblRoaXMgbWVhbnMgdGhlIGNhdGNoLWFsbCBlbnRyeTpcbmBgYGNcbi8qIENhdGNoLWFsbCAqL1xueyAweDAwMCwgMHgwMDAsXHRSVExfR0lHQV9NQUNfTk9ORSB9XG5gYGBcbmlzIGVmZmVjdGl2ZWx5OlxuYGBgY1xuLyogQ2F0Y2gtYWxsICovXG57IDB4MDAwLCAweDAwMCwgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB9XG5gYGBcblxuQW5kIHNpbWlsYXJseSwgdGhlIGludGVuZGVkIGV4dGVuZGVkIGVudHJ5OlxuYGBgY1xuLyogZXh0ZW5kZWQgY2hpcCB2ZXJzaW9uKi9cbnsgMHg3Y2YsIDB4N2M4LCBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEIH0sXG5gYGBcbmlzIGluc3RlYWQgdGhpczpcbmBgYGNcbi8qIGV4dGVuZGVkIGNoaXAgdmVyc2lvbiovXG57IDB4N2NmLCAweDdjOCwgUlRMX0dJR0FfTUFDX05PTkUgfSxcbmBgYFxuXG5Db25zZXF1ZW50bHksIGlmIGEgY2hpcCBoYXBwZW5zIHRvIG1hdGNoIHRoZSBleHRlbmRlZCBlbnRyeSwgaXQncyB3cm9uZ2x5IGdpdmVuIGBSVExfR0lHQV9NQUNfTk9ORWAuXG5cblRoaXMgY3JlYXRlcyBhIGNoYWluIHJlYWN0aW9uLiAgVGhlIGNvZGUgdGhlbiBjaGVja3MgYGlmIChjaGlwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQpYC4gU2luY2UgdGhlc2UgdHdvIGNvbnN0YW50cyBhcmUgZXF1YWwsIHRoYXQgY29uZGl0aW9uIG5vdyBiZWNvbWVzIHRydWUsIGV2ZW4gZm9yIGEgbm9uLWV4dGVuZGVkIGNoaXAuIEFzIGEgcmVzdWx0IGl0IHJlYWRzIGBUWF9DT05GSUdfVjJgIGFuZCB0cmlnZ2VycyBgcnRsODE2OV9nZXRfZXh0ZW5kZWRfY2hpcF92ZXJzaW9uYC5cblxuSWYgdGhlIGNoaXAgZG9lc24ndCBtYXRjaCB0aGUgZXh0ZW5kZWQgZW50cnksIGl0IGhpdHMgdGhlIGNhdGNoLWFsbCwgYW5kIGlzIGFzc2lnbmVkIHRoZSB2YWx1ZSB0aGF0IGlzIHVzZWQgaW4gdGhlIGBSVExfR0lHQV9NQUNfTk9ORWAgZW50cnkuICBgUlRMX0dJR0FfTUFDX05PTkVgIGlzIHRoZSBzYW1lIGFzIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYC4gIFRoZW4gdGhlIHNhbWUgY29uZGl0aW9uLCBgaWYgKGNoaXAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRClgIGlzIG5vdyB0cnVlISBUaGlzIGxlYWRzIHRoZSBwcm9iZSB0byBpbmNvcnJlY3RseSBjYWxsIGBydGw4MTY5X2dldF9leHRlbmRlZF9jaGlwX3ZlcnNpb25gIGFnYWluLCBldmVuIGZvciB0aGUgXCJ1bmtub3duXCIgY2hpcHMuXG5cblRoZSBwcm9ibGVtIGVzY2FsYXRlcy4gSWYgYHJ0bDgxNjlfZ2V0X2V4dGVuZGVkX2NoaXBfdmVyc2lvbmAgcmV0dXJucyBgUlRMX0dJR0FfTUFDX05PTkVgIChiZWNhdXNlIGl0IGRvZXNuJ3QgcmVjb2duaXplIHRoZSBleHRlbmRlZCB2ZXJzaW9uKSwgdGhlbiBgaWYgKGNoaXAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX05PTkUpYCBiZWNvbWVzIHRydWUsIGxlYWRpbmcgdG8gYSBgLUVOT0RFVmAgZXJyb3IuIEJ1dCwgdGhlIHJlYWwga2lja2VyIGlzIGlmIHRoZSBleHRlbmRlZCB2ZXJzaW9uICpkb2VzKiBtYXRjaCBzb21ldGhpbmcsIHRoZW4gdGhlIGNvZGUgd2lsbCBlcnJvbmVvdXNseSBjbGFzc2lmeSBhbiB1bmtub3duIGNoaXAgYXMgYW4gXCJleHRlbmRlZFwiIGNoaXAuIFRoYXQncyBhIHNlcmlvdXMgZnVuY3Rpb25hbCBidWcgdGhhdCBoYXMgdG8gYmUgZml4ZWQuXG5cbkkgYW0gc2V0dGluZyBgV29ydGhGdXp6aW5nPXRydWVgIGJlY2F1c2UgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIGBydGxfaW5pdF9vbmVgIGZ1bmN0aW9uIGlzIHRoZSBwbGFjZSB0byBmb2N1cyBvbiwgYW5kIEknbGwga2VlcCB0aGUgYFI4MTY5YCBjb25maWcgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxODcsIk91dHB1dFRva2VucyI6MTQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDExOjAzOjUyLjE0Njc1NjEwNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MjM5NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSODE2OVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bF9pbml0X29uZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGVudW0gdmFsdWUgY29sbGlzaW9uIHdoZXJlIFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgd2FzIGltcGxpY2l0bHkgZXF1YWwgdG8gUlRMX0dJR0FfTUFDX05PTkUuIFRoaXMgY2F1c2VkIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiAocnRsX2luaXRfb25lKSB0byBtaXNpZGVudGlmeSB1bmtub3duIGNoaXBzIGFzIGV4dGVuZGVkIGNoaXBzLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluY29ycmVjdCBpbml0aWFsaXphdGlvbiBvciBjcmFzaGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBQQ0kgZHJpdmVyIHByb2JlIHBhdGggdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgc3l6a2FsbGVyJ3Mgc3l6X3BjaV9kZXZpY2VfYWRkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlI4MTY5XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRsX2luaXRfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gZW51bSB2YWx1ZSBjb2xsaXNpb24gd2hlcmUgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB3YXMgaW1wbGljaXRseSBlcXVhbCB0byBSVExfR0lHQV9NQUNfTk9ORS4gVGhpcyBjYXVzZWQgdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIChydGxfaW5pdF9vbmUpIHRvIG1pc2lkZW50aWZ5IHVua25vd24gY2hpcHMgYXMgZXh0ZW5kZWQgY2hpcHMsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gaW5jb3JyZWN0IGluaXRpYWxpemF0aW9uIG9yIGNyYXNoZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFBDSSBkcml2ZXIgcHJvYmUgcGF0aCB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBzeXprYWxsZXIncyBzeXpfcGNpX2RldmljZV9hZGQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDExOjAzOjUyLjIyMzAwOTcyMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0OTE0NzAyODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzo1Mi4yMjM0ODE4NDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTI0OTA5OTIwNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGVudW0gdmFsdWUgY29sbGlzaW9uIGluIGBlbnVtIG1hY192ZXJzaW9uYCB3aGVyZSBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaW1wbGljaXRseSBoYWQgdGhlIHNhbWUgdmFsdWUgYXMgYFJUTF9HSUdBX01BQ19OT05FYC4gVGhpcyBpcyBhIGxvZ2ljIGJ1ZyBhZmZlY3RpbmcgaGFyZHdhcmUgaWRlbnRpZmljYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGZvciBzcGVjaWZpYyBSZWFsdGVrIG5ldHdvcmsgY2FyZHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBTdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTiBhcmUgc3VmZmljaWVudCBmb3IgdGhpcyBjaGFuZ2UuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTdmNTM1ZWVlMmU3YWRiZTBhZjAxMzU2NjM2NWNmMmY1YmQ4ODdkZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMTE6MDI6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmhcbmluZGV4IDBiOWMxZDRlYjQ4YmEuLmZiNzcyY2MwNDMxMDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaFxuQEAgLTc0LDcgKzc0LDcgQEAgZW51bSBtYWNfdmVyc2lvbiB7XG4gXHRSVExfR0lHQV9NQUNfVkVSXzgwLFxuIFx0UlRMX0dJR0FfTUFDX05PTkUsXG4gXHRSVExfR0lHQV9NQUNfVkVSX0xBU1QgPSBSVExfR0lHQV9NQUNfTk9ORSAtIDEsXG4tXHRSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEXG4rXHRSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEID0gUlRMX0dJR0FfTUFDX05PTkUgKyAxXG4gfTtcbiBcbiBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDM6NTIuMjIzNDgyNzAyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyMjMxMjM2NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgUmVhbHRlayByODE2OSBkcml2ZXIsIGFuZCBpdCdzIHR3ZWFraW5nIHRoZSBgbWFjX3ZlcnNpb25gIGVudW0gaW4gYHI4MTY5LmhgLiBTcGVjaWZpY2FsbHksIGl0J3MgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYC4gSW5pdGlhbGx5LCBpdCB3YXMgYmVpbmcgYXNzaWduZWQgaW1wbGljaXRseSwgYW5kIHRoYXQncyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBMZXQgbWUgd2FsayB0aHJvdWdoIHRoaXMuLi5cblxuQmVmb3JlIHRoZSBwYXRjaCwgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGltcGxpY2l0bHkgYXNzdW1lZCB0aGUgbmV4dCB2YWx1ZS4gTm93LCB0aGUgZW51bSBhcyBpdCBzdGFuZHMgaXMgZGVmaW5lZCBhczpcblxuYGBgY1xuZW51bSBtYWNfdmVyc2lvbiB7XG4gICAgLi4uXG5cdFJUTF9HSUdBX01BQ19WRVJfODAsXG5cdFJUTF9HSUdBX01BQ19OT05FLFxuXHRSVExfR0lHQV9NQUNfVkVSX0xBU1QgPSBSVExfR0lHQV9NQUNfTk9ORSAtIDEsXG5cdFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURcbn07XG5gYGBcblxuU28sIGBSVExfR0lHQV9NQUNfVkVSX0xBU1RgIGlzIGV4cGxpY2l0bHkgc2V0IHRvIGBSVExfR0lHQV9NQUNfTk9ORSAtIDFgLiBUaGlzIG1lYW5zIHRoYXQgYmVmb3JlIHRoZSBwYXRjaCwgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIHdhcyBpbXBsaWNpdGx5ICplcXVhbCogdG8gYFJUTF9HSUdBX01BQ19OT05FYCEgVGhhdCdzIGEgZGVmaW5pdGUgY29sbGlzaW9uLiBUaGUgaW1wbGljaXQgaW5jcmVtZW50IG1hZGUgaXQgZXF1YWwgdG8gdGhlIGV4cGxpY2l0bHkgZGVjbGFyZWQgYFJUTF9HSUdBX01BQ19OT05FYC5cblxuVGhlIHBhdGNoIGZpeGVzIHRoaXMgYnkgbWFraW5nIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEID0gUlRMX0dJR0FfTUFDX05PTkUgKyAxYC4gVGhpcyByZXNvbHZlcyB0aGUgdmFsdWUgY2xhc2guXG5cblRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGVudW0gdmFsdWUgYnVnLCBJIGRvbid0IHNlZSBhbnkgaW1tZWRpYXRlIGNvbmNlcm5zIHJlZ2FyZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXQncyBqdXN0IGEgbWF0dGVyIG9mIGVuc3VyaW5nIGRpc3RpbmN0IHZhbHVlcy4gTm93LCBJIG5lZWQgdG8gY2hlY2sgd2hlcmUgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGlzIGFjdHVhbGx5IHVzZWQgaW4gdGhlIGRyaXZlciB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzo1OS40NDY2MDk3MjJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTczMDYxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaD0xNT1lbnVtIG1hY192ZXJzaW9uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC03Ni1cXHRSVExfR0lHQV9NQUNfVkVSX0xBU1QgPSBSVExfR0lHQV9NQUNfTk9ORSAtIDEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjc3OlxcdFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgPSBSVExfR0lHQV9NQUNfTk9ORSArIDFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtNzgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTMtXFx0LyogZXh0ZW5kZWQgY2hpcCB2ZXJzaW9uKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMTQ6XFx0eyAweDdjZiwgMHg3YzgsIFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01NjAyPXN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NjU5OlxcdGlmIChjaGlwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY2MC1cXHRcXHRleHRfeGlkX3N0ciA9IFxcXCJleHRcXFwiO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzo1OS42NDgzNTQzNzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA2NjA4OTgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEVudW0gQ29sbGlzaW9uIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gV2UgaGF2ZSBhbiBlbnVtIGNvbGxpc2lvbiBpc3N1ZS4gU3BlY2lmaWNhbGx5LCBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgd2FzLCBmb3Igc29tZSByZWFzb24sIGdldHRpbmcgdGhlIHNhbWUgdmFsdWUgYXMgYFJUTF9HSUdBX01BQ19OT05FYC4gVGhpcyBpcyBhIGNsYXNzaWMgbG9naWMgZXJyb3IsIG5vdGhpbmcgdGhhdCBoaW50cyBhdCBtZW1vcnkgY29ycnVwdGlvbiBvciB1bmluaXRpYWxpemVkIG1lbW9yeSB3b2VzLiBJdCBtZWFucyB0aGF0IGRlcGVuZGluZyBvbiB0aGUgY29udGV4dCwgdGhlIGNvZGUgd2FzIG1pc2ludGVycHJldGluZyB0aGUgaGFyZHdhcmUgdmVyc2lvbi4gSWYgYGNoaXAtXHUwMDNlbWFjX3ZlcnNpb25gIGhlbGQgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgLCBpdCB3YXMgc29tZXRpbWVzIGJlaW5nIHRyZWF0ZWQgYXMgYFJUTF9HSUdBX01BQ19OT05FYCwgYW5kIHZpY2UgdmVyc2EuIENsZWFybHkgYSBidWcsIGJ1dCBub3QgYSBtZW1vcnkgc2FmZXR5IG9uZS4gSSdtIGdvaW5nIHRvIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYmVjYXVzZSBpdCdzIG5vdCBhcHBsaWNhYmxlIGhlcmUuIFRoaXMgaXMganVzdCBhIGhhcmR3YXJlIGlkZW50aWZpY2F0aW9uIGxvZ2ljIGJ1ZywgcmVxdWlyaW5nIGEgc2ltcGxlIGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ0OSwiT3V0cHV0VG9rZW5zIjoxMzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDQ6MDQuNzE0NDQ3Njc0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBlbnVtIHZhbHVlIGNvbGxpc2lvbiBpbiBgZW51bSBtYWNfdmVyc2lvbmAgd2hlcmUgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGltcGxpY2l0bHkgaGFkIHRoZSBzYW1lIHZhbHVlIGFzIGBSVExfR0lHQV9NQUNfTk9ORWAuIFRoaXMgaXMgYSBsb2dpYyBidWcgYWZmZWN0aW5nIGhhcmR3YXJlIGlkZW50aWZpY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBmb3Igc3BlY2lmaWMgUmVhbHRlayBuZXR3b3JrIGNhcmRzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gU3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGVudW0gdmFsdWUgY29sbGlzaW9uIGluIGBlbnVtIG1hY192ZXJzaW9uYCB3aGVyZSBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaW1wbGljaXRseSBoYWQgdGhlIHNhbWUgdmFsdWUgYXMgYFJUTF9HSUdBX01BQ19OT05FYC4gVGhpcyBpcyBhIGxvZ2ljIGJ1ZyBhZmZlY3RpbmcgaGFyZHdhcmUgaWRlbnRpZmljYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGZvciBzcGVjaWZpYyBSZWFsdGVrIG5ldHdvcmsgY2FyZHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBTdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTiBhcmUgc3VmZmljaWVudCBmb3IgdGhpcyBjaGFuZ2UuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dsn4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-08 10:38:59 +0000 UTC FinishedAt: 2026-08-08 11:04:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "R8169" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "R8169" ], "series_id": "0bc3718d-1497-4954-9891-e6cc7875d741" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtl_init_one" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDExOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsX2luaXRfb25lJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gZW51bSB2YWx1ZSBjb2xsaXNpb24gaW4gYGVudW0gbWFjX3ZlcnNpb25gIHdoZXJlIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpbXBsaWNpdGx5IGhhZCB0aGUgc2FtZSB2YWx1ZSBhcyBgUlRMX0dJR0FfTUFDX05PTkVgLiBUaGlzIGlzIGEgbG9naWMgYnVnIGFmZmVjdGluZyBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gZm9yIHNwZWNpZmljIFJlYWx0ZWsgbmV0d29yayBjYXJkcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIEtBU0FOIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIGNoYW5nZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gZW51bSB2YWx1ZSBjb2xsaXNpb24gd2hlcmUgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB3YXMgaW1wbGljaXRseSBlcXVhbCB0byBSVExfR0lHQV9NQUNfTk9ORS4gVGhpcyBjYXVzZWQgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiAocnRsX2luaXRfb25lKSB0byBtaXNpZGVudGlmeSB1bmtub3duIGNoaXBzIGFzIGV4dGVuZGVkIGNoaXBzLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluY29ycmVjdCBpbml0aWFsaXphdGlvbiBvciBjcmFzaGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBQQ0kgZHJpdmVyIHByb2JlIHBhdGggdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgc3l6a2FsbGVyJiMzOTtzIHN5el9wY2lfZGV2aWNlX2FkZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDk3ZjUzNWVlZTJlN2FkYmUwYWYwMTM1NjYzNjVjZjJmNWJkODg3ZGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDExOjAyOjQ2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaFxuaW5kZXggMGI5YzFkNGViNDhiYS4uZmI3NzJjYzA0MzEwNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oXG5AQCAtNzQsNyAmIzQzOzc0LDcgQEAgZW51bSBtYWNfdmVyc2lvbiB7XG4gXHRSVExfR0lHQV9NQUNfVkVSXzgwLFxuIFx0UlRMX0dJR0FfTUFDX05PTkUsXG4gXHRSVExfR0lHQV9NQUNfVkVSX0xBU1QgPSBSVExfR0lHQV9NQUNfTk9ORSAtIDEsXG4tXHRSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEXG4mIzQzO1x0UlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCA9IFJUTF9HSUdBX01BQ19OT05FICYjNDM7IDFcbiB9O1xuIFxuIHN0cnVjdCBydGw4MTY5X3ByaXZhdGU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsX2luaXRfb25lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGVudW0gdmFsdWUgY29sbGlzaW9uIHdoZXJlIFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgd2FzIGltcGxpY2l0bHkgZXF1YWwgdG8gUlRMX0dJR0FfTUFDX05PTkUuIFRoaXMgY2F1c2VkIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gKHJ0bF9pbml0X29uZSkgdG8gbWlzaWRlbnRpZnkgdW5rbm93biBjaGlwcyBhcyBleHRlbmRlZCBjaGlwcywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBpbmNvcnJlY3QgaW5pdGlhbGl6YXRpb24gb3IgY3Jhc2hlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgUENJIGRyaXZlciBwcm9iZSBwYXRoIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHN5emthbGxlciYjMzk7cyBzeXpfcGNpX2RldmljZV9hZGQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5N2Y1MzVlZWUyZTdhZGJlMGFmMDEzNTY2MzY1Y2YyZjViZDg4N2RlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAxMTowMjo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaAppbmRleCAwYjljMWQ0ZWI0OGJhLi5mYjc3MmNjMDQzMTA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oCkBAIC03NCw3ICYjNDM7NzQsNyBAQCBlbnVtIG1hY192ZXJzaW9uIHsKIAlSVExfR0lHQV9NQUNfVkVSXzgwLAogCVJUTF9HSUdBX01BQ19OT05FLAogCVJUTF9HSUdBX01BQ19WRVJfTEFTVCA9IFJUTF9HSUdBX01BQ19OT05FIC0gMSwKLQlSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVECiYjNDM7CVJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgPSBSVExfR0lHQV9NQUNfTk9ORSAmIzQzOyAxCiB9OwogCiBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDIyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlYWx0ZWsgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oYC4gSW1tZWRpYXRlbHksIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIGFuIGBlbnVtIG1hY192ZXJzaW9uYCBhbmQgc3BlY2lmaWNhbGx5LCB0aGUgdmFsdWUgYXNzaWduZWQgdG8gYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgLiBJbml0aWFsbHksIGl0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIG9yaWdpbmFsIGVudW0gaGFkIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpbXBsaWNpdGx5IGFzc2lnbmVkLCBwb3NpdGlvbmVkIGFmdGVyIGBSVExfR0lHQV9NQUNfVkVSX0xBU1RgLgoKQnV0IGhhbmcgb27igKYgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBgUlRMX0dJR0FfTUFDX1ZFUl9MQVNUYCBpcyBkZWZpbmVkIGFzIGBSVExfR0lHQV9NQUNfTk9ORSAtIDFgLiBUaGF0IG1lYW5zIHRoZSBvcmlnaW5hbCBpbXBsaWNpdCBhc3NpZ25tZW50IG9mIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCB3YXMsIGluIGZhY3QsIGBSVExfR0lHQV9NQUNfTk9ORWAuIFdhaXQgYSBtaW51dGUsIHRoYXQmIzM5O3MgYSBwcm9ibGVtLCBiZWNhdXNlIGBSVExfR0lHQV9NQUNfTk9ORWAgaXMgYWxyZWFkeSBleHBsaWNpdGx5IGRlZmluZWQgd2l0aGluIHRoZSBlbnVtLiBTbywgaXQgd2FzIGVmZmVjdGl2ZWx5IGEgZHVwbGljYXRlIHZhbHVlIQoKTm93LCB0aGUgcGF0Y2ggaXMgZXhwbGljaXRseSBhc3NpZ25pbmcgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGFzIGBSVExfR0lHQV9NQUNfTk9ORSAmIzQzOyAxYC4gVGhpcyBmaXhlcyB0aGUgaW1wbGljaXQgZHVwbGljYXRpb24gYW5kIGVuc3VyZXMgaXQmIzM5O3MgYSB1bmlxdWUgdmFsdWUgd2l0aGluIHRoZSBlbnVtZXJhdGlvbi4gTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIHdhcyBuZWVkZWQuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBpbnN0YW5jZXMgd2hlcmUgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGlzIGFjdHVhbGx5IHVzZWQuIFRoaXMgY2hhbmdlIG1pZ2h0IGJlIGEgYnVnIGZpeCwgb3IgbWF5YmUgaXQmIzM5O3Mgc2V0dGluZyB0aGUgc3RhZ2UgZm9yIHNvbWUgZnV0dXJlIGV4dGVuc2lvbiBpbiB0aGlzIGRyaXZlciwgb3IgcGVyaGFwcyBpdCYjMzk7cyByZWxhdGVkIHRvIHNvbWUgc2lsaWNvbiByZXZpc2lvbiBvciB2YXJpYW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDExOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg9MTU9ZW51bSBtYWNfdmVyc2lvbiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTc2LVx0UlRMX0dJR0FfTUFDX1ZFUl9MQVNUID0gUlRMX0dJR0FfTUFDX05PTkUgLSAxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjc3Olx0UlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCA9IFJUTF9HSUdBX01BQ19OT05FICYjNDM7IDFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC03OC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjEzLVx0LyogZXh0ZW5kZWQgY2hpcCB2ZXJzaW9uKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjIxNDpcdHsgMHg3Y2YsIDB4N2M4LCBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTYwMj1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NjU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTY1OTpcdGlmIChjaGlwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU2NjAtXHRcdGV4dF94aWRfc3RyID0gXCYjMzQ7ZXh0XCYjMzQ7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDExOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyODEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1MzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSByODE2OSBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpcyBzaG93aW5nIHVwIGluIGBydGxfaW5pdF9vbmVgIHdpdGhpbiB0aGUgYHJ0bF9jaGlwX2luZm9gIGFycmF5LCBhbmQgdGhlIGRyaXZlciBpcyB0aGUgYHI4MTY5YCBQQ0kgZHJpdmVyIGZvciBSZWFsdGVrIGdpZ2FiaXQgZXRoZXJuZXQgY29udHJvbGxlcnMuIE15IGZpcnN0IHRob3VnaHQgaXMgd2hldGhlciB0aGlzIGRyaXZlciBpcyBldmVuIHJlYWNoYWJsZSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LiBRRU1VIGhhbmRsZXMgYHJ0bDgxMzlgLCBidXQgZG9lcyBpdCBzdXBwb3J0IHRoZSBgcnRsODE2OWAgdmFyaWFudD8gQSBxdWljayBjaGVjayBvZiBRRU1VJiMzOTtzIGVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlcyByZXZlYWxzIGEgbGlzdCwgYnV0IG5vIGRpcmVjdCBgcnRsODE2OWAgZW11bGF0aW9uLgoKSG93ZXZlciwganVzdCBiZWNhdXNlIGl0JiMzOTtzIG5vdCBuYXRpdmVseSBlbXVsYXRlZCBkb2VzbiYjMzk7dCBtZWFuIGl0JiMzOTtzIG9mZi1saW1pdHMuIFN5emthbGxlciYjMzk7cyBgc3l6X3BjaV9kZXZpY2VfYWRkYCBjYWxsIG1pZ2h0IGJlIGEgd29ya2Fyb3VuZCwgYXMgaXQgY2FuIGluamVjdCBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgQkFScyB0byBlbXVsYXRlIGFueSBQQ0kgZGV2aWNlLiBJZiBgcjgxNjlgIGlzIGEgcGh5c2ljYWwgUENJIGhhcmR3YXJlIGRyaXZlciwgdGhlbiwgaW4gdGhlb3J5LCBpdCBzaG91bGQgYmUgZnV6emFibGUgdGhyb3VnaCBgc3l6X3BjaV9kZXZpY2VfYWRkYC4KCkkgbmVlZCB0byByZS1ldmFsdWF0ZSB0aGUgY29udGV4dCBvZiB0aGUgcHJvbXB0LCB0aG91Z2guIEl0IHNwZWNpZmljYWxseSBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVIGRyaXZlcnPigJR0aGluZ3MgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgYW5kIGFyZSAqbm90KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBEb2VzIGByODE2OWAgZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnk/IE5vLCBpdCYjMzk7cyBhIHN0YW5kYXJkIEV0aGVybmV0IGRyaXZlci4KClRoZSBQQ0kgZnV6emVyIGluIHN5emthbGxlciBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHRoaXMgcHVycG9zZSwgc28gSSBzaG91bGQgYmUgYWJsZSB0byBmdXp6IGl0IQoKQWgsIHJpZ2h0LCBsb29raW5nIGF0IHRoZSBwYXRjaCwgaXQgc2VlbXMgdG8gYmUganVzdCBjaGFuZ2luZyBhbiBlbnVtIHZhbHVlLiBJbnRlcmVzdGluZy4gYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIHdhcywgYXBwYXJlbnRseSwgZXF1YWwgdG8gYFJUTF9HSUdBX01BQ19OT05FYCBiZWZvcmUsIHdoaWNoIGNyZWF0ZWQgYSBidWcgd2hlcmUgYGNoaXAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIHdvdWxkIGV2YWx1YXRlIHRvIHRydWUgd2hlbiBgUlRMX0dJR0FfTUFDX05PTkVgIHdhcyB0aGUgYWN0dWFsIGludGVuZGVkIHZhbHVlLiBXZWxsLCB0aGF0IG1ha2VzIHNlbnNlOyBgUlRMX0dJR0FfTUFDX05PTkVgIGlzIHVzZWQgd2hlbiB0aGVyZSYjMzk7cyBubyBtYXRjaGluZyBNQUMgdmVyc2lvbi4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byBob3cgdGhlc2UgZW51bSB2YWx1ZXMgYXJlIHVzZWQsIHN0YXJ0aW5nIHdpdGggYHJ0bF9pbml0X29uZWAgYW5kIHRoZSBgcnRsX2NoaXBfaW5mb2AgYXJyYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlRMX0dJR0FfTUFDX05PTkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg9MTU9ZW51bSBtYWNfdmVyc2lvbiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTc0LVx0UlRMX0dJR0FfTUFDX1ZFUl84MCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo3NTpcdFJUTF9HSUdBX01BQ19OT05FLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjc2Olx0UlRMX0dJR0FfTUFDX1ZFUl9MQVNUID0gUlRMX0dJR0FfTUFDX05PTkUgLSAxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjc3Olx0UlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCA9IFJUTF9HSUdBX01BQ19OT05FICYjNDM7IDFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC03OC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjE2LVx0LyogQ2F0Y2gtYWxsICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMTc6XHR7IDB4MDAwLCAweDAwMCxcdFJUTF9HSUdBX01BQ19OT05FIH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIxOC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTIyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gcnRsX2NoaXBfaW5mb3NfZXh0ZW5kZWRbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMjQtXHQvKiBDYXRjaC1hbGwgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjIyNTpcdHsgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgUlRMX0dJR0FfTUFDX05PTkUgfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjI2LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTYwMj1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NjYzLVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTY2NDpcdGlmIChjaGlwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19OT05FKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY2NS1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIC1FTk9ERVYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA3NQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIFJlZHVuZGFuY3kgaW4gTUFDIFZlcnNpb24gSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IGBSVExfR0lHQV9NQUNfTk9ORWAgaXMgdXNlZCBhcyBhIGNhdGNoLWFsbCwgcmlnaHQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGlmIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCB3ZXJlIGFjY2lkZW50YWxseSAqZXF1YWwqIHRvIGBSVExfR0lHQV9NQUNfTk9ORWAsIHRoZSBjb2RlJiMzOTtzIGxvZ2ljIHdvdWxkIGJlY29tZSBjb21wbGV0ZWx5IHNrZXdlZC4gTGV0IG1lIHdhbGsgdGhyb3VnaCBteSBtZW50YWwgcHJvY2Vzcy4KCklmIHRoZXkgd2VyZSBlcXVpdmFsZW50LCBhIGBjaGlwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBjaGVjayB3b3VsZCAqYWxzbyogYmUgdHJ1ZSBmb3IgdGhlIGBSVExfR0lHQV9NQUNfTk9ORWAgY2FzZS4gVGhhdCBtYWtlcyBzZW5zZSwgaW4gdGhlIGNvbnRleHQgb2YgaXQgYmVpbmcgYSBjYXRjaC1hbGwuCgpOb3csIGxldCYjMzk7cyB6b29tIGluIG9uIGBydGxfaW5pdF9vbmVgLiBJIHNlZSBhIGNvdXBsZSBvZiBjcnVjaWFsIGBpZmAgc3RhdGVtZW50cy4gVGhlIGZpcnN0IG9uZSBjaGVja3MgYGNoaXAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGFuZCwgaWYgdHJ1ZSwgc2V0cyBgZXh0X3hpZF9zdHJgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gVGhlbiB0aGVyZSYjMzk7cyBhbm90aGVyIGBpZmAgdGhhdCBjaGVja3MgaWYgYGNoaXAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19OT05FYC4gSWYgKnRoYXQmIzM5O3MqIHRydWUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGAtRU5PREVWYCwgaW5kaWNhdGluZyBhIGZhaWx1cmUuCgpIZXJlJiMzOTtzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcgYW5kIGNvbmNlcm5pbmcuIElmIHRob3NlIHR3byBNQUMgdmVyc2lvbiBjb25zdGFudHMgKndlcmUqIHRoZSBzYW1lLCB0aGUgZmlyc3QgYGlmYCBzdGF0ZW1lbnQgd291bGQgZXhlY3V0ZSwgc2V0dGluZyBzb21ldGhpbmcgdXAuIFRoZW4sIHRoZSBzZWNvbmQgYGlmYCBzdGF0ZW1lbnQsIGJlY2F1c2UgdGhlIHZhbHVlIGlzIHRoZSBzYW1lLCB3b3VsZCAqYWxzbyogZXhlY3V0ZSBhbmQgcmV0dXJuIGAtRU5PREVWYC4gU28sIGl0IHdvdWxkIHJ1biBzb21lIGluaXRpYWxpemF0aW9uIGNvZGUsIGFuZCB0aGVuIGltbWVkaWF0ZWx5IHJldHVybiBhbiBlcnJvci4gVGhhdCBzZWVtcyBsaWtlIHJlYWxseSBiYWQgbG9naWMsIGEgcmFjZSBjb25kaXRpb24gd2l0aCB0aGUgY29kZSB0aHJvd2luZyBhbiBlcnJvciBmb3Igc29tZXRoaW5nIGl0IHdhcyBhdHRlbXB0aW5nIHRvIGhhbmRsZS4KClNvLCBsZXQgbWUgYmFjayB1cCBhIGxpdHRsZS4gVGhpcyBtZWFucyB0aGUgY2F0Y2gtYWxsIGluIGBydGxfY2hpcF9pbmZvYCB3b3VsZCBzZXQgYG1hY192ZXJzaW9uYCB0byBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaW4gdGhlIGNhc2Ugb2YgYSBtYXRjaC4gVGhpcyBzZXRzIG9mZiBhbGFybSBiZWxscyBhbmQgbmVlZHMgYSBkZWVwZXIgbG9vay4KCk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgbG9naWMgYmV0dGVyLiBMZXQgbWUganVtcCBiYWNrIHRvIGBydGxfaW5pdF9vbmVgIGFnYWluLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBjb2RlIGZsb3cgYW5kIGVuc3VyZSB0aGVyZSBpc24mIzM5O3Qgc29tZSB1bmludGVuZGVkIGNvbnNlcXVlbmNlLCBhIGRvdWJsZS1leGVjdXRpb24gb3IgY29uZmxpY3QsIGlmIHRoaXMgZXF1aXZhbGVuY2UgZXhpc3RlZC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBtaXN1bmRlcnN0YW5kaW5nIG9mIHRoZSB2ZXJzaW9uIGNvbnN0YW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTY0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs1NjQwOlx0XHQvKiB1c2UgZmlyc3QgTU1JTyByZWdpb24gKi9cbjU2NDE6XHRcdHJlZ2lvbiA9IGZmcyhwY2lfc2VsZWN0X2JhcnMocGRldiwgSU9SRVNPVVJDRV9NRU0pKSAtIDE7XG41NjQyOlx0XHRpZiAocmVnaW9uIFx1MDAzYyAwKVxuNTY0MzpcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVOT0RFViwgXCYjMzQ7bm8gTU1JTyByZXNvdXJjZSBmb3VuZFxcblwmIzM0Oyk7XG41NjQ0Olx0XG41NjQ1Olx0XHR0cC1cdTAwM2VtbWlvX2FkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwZGV2LCByZWdpb24sIEtCVUlMRF9NT0ROQU1FKTtcbjU2NDY6XHRcdGlmIChJU19FUlIodHAtXHUwMDNlbW1pb19hZGRyKSlcbjU2NDc6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFBUUl9FUlIodHAtXHUwMDNlbW1pb19hZGRyKSxcbjU2NDg6XHRcdFx0XHRcdCAgICAgXCYjMzQ7Y2Fubm90IHJlbWFwIE1NSU8sIGFib3J0aW5nXFxuXCYjMzQ7KTtcbjU2NDk6XHRcbjU2NTA6XHRcdHR4Y29uZmlnID0gUlRMX1IzMih0cCwgVHhDb25maWcpO1xuNTY1MTpcdFx0aWYgKHR4Y29uZmlnID09IH4wVSlcbjU2NTI6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIC1FSU8sIFwmIzM0O1BDSSByZWFkIGZhaWxlZFxcblwmIzM0Oyk7XG41NjUzOlx0XG41NjU0Olx0XHR4aWQgPSAodHhjb25maWcgXHUwMDNlXHUwMDNlIDIwKSBcdTAwMjYgMHhmY2Y7XG41NjU1Olx0XG41NjU2Olx0XHQvKiBJZGVudGlmeSBjaGlwIGF0dGFjaGVkIHRvIGJvYXJkICovXG41NjU3Olx0XHRjaGlwID0gcnRsODE2OV9nZXRfY2hpcF92ZXJzaW9uKHhpZCwgdHAtXHUwMDNlc3VwcG9ydHNfZ21paSk7XG41NjU4Olx0XG41NjU5Olx0XHRpZiAoY2hpcC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEKSB7XG41NjYwOlx0XHRcdGV4dF94aWRfc3RyID0gXCYjMzQ7ZXh0XCYjMzQ7O1xuNTY2MTpcdFx0XHR4aWQgPSBSVExfUjMyKHRwLCBUWF9DT05GSUdfVjIpO1xuNTY2MjpcdFx0XHRjaGlwID0gcnRsODE2OV9nZXRfZXh0ZW5kZWRfY2hpcF92ZXJzaW9uKHhpZCk7XG41NjYzOlx0XHR9XG41NjY0Olx0XHRpZiAoY2hpcC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfTk9ORSlcbjU2NjU6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIC1FTk9ERVYsXG41NjY2Olx0XHRcdFx0XHQgICAgIFwmIzM0O3Vua25vd24gY2hpcCAlc1hJRCAleCwgY29udGFjdCByODE2OSBtYWludGFpbmVycyAoc2VlIE1BSU5UQUlORVJTIGZpbGUpXFxuXCYjMzQ7LFxuNTY2NzpcdFx0XHRcdFx0ICAgICBleHRfeGlkX3N0ciwgeGlkKTtcbjU2Njg6XHRcdHRwLVx1MDAzZW1hY192ZXJzaW9uID0gY2hpcC1cdTAwM2VtYWNfdmVyc2lvbjtcbjU2Njk6XHRcdHRwLVx1MDAzZWZ3X25hbWUgPSBjaGlwLVx1MDAzZWZ3X25hbWU7XG41NjcwOlx0XG41NjcxOlx0XHQvKiBEaXNhYmxlIEFTUE0gTDEgYXMgdGhhdCBjYXVzZSByYW5kb20gZGV2aWNlIHN0b3Agd29ya2luZ1xuNTY3MjpcdFx0ICogcHJvYmxlbXMgYXMgd2VsbCBhcyBmdWxsIHN5c3RlbSBoYW5ncyBmb3Igc29tZSBQQ0llIGRldmljZXMgdXNlcnMuXG41NjczOlx0XHQgKi9cbjU2NzQ6XHRcdGlmIChydGxfYXNwbV9pc19zYWZlKHRwKSkge1xuNTY3NTpcdFx0XHRkZXZfaW5mbyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7U3lzdGVtIHZlbmRvciBmbGFncyBBU1BNIGFzIHNhZmVcXG5cJiMzNDspO1xuNTY3NjpcdFx0XHRyYyA9IDA7XG41Njc3Olx0XHR9IGVsc2Uge1xuNTY3ODpcdFx0XHRyYyA9IHBjaV9kaXNhYmxlX2xpbmtfc3RhdGUocGRldiwgUENJRV9MSU5LX1NUQVRFX0wxKTtcbjU2Nzk6XHRcdH1cbjU2ODA6XHRcdHRwLVx1MDAzZWFzcG1fbWFuYWdlYWJsZSA9ICFyYztcbjU2ODE6XHRcbjU2ODI6XHRcdGlmIChydGxfaXNfODEyNSh0cCkpIHtcbjU2ODM6XHRcdFx0dTE2IGRhdGEgPSByODE2OF9tYWNfb2NwX3JlYWQodHAsIDB4ZDAwNik7XG41Njg0Olx0XG41Njg1Olx0XHRcdGlmICgoZGF0YSBcdTAwMjYgMHhmZikgPT0gMHgwNylcbjU2ODY6XHRcdFx0XHR0cC1cdTAwM2VzZnBfbW9kZSA9IHRydWU7XG41Njg3Olx0XHR9XG41Njg4Olx0XG41Njg5Olx0XHR0cC1cdTAwM2VkYXNoX3R5cGUgPSBydGxfZ2V0X2Rhc2hfdHlwZSh0cCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkyMAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIENoaXAgSWRlbnRpZmljYXRpb24gRmxhdyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcnRsODE2OV9nZXRfY2hpcF92ZXJzaW9uYCBmdW5jdGlvbiwgYW5kIGl0IHJldHVybnMgdGhpcyBgY2hpcGAgc3RydWN0LiBUaGUgY29yZSBpc3N1ZSBzZWVtcyB0byBiZSBhcm91bmQgaG93IHRoZSBjb2RlIGhhbmRsZXMgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgLiBJZiB0aGUgYGNoaXAtJmd0O21hY192ZXJzaW9uYCBpcyBlcXVhbCB0byBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAsIGl0IHJlYWRzIGBUWF9DT05GSUdfVjJgIGFuZCBkaXZlcyBpbnRvIGBydGw4MTY5X2dldF9leHRlbmRlZF9jaGlwX3ZlcnNpb25gLgoKVGhlIHByb2JsZW0gaXMgdGhhdCBpZiBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaXMgZXNzZW50aWFsbHkgYSBjYXRjaC1hbGwg4oCTIHNheSwgaXTigJlzIGVxdWl2YWxlbnQgdG8gYFJUTF9HSUdBX01BQ19OT05FYCDigJMgdGhlbiBhbnkgdW5rbm93biBjaGlwLCB3aGljaCBkZWZhdWx0cyB0byBgUlRMX0dJR0FfTUFDX05PTkVgLCB3b3VsZCB0cmlnZ2VyIHRoaXMgZXh0ZW5kZWQgdmVyc2lvbiBjaGVjay4gSXQgd291bGQganVtcCBpbnRvIHRoZSBgaWZgIGJsb2NrLCByZWFkIGBUWF9DT05GSUdfVjJgLCBhbmQgY2FsbCBgcnRsODE2OV9nZXRfZXh0ZW5kZWRfY2hpcF92ZXJzaW9uKHhpZClgLiBJZiB0aGF0IGV4dGVuZGVkIGNoZWNrICphbHNvKiByZXR1cm5zIGBSVExfR0lHQV9NQUNfTk9ORWAsIGl0IGNvcnJlY3RseSBmYWlscyB3aXRoIGAtRU5PREVWYC4gCgpCdXQgaGVyZSYjMzk7cyB0aGUgY2F0Y2g6IElmIHRoZSBpbml0aWFsIGB4aWRgIHdhcyB1bmtub3duLCBpdCBkZWZhdWx0cyB0byBgUlRMX0dJR0FfTUFDX05PTkVgLiBUaGVuIHdlIHJlYWQgYFRYX0NPTkZJR19WMmAsIGNhbGwgdGhlIGV4dGVuZGVkIGZ1bmN0aW9uLiBJZiB0aGUgZXh0ZW5kZWQgY2hpcCB2ZXJzaW9uIGhhcHBlbnMgdG8gKm1hdGNoKiBzb21ldGhpbmcsIHNheSBpZiB0aGUgZmFsbGJhY2sgcm91dGluZSBlcnJvbmVvdXNseSByZXR1cm5zIGEgZGVmaW5lZCB2YWx1ZSwgd2XigJlkIGluY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjaGlwISBUaGlzIGlzIGEgc2VyaW91cyBwcm9ibGVtLgoKSSBoYXZlIGEgc3VzcGljaW9uIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpcyBhIHJlY2VudCBhZGRpdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGhpc3Rvcnkgb2YgYHI4MTY5LmhgIHRvIGNvbmZpcm0gdGhlIGNvZGUmIzM5O3MgcmVjZW50IGhpc3RvcnkgdG8gaGVscCB0cmFjayBkb3duIHRoZSBwb3RlbnRpYWwgb3JpZ2luIG9mIHRoZSBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaD0xNT1lbnVtIG1hY192ZXJzaW9uIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtNzYtXHRSVExfR0lHQV9NQUNfVkVSX0xBU1QgPSBSVExfR0lHQV9NQUNfTk9ORSAtIDEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6Nzc6XHRSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEID0gUlRMX0dJR0FfTUFDX05PTkUgJiM0MzsgMVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTc4LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9OTk9c3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTMtXHQvKiBleHRlbmRlZCBjaGlwIHZlcnNpb24qL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjE0Olx0eyAweDdjZiwgMHg3YzgsIFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIxNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01NjAyPXN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU2NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NjU5Olx0aWYgKGNoaXAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY2MC1cdFx0ZXh0X3hpZF9zdHIgPSBcJiMzNDtleHRcJiMzNDs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDExOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNzIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVhbHRlayBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHNpbXBsZSBvbmUgb24gdGhlIHN1cmZhY2UsIGp1c3QgaW5jcmVtZW50aW5nIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBmcm9tIGBSVExfR0lHQV9NQUNfTk9ORWAgdG8gYFJUTF9HSUdBX01BQ19OT05FICYjNDM7IDFgLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIGFzIGEgYnVnIGZpeCDigJMgdGhlIG9sZCBhc3NpZ25tZW50IG11c3QgaGF2ZSBiZWVuIGFuIGVycm9yLiBCdXQgYXMgYSBmdXp6aW5nIGV4cGVydCwgbXkgbWluZCBqdW1wcyB0byB0aGUgaW1wYWN0LiBJcyB0aGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZT8gQWJzb2x1dGVseSwgaWYgYHI4MTY5YCBpcyBldmVuIGZ1enphYmxlLiBUaGF0JiMzOTtzIHRoZSByZWFsIHF1ZXN0aW9uLgoKQ2FuIFN5emthbGxlciBldmVuIHJlYWNoIHRoaXMgZHJpdmVyPyBMZXQgbWUgdGhpbmsuLi4gd2UgaGF2ZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCwgd2hpY2ggY2FuIHRyaWdnZXIgUENJIHByb2JlIGZ1bmN0aW9ucy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIG5leHQgcXVlc3Rpb246IGlzIGByODE2OWAgZW5hYmxlZCBpbiB0aGUgc3RhbmRhcmQgY29uZmlndXJhdGlvbnMgdGhhdCBTeXprYWxsZXIgdXNlcz8gSXQmIzM5O3MgYSBSZWFsdGVrIGdpZ2FiaXQgZXRoZXJuZXQgZHJpdmVyLCBwcmV0dHkgY29tbW9uLiBJJiMzOTttIGdvaW5nIHRvIGJldCBpdCYjMzk7cyB0aGVyZS4gTGV0IG1lIGNoZWNrLi4uIHllcCwgYENPTkZJR19SODE2OWAgbG9va3MgdmVyeSBmYW1pbGlhci4gR29vZCwgaXQmIzM5O3MgdGhlcmUuIFRoaXMgZGVzZXJ2ZXMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBhcyBldmVuIGEgc21hbGwgYnVnIGZpeCBjb3VsZCByZXZlYWwgbmV3LCBleHBsb2l0YWJsZSBjb2RlIHBhdGhzIGR1cmluZyBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUjgxNjkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9NzQ9Y29uZmlnIDgxMzlfT0xEX1JYX1JFU0VUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjg0OmNvbmZpZyBSODE2OVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTg1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MTY5LzgxNjgvODEwMS84MTI1IGV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwMjpjb25maWcgUjgxNjlfTEVEU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTEwMy1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIE5JQyBMRURzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDExOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4NTkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzOgoKKipDaGVja2luZyBSODE2OSBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgdGltZSB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCB0aGUgYFI4MTY5YCBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBleGFtaW5lIHRoZSBgS2NvbmZpZ2AgZmlsZSBzcGVjaWZpY2FsbHkgZm9yIHRoYXQgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgc3RyYWlnaHQgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciBSZWFsdGVrIEV0aGVybmV0IGRyaXZlcnMgYXJlIGRlZmluZWQgaW4gdGhlIGtlcm5lbCBzb3VyY2UuIEJ5IG9wZW5pbmcgYW5kIHJlYWRpbmcgdGhpcyBmaWxlLCBJJiMzOTtsbCBiZSBhYmxlIHRvIHNlZSBleGFjdGx5IHdoYXQgb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIG1vZHVsZXMgYFI4MTY5YCByZWxpZXMgdXBvbiwgYW5kIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBiZWdpbiBteSBpbnZlc3RpZ2F0aW9uIHRvIHVuZGVyc3RhbmQgaXRzIGludGVncmF0aW9uIHdpdGggdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gYW5kIGl0cyByZXF1aXJlbWVudHMuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgaW5mb3JtYXRpb24gb24gZGVwZW5kZW5jaWVzIGxpa2Ugb3RoZXIgbmV0d29yayBkcml2ZXJzLCBzcGVjaWZpYyBoYXJkd2FyZSBzdXBwb3J0LCBvciBwb3RlbnRpYWxseSBvdGhlciBrZXJuZWwgZmVhdHVyZXMgaXQgbmVlZHMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIHRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDExOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4MDpcdFx0ICBSWC1yZXNldCBtZXRob2Qgc2hvdWxkIGJlIGFkZXF1YXRlIGZvciBhbGwgYm9hcmRzLiAgQnV0IGlmIHlvdVxuICA4MTpcdFx0ICBleHBlcmllbmNlIHByb2JsZW1zLCB5b3UgY2FuIGVuYWJsZSB0aGlzIG9wdGlvbiB0byByZXN0b3JlIHRoZVxuICA4MjpcdFx0ICBvbGQgUlgtcmVzZXQgYmVoYXZpb3IuICBJZiB1bnN1cmUsIHNheSBOLlxuICA4MzpcdFxuICA4NDpcdGNvbmZpZyBSODE2OVxuICA4NTpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MTY5LzgxNjgvODEwMS84MTI1IGV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgODY6XHRcdGRlcGVuZHMgb24gUENJXG4gIDg3Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDg4Olx0XHRzZWxlY3QgQ1JDMzJcbiAgODk6XHRcdHNlbGVjdCBQSFlMSUJcbiAgOTA6XHRcdHNlbGVjdCBSRUFMVEVLX1BIWVxuICA5MTpcdFx0aGVscFxuICA5MjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGEgUmVhbHRlayBFdGhlcm5ldCBhZGFwdGVyIGJlbG9uZ2luZyB0b1xuICA5MzpcdFx0ICB0aGUgZm9sbG93aW5nIGZhbWlsaWVzOlxuICA5NDpcdFx0ICBSVEw4MTY5IEdpZ2FiaXQgRXRoZXJuZXRcbiAgOTU6XHRcdCAgUlRMODE2OCBHaWdhYml0IEV0aGVybmV0XG4gIDk2Olx0XHQgIFJUTDgxMDEgRmFzdCBFdGhlcm5ldFxuICA5NzpcdFx0ICBSVEw4MTI1IDIuNUdCaXQgRXRoZXJuZXRcbiAgOTg6XHRcbiAgOTk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDQyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQQ0kgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIHRoaXMgZGVmaW5pdGVseSBoaW5nZXMgb24gYFBDSWAuIFRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtIGhlcmUgaXMgYENPTkZJR19SODE2OWAsIHRoYXQmIzM5O3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBDb25zaWRlcmluZyB0aGlzIGlzIGEgUENJIGRyaXZlciBwcm9iZSBmdW5jdGlvbiBmaXgsIGZ1enppbmcgc2VlbXMgbGlrZSBhIHdvcnRod2hpbGUgZW5kZWF2b3IuIFRoZSBhY3R1YWwgcHJvYmUgZnVuY3Rpb24gd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4gaXMgYHJ0bF9pbml0X29uZWAuIE5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHdlJiMzOTt2ZSBpZGVudGlmaWVkIHRoZSByaWdodCBzcG90LCBhbmQgdGhhdCB3ZSYjMzk7cmUgbm90IG1pc3Npbmcgb3RoZXIgaW1wb3J0YW50IGZ1bmN0aW9ucyBpbiB0aGlzIGFyZWEgdGhhdCBtaWdodCBiZSB3b3J0aCBzaW1pbGFyIGF0dGVudGlvbi4gVGhlcmUgbWF5IGJlIGFkamFjZW50IHBvaW50cyBmb3IgdXMgdG8gZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGxfaW5pdF9vbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xOTQ1PXN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9jb3VudGVyX29mZnNldHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTk1OC1cdCAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxOTU5Olx0ICogKCopIFdlIGNhbiYjMzk7dCBjYWxsIHJ0bDgxNjlfaW5pdF9jb3VudGVyX29mZnNldHMgZnJvbSBydGxfaW5pdF9vbmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE5NjAtXHQgKiBmb3IgdGhlIHJlYXNvbiBzdGF0ZWQgaW4gcnRsODE2OV91cGRhdGVfY291bnRlcnM7IENtZFJ4RW5iIGlzIG9ubHlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01NTkzPXN0YXRpYyBib29sIHJ0bF9hc3BtX2lzX3NhZmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTYwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU2MDI6c3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NjAzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01ODI2PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBydGw4MTY5X3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTgyOC1cdC5pZF90YWJsZVx0PSBydGw4MTY5X3BjaV90YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1ODI5Olx0LnByb2JlXHRcdD0gcnRsX2luaXRfb25lLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTgzMC1cdC5yZW1vdmVcdFx0PSBydGxfcmVtb3ZlX29uZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxODcKCQkJCQkJCW91dHB1dDogMTQwCgkJCQkJCQl0aG91Z2h0czogNTgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFN1YnRsZSBCdWcgaW4gdGhlIGBydGxfaW5pdF9vbmVgIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSB0aGUgcHJvYmxlbSBqdW1wcyBvdXQgYXQgbWUuIFRoZSBjb3JlIGlzc3VlIGlzIHRoZSB2YWx1ZSBhc3NpZ25tZW50OiBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgYW5kIGBSVExfR0lHQV9NQUNfTk9ORWAgYXJlIGJlaW5nIHRyZWF0ZWQgYXMgdGhlIHNhbWUsIHdoaWNoIGlzIGEgYmlnIHJlZCBmbGFnIGluIHRoaXMgY29udGV4dC4gTGV0JiMzOTtzIGJyZWFrIGl0IGRvd246CgpUaGUgcHJvYmUgZnVuY3Rpb24sIGBydGxfaW5pdF9vbmVgLCBpcyB0aGUgZW50cnkgcG9pbnQuIFRoZSBwYXRjaCBhaW1zIHRvIGZpeCBhIGNvbmRpdGlvbiB3aGVyZSB0aGVzZSB0d28gY29uc3RhbnRzIGFyZSBpZGVudGljYWwuIElmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIHRoZW4gdGhlIGNhdGNoLWFsbCBlbnRyeSBpbiBgcnRsX2NoaXBfaW5mb2AgZW5kcyB1cCBhc3NpZ25pbmcgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkIGBSVExfR0lHQV9NQUNfTk9ORWAuIEl0IGJlY29tZXMgYSBzb3VyY2Ugb2YgbWlzaWRlbnRpZmljYXRpb24uCgpUaGlzIG1lYW5zIHRoZSBjYXRjaC1hbGwgZW50cnk6CmBgYGMKLyogQ2F0Y2gtYWxsICovCnsgMHgwMDAsIDB4MDAwLAlSVExfR0lHQV9NQUNfTk9ORSB9CmBgYAppcyBlZmZlY3RpdmVseToKYGBgYwovKiBDYXRjaC1hbGwgKi8KeyAweDAwMCwgMHgwMDAsIFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgfQpgYGAKCkFuZCBzaW1pbGFybHksIHRoZSBpbnRlbmRlZCBleHRlbmRlZCBlbnRyeToKYGBgYwovKiBleHRlbmRlZCBjaGlwIHZlcnNpb24qLwp7IDB4N2NmLCAweDdjOCwgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB9LApgYGAKaXMgaW5zdGVhZCB0aGlzOgpgYGBjCi8qIGV4dGVuZGVkIGNoaXAgdmVyc2lvbiovCnsgMHg3Y2YsIDB4N2M4LCBSVExfR0lHQV9NQUNfTk9ORSB9LApgYGAKCkNvbnNlcXVlbnRseSwgaWYgYSBjaGlwIGhhcHBlbnMgdG8gbWF0Y2ggdGhlIGV4dGVuZGVkIGVudHJ5LCBpdCYjMzk7cyB3cm9uZ2x5IGdpdmVuIGBSVExfR0lHQV9NQUNfTk9ORWAuCgpUaGlzIGNyZWF0ZXMgYSBjaGFpbiByZWFjdGlvbi4gIFRoZSBjb2RlIHRoZW4gY2hlY2tzIGBpZiAoY2hpcC0mZ3Q7bWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRClgLiBTaW5jZSB0aGVzZSB0d28gY29uc3RhbnRzIGFyZSBlcXVhbCwgdGhhdCBjb25kaXRpb24gbm93IGJlY29tZXMgdHJ1ZSwgZXZlbiBmb3IgYSBub24tZXh0ZW5kZWQgY2hpcC4gQXMgYSByZXN1bHQgaXQgcmVhZHMgYFRYX0NPTkZJR19WMmAgYW5kIHRyaWdnZXJzIGBydGw4MTY5X2dldF9leHRlbmRlZF9jaGlwX3ZlcnNpb25gLgoKSWYgdGhlIGNoaXAgZG9lc24mIzM5O3QgbWF0Y2ggdGhlIGV4dGVuZGVkIGVudHJ5LCBpdCBoaXRzIHRoZSBjYXRjaC1hbGwsIGFuZCBpcyBhc3NpZ25lZCB0aGUgdmFsdWUgdGhhdCBpcyB1c2VkIGluIHRoZSBgUlRMX0dJR0FfTUFDX05PTkVgIGVudHJ5LiAgYFJUTF9HSUdBX01BQ19OT05FYCBpcyB0aGUgc2FtZSBhcyBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAuICBUaGVuIHRoZSBzYW1lIGNvbmRpdGlvbiwgYGlmIChjaGlwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEKWAgaXMgbm93IHRydWUhIFRoaXMgbGVhZHMgdGhlIHByb2JlIHRvIGluY29ycmVjdGx5IGNhbGwgYHJ0bDgxNjlfZ2V0X2V4dGVuZGVkX2NoaXBfdmVyc2lvbmAgYWdhaW4sIGV2ZW4gZm9yIHRoZSAmIzM0O3Vua25vd24mIzM0OyBjaGlwcy4KClRoZSBwcm9ibGVtIGVzY2FsYXRlcy4gSWYgYHJ0bDgxNjlfZ2V0X2V4dGVuZGVkX2NoaXBfdmVyc2lvbmAgcmV0dXJucyBgUlRMX0dJR0FfTUFDX05PTkVgIChiZWNhdXNlIGl0IGRvZXNuJiMzOTt0IHJlY29nbml6ZSB0aGUgZXh0ZW5kZWQgdmVyc2lvbiksIHRoZW4gYGlmIChjaGlwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfTk9ORSlgIGJlY29tZXMgdHJ1ZSwgbGVhZGluZyB0byBhIGAtRU5PREVWYCBlcnJvci4gQnV0LCB0aGUgcmVhbCBraWNrZXIgaXMgaWYgdGhlIGV4dGVuZGVkIHZlcnNpb24gKmRvZXMqIG1hdGNoIHNvbWV0aGluZywgdGhlbiB0aGUgY29kZSB3aWxsIGVycm9uZW91c2x5IGNsYXNzaWZ5IGFuIHVua25vd24gY2hpcCBhcyBhbiAmIzM0O2V4dGVuZGVkJiMzNDsgY2hpcC4gVGhhdCYjMzk7cyBhIHNlcmlvdXMgZnVuY3Rpb25hbCBidWcgdGhhdCBoYXMgdG8gYmUgZml4ZWQuCgpJIGFtIHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYCBiZWNhdXNlIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBgcnRsX2luaXRfb25lYCBmdW5jdGlvbiBpcyB0aGUgcGxhY2UgdG8gZm9jdXMgb24sIGFuZCBJJiMzOTtsbCBrZWVwIHRoZSBgUjgxNjlgIGNvbmZpZyBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UjgxNjkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydGxfaW5pdF9vbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gZW51bSB2YWx1ZSBjb2xsaXNpb24gd2hlcmUgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB3YXMgaW1wbGljaXRseSBlcXVhbCB0byBSVExfR0lHQV9NQUNfTk9ORS4gVGhpcyBjYXVzZWQgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiAocnRsX2luaXRfb25lKSB0byBtaXNpZGVudGlmeSB1bmtub3duIGNoaXBzIGFzIGV4dGVuZGVkIGNoaXBzLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluY29ycmVjdCBpbml0aWFsaXphdGlvbiBvciBjcmFzaGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBQQ0kgZHJpdmVyIHByb2JlIHBhdGggdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgc3l6a2FsbGVyJiMzOTtzIHN5el9wY2lfZGV2aWNlX2FkZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UjgxNjkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydGxfaW5pdF9vbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gZW51bSB2YWx1ZSBjb2xsaXNpb24gd2hlcmUgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB3YXMgaW1wbGljaXRseSBlcXVhbCB0byBSVExfR0lHQV9NQUNfTk9ORS4gVGhpcyBjYXVzZWQgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiAocnRsX2luaXRfb25lKSB0byBtaXNpZGVudGlmeSB1bmtub3duIGNoaXBzIGFzIGV4dGVuZGVkIGNoaXBzLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluY29ycmVjdCBpbml0aWFsaXphdGlvbiBvciBjcmFzaGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBQQ0kgZHJpdmVyIHByb2JlIHBhdGggdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgc3l6a2FsbGVyJiMzOTtzIHN5el9wY2lfZGV2aWNlX2FkZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBlbnVtIHZhbHVlIGNvbGxpc2lvbiBpbiBgZW51bSBtYWNfdmVyc2lvbmAgd2hlcmUgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGltcGxpY2l0bHkgaGFkIHRoZSBzYW1lIHZhbHVlIGFzIGBSVExfR0lHQV9NQUNfTk9ORWAuIFRoaXMgaXMgYSBsb2dpYyBidWcgYWZmZWN0aW5nIGhhcmR3YXJlIGlkZW50aWZpY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBmb3Igc3BlY2lmaWMgUmVhbHRlayBuZXR3b3JrIGNhcmRzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gU3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgY2hhbmdlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5N2Y1MzVlZWUyZTdhZGJlMGFmMDEzNTY2MzY1Y2YyZjViZDg4N2RlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAxMTowMjo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaAppbmRleCAwYjljMWQ0ZWI0OGJhLi5mYjc3MmNjMDQzMTA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oCkBAIC03NCw3ICYjNDM7NzQsNyBAQCBlbnVtIG1hY192ZXJzaW9uIHsKIAlSVExfR0lHQV9NQUNfVkVSXzgwLAogCVJUTF9HSUdBX01BQ19OT05FLAogCVJUTF9HSUdBX01BQ19WRVJfTEFTVCA9IFJUTF9HSUdBX01BQ19OT05FIC0gMSwKLQlSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVECiYjNDM7CVJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgPSBSVExfR0lHQV9NQUNfTk9ORSAmIzQzOyAxCiB9OwogCiBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxOQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQ4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWFsdGVrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIFJlYWx0ZWsgcjgxNjkgZHJpdmVyLCBhbmQgaXQmIzM5O3MgdHdlYWtpbmcgdGhlIGBtYWNfdmVyc2lvbmAgZW51bSBpbiBgcjgxNjkuaGAuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYC4gSW5pdGlhbGx5LCBpdCB3YXMgYmVpbmcgYXNzaWduZWQgaW1wbGljaXRseSwgYW5kIHRoYXQmIzM5O3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gTGV0IG1lIHdhbGsgdGhyb3VnaCB0aGlzLi4uCgpCZWZvcmUgdGhlIHBhdGNoLCBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaW1wbGljaXRseSBhc3N1bWVkIHRoZSBuZXh0IHZhbHVlLiBOb3csIHRoZSBlbnVtIGFzIGl0IHN0YW5kcyBpcyBkZWZpbmVkIGFzOgoKYGBgYwplbnVtIG1hY192ZXJzaW9uIHsKICAgIC4uLgoJUlRMX0dJR0FfTUFDX1ZFUl84MCwKCVJUTF9HSUdBX01BQ19OT05FLAoJUlRMX0dJR0FfTUFDX1ZFUl9MQVNUID0gUlRMX0dJR0FfTUFDX05PTkUgLSAxLAoJUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRAp9OwpgYGAKClNvLCBgUlRMX0dJR0FfTUFDX1ZFUl9MQVNUYCBpcyBleHBsaWNpdGx5IHNldCB0byBgUlRMX0dJR0FfTUFDX05PTkUgLSAxYC4gVGhpcyBtZWFucyB0aGF0IGJlZm9yZSB0aGUgcGF0Y2gsIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCB3YXMgaW1wbGljaXRseSAqZXF1YWwqIHRvIGBSVExfR0lHQV9NQUNfTk9ORWAhIFRoYXQmIzM5O3MgYSBkZWZpbml0ZSBjb2xsaXNpb24uIFRoZSBpbXBsaWNpdCBpbmNyZW1lbnQgbWFkZSBpdCBlcXVhbCB0byB0aGUgZXhwbGljaXRseSBkZWNsYXJlZCBgUlRMX0dJR0FfTUFDX05PTkVgLgoKVGhlIHBhdGNoIGZpeGVzIHRoaXMgYnkgbWFraW5nIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEID0gUlRMX0dJR0FfTUFDX05PTkUgJiM0MzsgMWAuIFRoaXMgcmVzb2x2ZXMgdGhlIHZhbHVlIGNsYXNoLgoKVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZW51bSB2YWx1ZSBidWcsIEkgZG9uJiMzOTt0IHNlZSBhbnkgaW1tZWRpYXRlIGNvbmNlcm5zIHJlZ2FyZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXQmIzM5O3MganVzdCBhIG1hdHRlciBvZiBlbnN1cmluZyBkaXN0aW5jdCB2YWx1ZXMuIE5vdywgSSBuZWVkIHRvIGNoZWNrIHdoZXJlIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpcyBhY3R1YWxseSB1c2VkIGluIHRoZSBkcml2ZXIgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oPTE1PWVudW0gbWFjX3ZlcnNpb24ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC03Ni1cdFJUTF9HSUdBX01BQ19WRVJfTEFTVCA9IFJUTF9HSUdBX01BQ19OT05FIC0gMSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo3NzpcdFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgPSBSVExfR0lHQV9NQUNfTk9ORSAmIzQzOyAxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtNzgtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz05OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIxMy1cdC8qIGV4dGVuZGVkIGNoaXAgdmVyc2lvbiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMTQ6XHR7IDB4N2NmLCAweDdjOCwgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjE1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTU2MDI9c3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU2NTk6XHRpZiAoY2hpcC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NjYwLVx0XHRleHRfeGlkX3N0ciA9IFwmIzM0O2V4dFwmIzM0OztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ0OQoJCQkJCQkJb3V0cHV0OiAxMzAKCQkJCQkJCXRob3VnaHRzOiAxMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFbnVtIENvbGxpc2lvbiBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFdlIGhhdmUgYW4gZW51bSBjb2xsaXNpb24gaXNzdWUuIFNwZWNpZmljYWxseSwgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIHdhcywgZm9yIHNvbWUgcmVhc29uLCBnZXR0aW5nIHRoZSBzYW1lIHZhbHVlIGFzIGBSVExfR0lHQV9NQUNfTk9ORWAuIFRoaXMgaXMgYSBjbGFzc2ljIGxvZ2ljIGVycm9yLCBub3RoaW5nIHRoYXQgaGludHMgYXQgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgd29lcy4gSXQgbWVhbnMgdGhhdCBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQsIHRoZSBjb2RlIHdhcyBtaXNpbnRlcnByZXRpbmcgdGhlIGhhcmR3YXJlIHZlcnNpb24uIElmIGBjaGlwLSZndDttYWNfdmVyc2lvbmAgaGVsZCBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAsIGl0IHdhcyBzb21ldGltZXMgYmVpbmcgdHJlYXRlZCBhcyBgUlRMX0dJR0FfTUFDX05PTkVgLCBhbmQgdmljZSB2ZXJzYS4gQ2xlYXJseSBhIGJ1ZywgYnV0IG5vdCBhIG1lbW9yeSBzYWZldHkgb25lLiBJJiMzOTttIGdvaW5nIHRvIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYmVjYXVzZSBpdCYjMzk7cyBub3QgYXBwbGljYWJsZSBoZXJlLiBUaGlzIGlzIGp1c3QgYSBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiBsb2dpYyBidWcsIHJlcXVpcmluZyBhIHNpbXBsZSBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDExOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGVudW0gdmFsdWUgY29sbGlzaW9uIGluIGBlbnVtIG1hY192ZXJzaW9uYCB3aGVyZSBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaW1wbGljaXRseSBoYWQgdGhlIHNhbWUgdmFsdWUgYXMgYFJUTF9HSUdBX01BQ19OT05FYC4gVGhpcyBpcyBhIGxvZ2ljIGJ1ZyBhZmZlY3RpbmcgaGFyZHdhcmUgaWRlbnRpZmljYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGZvciBzcGVjaWZpYyBSZWFsdGVrIG5ldHdvcmsgY2FyZHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBTdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTiBhcmUgc3VmZmljaWVudCBmb3IgdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBlbnVtIHZhbHVlIGNvbGxpc2lvbiBpbiBgZW51bSBtYWNfdmVyc2lvbmAgd2hlcmUgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGltcGxpY2l0bHkgaGFkIHRoZSBzYW1lIHZhbHVlIGFzIGBSVExfR0lHQV9NQUNfTk9ORWAuIFRoaXMgaXMgYSBsb2dpYyBidWcgYWZmZWN0aW5nIGhhcmR3YXJlIGlkZW50aWZpY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBmb3Igc3BlY2lmaWMgUmVhbHRlayBuZXR3b3JrIGNhcmRzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gU3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgY2hhbmdlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMjo0Ny4yMjU5NTM5MDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzQ4ODUzNzMwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSODE2OVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bF9pbml0X29uZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gZW51bSB2YWx1ZSBjb2xsaXNpb24gaW4gYGVudW0gbWFjX3ZlcnNpb25gIHdoZXJlIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpbXBsaWNpdGx5IGhhZCB0aGUgc2FtZSB2YWx1ZSBhcyBgUlRMX0dJR0FfTUFDX05PTkVgLiBUaGlzIGlzIGEgbG9naWMgYnVnIGFmZmVjdGluZyBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gZm9yIHNwZWNpZmljIFJlYWx0ZWsgbmV0d29yayBjYXJkcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIEtBU0FOIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIGNoYW5nZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBlbnVtIHZhbHVlIGNvbGxpc2lvbiB3aGVyZSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEIHdhcyBpbXBsaWNpdGx5IGVxdWFsIHRvIFJUTF9HSUdBX01BQ19OT05FLiBUaGlzIGNhdXNlZCB0aGUgZHJpdmVyJ3MgcHJvYmUgZnVuY3Rpb24gKHJ0bF9pbml0X29uZSkgdG8gbWlzaWRlbnRpZnkgdW5rbm93biBjaGlwcyBhcyBleHRlbmRlZCBjaGlwcywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBpbmNvcnJlY3QgaW5pdGlhbGl6YXRpb24gb3IgY3Jhc2hlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgUENJIGRyaXZlciBwcm9iZSBwYXRoIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHN5emthbGxlcidzIHN5el9wY2lfZGV2aWNlX2FkZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDI6NDcuMjI1OTU5MzIxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzcxMzA3MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5N2Y1MzVlZWUyZTdhZGJlMGFmMDEzNTY2MzY1Y2YyZjViZDg4N2RlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDggMTE6MDI6NDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oXFxuaW5kZXggMGI5YzFkNGViNDhiYS4uZmI3NzJjYzA0MzEwNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmhcXG5AQCAtNzQsNyArNzQsNyBAQCBlbnVtIG1hY192ZXJzaW9uIHtcXG4gXFx0UlRMX0dJR0FfTUFDX1ZFUl84MCxcXG4gXFx0UlRMX0dJR0FfTUFDX05PTkUsXFxuIFxcdFJUTF9HSUdBX01BQ19WRVJfTEFTVCA9IFJUTF9HSUdBX01BQ19OT05FIC0gMSxcXG4tXFx0UlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRFxcbitcXHRSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEID0gUlRMX0dJR0FfTUFDX05PTkUgKyAxXFxuIH07XFxuIFxcbiBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMjo0Ny42NjM4MjYxNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY0NTU5MTc5OTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlI4MTY5XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRsX2luaXRfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gZW51bSB2YWx1ZSBjb2xsaXNpb24gd2hlcmUgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB3YXMgaW1wbGljaXRseSBlcXVhbCB0byBSVExfR0lHQV9NQUNfTk9ORS4gVGhpcyBjYXVzZWQgdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIChydGxfaW5pdF9vbmUpIHRvIG1pc2lkZW50aWZ5IHVua25vd24gY2hpcHMgYXMgZXh0ZW5kZWQgY2hpcHMsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gaW5jb3JyZWN0IGluaXRpYWxpemF0aW9uIG9yIGNyYXNoZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFBDSSBkcml2ZXIgcHJvYmUgcGF0aCB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBzeXprYWxsZXIncyBzeXpfcGNpX2RldmljZV9hZGQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDk3ZjUzNWVlZTJlN2FkYmUwYWYwMTM1NjYzNjVjZjJmNWJkODg3ZGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDExOjAyOjQ2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oXG5pbmRleCAwYjljMWQ0ZWI0OGJhLi5mYjc3MmNjMDQzMTA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmhcbkBAIC03NCw3ICs3NCw3IEBAIGVudW0gbWFjX3ZlcnNpb24ge1xuIFx0UlRMX0dJR0FfTUFDX1ZFUl84MCxcbiBcdFJUTF9HSUdBX01BQ19OT05FLFxuIFx0UlRMX0dJR0FfTUFDX1ZFUl9MQVNUID0gUlRMX0dJR0FfTUFDX05PTkUgLSAxLFxuLVx0UlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRFxuK1x0UlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCA9IFJUTF9HSUdBX01BQ19OT05FICsgMVxuIH07XG4gXG4gc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDExOjAyOjQ3LjY2MzgyNzQ1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI2NzU0NjI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSZWFsdGVrIEV0aGVybmV0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmhgLiBJbW1lZGlhdGVseSwgSSBzZWUgaXQncyB0b3VjaGluZyBhbiBgZW51bSBtYWNfdmVyc2lvbmAgYW5kIHNwZWNpZmljYWxseSwgdGhlIHZhbHVlIGFzc2lnbmVkIHRvIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYC4gSW5pdGlhbGx5LCBpdCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIFRoZSBvcmlnaW5hbCBlbnVtIGhhZCBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaW1wbGljaXRseSBhc3NpZ25lZCwgcG9zaXRpb25lZCBhZnRlciBgUlRMX0dJR0FfTUFDX1ZFUl9MQVNUYC5cblxuQnV0IGhhbmcgb27igKYgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBgUlRMX0dJR0FfTUFDX1ZFUl9MQVNUYCBpcyBkZWZpbmVkIGFzIGBSVExfR0lHQV9NQUNfTk9ORSAtIDFgLiBUaGF0IG1lYW5zIHRoZSBvcmlnaW5hbCBpbXBsaWNpdCBhc3NpZ25tZW50IG9mIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCB3YXMsIGluIGZhY3QsIGBSVExfR0lHQV9NQUNfTk9ORWAuIFdhaXQgYSBtaW51dGUsIHRoYXQncyBhIHByb2JsZW0sIGJlY2F1c2UgYFJUTF9HSUdBX01BQ19OT05FYCBpcyBhbHJlYWR5IGV4cGxpY2l0bHkgZGVmaW5lZCB3aXRoaW4gdGhlIGVudW0uIFNvLCBpdCB3YXMgZWZmZWN0aXZlbHkgYSBkdXBsaWNhdGUgdmFsdWUhXG5cbk5vdywgdGhlIHBhdGNoIGlzIGV4cGxpY2l0bHkgYXNzaWduaW5nIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBhcyBgUlRMX0dJR0FfTUFDX05PTkUgKyAxYC4gVGhpcyBmaXhlcyB0aGUgaW1wbGljaXQgZHVwbGljYXRpb24gYW5kIGVuc3VyZXMgaXQncyBhIHVuaXF1ZSB2YWx1ZSB3aXRoaW4gdGhlIGVudW1lcmF0aW9uLiBOb3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgd2FzIG5lZWRlZC4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gdHJhY2sgZG93biBhbGwgdGhlIGluc3RhbmNlcyB3aGVyZSBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaXMgYWN0dWFsbHkgdXNlZC4gVGhpcyBjaGFuZ2UgbWlnaHQgYmUgYSBidWcgZml4LCBvciBtYXliZSBpdCdzIHNldHRpbmcgdGhlIHN0YWdlIGZvciBzb21lIGZ1dHVyZSBleHRlbnNpb24gaW4gdGhpcyBkcml2ZXIsIG9yIHBlcmhhcHMgaXQncyByZWxhdGVkIHRvIHNvbWUgc2lsaWNvbiByZXZpc2lvbiBvciB2YXJpYW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDIyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDI6NTMuOTMxMzc2OTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxNjI5NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg9MTU9ZW51bSBtYWNfdmVyc2lvbiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtNzYtXFx0UlRMX0dJR0FfTUFDX1ZFUl9MQVNUID0gUlRMX0dJR0FfTUFDX05PTkUgLSAxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo3NzpcXHRSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEID0gUlRMX0dJR0FfTUFDX05PTkUgKyAxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTc4LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz05OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjEzLVxcdC8qIGV4dGVuZGVkIGNoaXAgdmVyc2lvbiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjE0OlxcdHsgMHg3Y2YsIDB4N2M4LCBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTYwMj1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU2NTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTY1OTpcXHRpZiAoY2hpcC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU2NjAtXFx0XFx0ZXh0X3hpZF9zdHIgPSBcXFwiZXh0XFxcIjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDI6NTMuOTc5NTQ1ODY5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODcwNzI0MjA0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHI4MTY5IERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaXMgc2hvd2luZyB1cCBpbiBgcnRsX2luaXRfb25lYCB3aXRoaW4gdGhlIGBydGxfY2hpcF9pbmZvYCBhcnJheSwgYW5kIHRoZSBkcml2ZXIgaXMgdGhlIGByODE2OWAgUENJIGRyaXZlciBmb3IgUmVhbHRlayBnaWdhYml0IGV0aGVybmV0IGNvbnRyb2xsZXJzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHdoZXRoZXIgdGhpcyBkcml2ZXIgaXMgZXZlbiByZWFjaGFibGUgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudC4gUUVNVSBoYW5kbGVzIGBydGw4MTM5YCwgYnV0IGRvZXMgaXQgc3VwcG9ydCB0aGUgYHJ0bDgxNjlgIHZhcmlhbnQ/IEEgcXVpY2sgY2hlY2sgb2YgUUVNVSdzIGVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlcyByZXZlYWxzIGEgbGlzdCwgYnV0IG5vIGRpcmVjdCBgcnRsODE2OWAgZW11bGF0aW9uLlxuXG5Ib3dldmVyLCBqdXN0IGJlY2F1c2UgaXQncyBub3QgbmF0aXZlbHkgZW11bGF0ZWQgZG9lc24ndCBtZWFuIGl0J3Mgb2ZmLWxpbWl0cy4gU3l6a2FsbGVyJ3MgYHN5el9wY2lfZGV2aWNlX2FkZGAgY2FsbCBtaWdodCBiZSBhIHdvcmthcm91bmQsIGFzIGl0IGNhbiBpbmplY3QgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIEJBUnMgdG8gZW11bGF0ZSBhbnkgUENJIGRldmljZS4gSWYgYHI4MTY5YCBpcyBhIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSBkcml2ZXIsIHRoZW4sIGluIHRoZW9yeSwgaXQgc2hvdWxkIGJlIGZ1enphYmxlIHRocm91Z2ggYHN5el9wY2lfZGV2aWNlX2FkZGAuXG5cbkkgbmVlZCB0byByZS1ldmFsdWF0ZSB0aGUgY29udGV4dCBvZiB0aGUgcHJvbXB0LCB0aG91Z2guIEl0IHNwZWNpZmljYWxseSBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVIGRyaXZlcnPigJR0aGluZ3MgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgYW5kIGFyZSAqbm90KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBEb2VzIGByODE2OWAgZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnk/IE5vLCBpdCdzIGEgc3RhbmRhcmQgRXRoZXJuZXQgZHJpdmVyLlxuXG5UaGUgUENJIGZ1enplciBpbiBzeXprYWxsZXIgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciB0aGlzIHB1cnBvc2UsIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gZnV6eiBpdCFcblxuQWgsIHJpZ2h0LCBsb29raW5nIGF0IHRoZSBwYXRjaCwgaXQgc2VlbXMgdG8gYmUganVzdCBjaGFuZ2luZyBhbiBlbnVtIHZhbHVlLiBJbnRlcmVzdGluZy4gYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIHdhcywgYXBwYXJlbnRseSwgZXF1YWwgdG8gYFJUTF9HSUdBX01BQ19OT05FYCBiZWZvcmUsIHdoaWNoIGNyZWF0ZWQgYSBidWcgd2hlcmUgYGNoaXAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgd291bGQgZXZhbHVhdGUgdG8gdHJ1ZSB3aGVuIGBSVExfR0lHQV9NQUNfTk9ORWAgd2FzIHRoZSBhY3R1YWwgaW50ZW5kZWQgdmFsdWUuIFdlbGwsIHRoYXQgbWFrZXMgc2Vuc2U7IGBSVExfR0lHQV9NQUNfTk9ORWAgaXMgdXNlZCB3aGVuIHRoZXJlJ3Mgbm8gbWF0Y2hpbmcgTUFDIHZlcnNpb24uIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gaG93IHRoZXNlIGVudW0gdmFsdWVzIGFyZSB1c2VkLCBzdGFydGluZyB3aXRoIGBydGxfaW5pdF9vbmVgIGFuZCB0aGUgYHJ0bF9jaGlwX2luZm9gIGFycmF5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjgxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDExOjAzOjAyLjY4Njc5MDQ1NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTM1MzM2OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUlRMX0dJR0FfTUFDX05PTkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oPTE1PWVudW0gbWFjX3ZlcnNpb24ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTc0LVxcdFJUTF9HSUdBX01BQ19WRVJfODAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjc1OlxcdFJUTF9HSUdBX01BQ19OT05FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo3NjpcXHRSVExfR0lHQV9NQUNfVkVSX0xBU1QgPSBSVExfR0lHQV9NQUNfTk9ORSAtIDEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjc3OlxcdFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgPSBSVExfR0lHQV9NQUNfTk9ORSArIDFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtNzgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTYtXFx0LyogQ2F0Y2gtYWxsICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjE3OlxcdHsgMHgwMDAsIDB4MDAwLFxcdFJUTF9HSUdBX01BQ19OT05FIH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTIyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gcnRsX2NoaXBfaW5mb3NfZXh0ZW5kZWRbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIyNC1cXHQvKiBDYXRjaC1hbGwgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMjU6XFx0eyAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCBSVExfR0lHQV9NQUNfTk9ORSB9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjI2LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01NjAyPXN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY2My1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTY2NDpcXHRpZiAoY2hpcC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX05PTkUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY2NS1cXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCAtRU5PREVWLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzowMi45NDAzMjk2NjhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTI3OTE5MjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgUmVkdW5kYW5jeSBpbiBNQUMgVmVyc2lvbiBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IGBSVExfR0lHQV9NQUNfTk9ORWAgaXMgdXNlZCBhcyBhIGNhdGNoLWFsbCwgcmlnaHQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGlmIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCB3ZXJlIGFjY2lkZW50YWxseSAqZXF1YWwqIHRvIGBSVExfR0lHQV9NQUNfTk9ORWAsIHRoZSBjb2RlJ3MgbG9naWMgd291bGQgYmVjb21lIGNvbXBsZXRlbHkgc2tld2VkLiBMZXQgbWUgd2FsayB0aHJvdWdoIG15IG1lbnRhbCBwcm9jZXNzLlxuXG5JZiB0aGV5IHdlcmUgZXF1aXZhbGVudCwgYSBgY2hpcC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBjaGVjayB3b3VsZCAqYWxzbyogYmUgdHJ1ZSBmb3IgdGhlIGBSVExfR0lHQV9NQUNfTk9ORWAgY2FzZS4gVGhhdCBtYWtlcyBzZW5zZSwgaW4gdGhlIGNvbnRleHQgb2YgaXQgYmVpbmcgYSBjYXRjaC1hbGwuXG5cbk5vdywgbGV0J3Mgem9vbSBpbiBvbiBgcnRsX2luaXRfb25lYC4gSSBzZWUgYSBjb3VwbGUgb2YgY3J1Y2lhbCBgaWZgIHN0YXRlbWVudHMuIFRoZSBmaXJzdCBvbmUgY2hlY2tzIGBjaGlwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGFuZCwgaWYgdHJ1ZSwgc2V0cyBgZXh0X3hpZF9zdHJgLiBUaGF0J3MgaW1wb3J0YW50LiBUaGVuIHRoZXJlJ3MgYW5vdGhlciBgaWZgIHRoYXQgY2hlY2tzIGlmIGBjaGlwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19OT05FYC4gSWYgKnRoYXQncyogdHJ1ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgYC1FTk9ERVZgLCBpbmRpY2F0aW5nIGEgZmFpbHVyZS5cblxuSGVyZSdzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcgYW5kIGNvbmNlcm5pbmcuIElmIHRob3NlIHR3byBNQUMgdmVyc2lvbiBjb25zdGFudHMgKndlcmUqIHRoZSBzYW1lLCB0aGUgZmlyc3QgYGlmYCBzdGF0ZW1lbnQgd291bGQgZXhlY3V0ZSwgc2V0dGluZyBzb21ldGhpbmcgdXAuIFRoZW4sIHRoZSBzZWNvbmQgYGlmYCBzdGF0ZW1lbnQsIGJlY2F1c2UgdGhlIHZhbHVlIGlzIHRoZSBzYW1lLCB3b3VsZCAqYWxzbyogZXhlY3V0ZSBhbmQgcmV0dXJuIGAtRU5PREVWYC4gU28sIGl0IHdvdWxkIHJ1biBzb21lIGluaXRpYWxpemF0aW9uIGNvZGUsIGFuZCB0aGVuIGltbWVkaWF0ZWx5IHJldHVybiBhbiBlcnJvci4gVGhhdCBzZWVtcyBsaWtlIHJlYWxseSBiYWQgbG9naWMsIGEgcmFjZSBjb25kaXRpb24gd2l0aCB0aGUgY29kZSB0aHJvd2luZyBhbiBlcnJvciBmb3Igc29tZXRoaW5nIGl0IHdhcyBhdHRlbXB0aW5nIHRvIGhhbmRsZS5cblxuU28sIGxldCBtZSBiYWNrIHVwIGEgbGl0dGxlLiBUaGlzIG1lYW5zIHRoZSBjYXRjaC1hbGwgaW4gYHJ0bF9jaGlwX2luZm9gIHdvdWxkIHNldCBgbWFjX3ZlcnNpb25gIHRvIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpbiB0aGUgY2FzZSBvZiBhIG1hdGNoLiBUaGlzIHNldHMgb2ZmIGFsYXJtIGJlbGxzIGFuZCBuZWVkcyBhIGRlZXBlciBsb29rLlxuXG5Pa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGxvZ2ljIGJldHRlci4gTGV0IG1lIGp1bXAgYmFjayB0byBgcnRsX2luaXRfb25lYCBhZ2Fpbi4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgY29kZSBmbG93IGFuZCBlbnN1cmUgdGhlcmUgaXNuJ3Qgc29tZSB1bmludGVuZGVkIGNvbnNlcXVlbmNlLCBhIGRvdWJsZS1leGVjdXRpb24gb3IgY29uZmxpY3QsIGlmIHRoaXMgZXF1aXZhbGVuY2UgZXhpc3RlZC4gSXQncyBhIGZ1bmRhbWVudGFsIG1pc3VuZGVyc3RhbmRpbmcgb2YgdGhlIHZlcnNpb24gY29uc3RhbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDc1LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDExOjAzOjA5LjQ2ODI1MTE2M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMDUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NjQwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI1NjQwOlxcdFxcdC8qIHVzZSBmaXJzdCBNTUlPIHJlZ2lvbiAqL1xcbjU2NDE6XFx0XFx0cmVnaW9uID0gZmZzKHBjaV9zZWxlY3RfYmFycyhwZGV2LCBJT1JFU09VUkNFX01FTSkpIC0gMTtcXG41NjQyOlxcdFxcdGlmIChyZWdpb24gXFx1MDAzYyAwKVxcbjU2NDM6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgLUVOT0RFViwgXFxcIm5vIE1NSU8gcmVzb3VyY2UgZm91bmRcXFxcblxcXCIpO1xcbjU2NDQ6XFx0XFxuNTY0NTpcXHRcXHR0cC1cXHUwMDNlbW1pb19hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGRldiwgcmVnaW9uLCBLQlVJTERfTU9ETkFNRSk7XFxuNTY0NjpcXHRcXHRpZiAoSVNfRVJSKHRwLVxcdTAwM2VtbWlvX2FkZHIpKVxcbjU2NDc6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgUFRSX0VSUih0cC1cXHUwMDNlbW1pb19hZGRyKSxcXG41NjQ4OlxcdFxcdFxcdFxcdFxcdCAgICAgXFxcImNhbm5vdCByZW1hcCBNTUlPLCBhYm9ydGluZ1xcXFxuXFxcIik7XFxuNTY0OTpcXHRcXG41NjUwOlxcdFxcdHR4Y29uZmlnID0gUlRMX1IzMih0cCwgVHhDb25maWcpO1xcbjU2NTE6XFx0XFx0aWYgKHR4Y29uZmlnID09IH4wVSlcXG41NjUyOlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIC1FSU8sIFxcXCJQQ0kgcmVhZCBmYWlsZWRcXFxcblxcXCIpO1xcbjU2NTM6XFx0XFxuNTY1NDpcXHRcXHR4aWQgPSAodHhjb25maWcgXFx1MDAzZVxcdTAwM2UgMjApIFxcdTAwMjYgMHhmY2Y7XFxuNTY1NTpcXHRcXG41NjU2OlxcdFxcdC8qIElkZW50aWZ5IGNoaXAgYXR0YWNoZWQgdG8gYm9hcmQgKi9cXG41NjU3OlxcdFxcdGNoaXAgPSBydGw4MTY5X2dldF9jaGlwX3ZlcnNpb24oeGlkLCB0cC1cXHUwMDNlc3VwcG9ydHNfZ21paSk7XFxuNTY1ODpcXHRcXG41NjU5OlxcdFxcdGlmIChjaGlwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEKSB7XFxuNTY2MDpcXHRcXHRcXHRleHRfeGlkX3N0ciA9IFxcXCJleHRcXFwiO1xcbjU2NjE6XFx0XFx0XFx0eGlkID0gUlRMX1IzMih0cCwgVFhfQ09ORklHX1YyKTtcXG41NjYyOlxcdFxcdFxcdGNoaXAgPSBydGw4MTY5X2dldF9leHRlbmRlZF9jaGlwX3ZlcnNpb24oeGlkKTtcXG41NjYzOlxcdFxcdH1cXG41NjY0OlxcdFxcdGlmIChjaGlwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfTk9ORSlcXG41NjY1OlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIC1FTk9ERVYsXFxuNTY2NjpcXHRcXHRcXHRcXHRcXHQgICAgIFxcXCJ1bmtub3duIGNoaXAgJXNYSUQgJXgsIGNvbnRhY3QgcjgxNjkgbWFpbnRhaW5lcnMgKHNlZSBNQUlOVEFJTkVSUyBmaWxlKVxcXFxuXFxcIixcXG41NjY3OlxcdFxcdFxcdFxcdFxcdCAgICAgZXh0X3hpZF9zdHIsIHhpZCk7XFxuNTY2ODpcXHRcXHR0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPSBjaGlwLVxcdTAwM2VtYWNfdmVyc2lvbjtcXG41NjY5OlxcdFxcdHRwLVxcdTAwM2Vmd19uYW1lID0gY2hpcC1cXHUwMDNlZndfbmFtZTtcXG41NjcwOlxcdFxcbjU2NzE6XFx0XFx0LyogRGlzYWJsZSBBU1BNIEwxIGFzIHRoYXQgY2F1c2UgcmFuZG9tIGRldmljZSBzdG9wIHdvcmtpbmdcXG41NjcyOlxcdFxcdCAqIHByb2JsZW1zIGFzIHdlbGwgYXMgZnVsbCBzeXN0ZW0gaGFuZ3MgZm9yIHNvbWUgUENJZSBkZXZpY2VzIHVzZXJzLlxcbjU2NzM6XFx0XFx0ICovXFxuNTY3NDpcXHRcXHRpZiAocnRsX2FzcG1faXNfc2FmZSh0cCkpIHtcXG41Njc1OlxcdFxcdFxcdGRldl9pbmZvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJTeXN0ZW0gdmVuZG9yIGZsYWdzIEFTUE0gYXMgc2FmZVxcXFxuXFxcIik7XFxuNTY3NjpcXHRcXHRcXHRyYyA9IDA7XFxuNTY3NzpcXHRcXHR9IGVsc2Uge1xcbjU2Nzg6XFx0XFx0XFx0cmMgPSBwY2lfZGlzYWJsZV9saW5rX3N0YXRlKHBkZXYsIFBDSUVfTElOS19TVEFURV9MMSk7XFxuNTY3OTpcXHRcXHR9XFxuNTY4MDpcXHRcXHR0cC1cXHUwMDNlYXNwbV9tYW5hZ2VhYmxlID0gIXJjO1xcbjU2ODE6XFx0XFxuNTY4MjpcXHRcXHRpZiAocnRsX2lzXzgxMjUodHApKSB7XFxuNTY4MzpcXHRcXHRcXHR1MTYgZGF0YSA9IHI4MTY4X21hY19vY3BfcmVhZCh0cCwgMHhkMDA2KTtcXG41Njg0OlxcdFxcbjU2ODU6XFx0XFx0XFx0aWYgKChkYXRhIFxcdTAwMjYgMHhmZikgPT0gMHgwNylcXG41Njg2OlxcdFxcdFxcdFxcdHRwLVxcdTAwM2VzZnBfbW9kZSA9IHRydWU7XFxuNTY4NzpcXHRcXHR9XFxuNTY4ODpcXHRcXG41Njg5OlxcdFxcdHRwLVxcdTAwM2VkYXNoX3R5cGUgPSBydGxfZ2V0X2Rhc2hfdHlwZSh0cCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDExOjAzOjA5LjQ2ODU4MzIwM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NTg1Nzg4MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBDaGlwIElkZW50aWZpY2F0aW9uIEZsYXcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBydGw4MTY5X2dldF9jaGlwX3ZlcnNpb25gIGZ1bmN0aW9uLCBhbmQgaXQgcmV0dXJucyB0aGlzIGBjaGlwYCBzdHJ1Y3QuIFRoZSBjb3JlIGlzc3VlIHNlZW1zIHRvIGJlIGFyb3VuZCBob3cgdGhlIGNvZGUgaGFuZGxlcyBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAuIElmIHRoZSBgY2hpcC1cdTAwM2VtYWNfdmVyc2lvbmAgaXMgZXF1YWwgdG8gYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgLCBpdCByZWFkcyBgVFhfQ09ORklHX1YyYCBhbmQgZGl2ZXMgaW50byBgcnRsODE2OV9nZXRfZXh0ZW5kZWRfY2hpcF92ZXJzaW9uYC5cblxuVGhlIHByb2JsZW0gaXMgdGhhdCBpZiBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaXMgZXNzZW50aWFsbHkgYSBjYXRjaC1hbGwg4oCTIHNheSwgaXTigJlzIGVxdWl2YWxlbnQgdG8gYFJUTF9HSUdBX01BQ19OT05FYCDigJMgdGhlbiBhbnkgdW5rbm93biBjaGlwLCB3aGljaCBkZWZhdWx0cyB0byBgUlRMX0dJR0FfTUFDX05PTkVgLCB3b3VsZCB0cmlnZ2VyIHRoaXMgZXh0ZW5kZWQgdmVyc2lvbiBjaGVjay4gSXQgd291bGQganVtcCBpbnRvIHRoZSBgaWZgIGJsb2NrLCByZWFkIGBUWF9DT05GSUdfVjJgLCBhbmQgY2FsbCBgcnRsODE2OV9nZXRfZXh0ZW5kZWRfY2hpcF92ZXJzaW9uKHhpZClgLiBJZiB0aGF0IGV4dGVuZGVkIGNoZWNrICphbHNvKiByZXR1cm5zIGBSVExfR0lHQV9NQUNfTk9ORWAsIGl0IGNvcnJlY3RseSBmYWlscyB3aXRoIGAtRU5PREVWYC4gXG5cbkJ1dCBoZXJlJ3MgdGhlIGNhdGNoOiBJZiB0aGUgaW5pdGlhbCBgeGlkYCB3YXMgdW5rbm93biwgaXQgZGVmYXVsdHMgdG8gYFJUTF9HSUdBX01BQ19OT05FYC4gVGhlbiB3ZSByZWFkIGBUWF9DT05GSUdfVjJgLCBjYWxsIHRoZSBleHRlbmRlZCBmdW5jdGlvbi4gSWYgdGhlIGV4dGVuZGVkIGNoaXAgdmVyc2lvbiBoYXBwZW5zIHRvICptYXRjaCogc29tZXRoaW5nLCBzYXkgaWYgdGhlIGZhbGxiYWNrIHJvdXRpbmUgZXJyb25lb3VzbHkgcmV0dXJucyBhIGRlZmluZWQgdmFsdWUsIHdl4oCZZCBpbmNvcnJlY3RseSBpZGVudGlmeSB0aGUgY2hpcCEgVGhpcyBpcyBhIHNlcmlvdXMgcHJvYmxlbS5cblxuSSBoYXZlIGEgc3VzcGljaW9uIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBpcyBhIHJlY2VudCBhZGRpdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGhpc3Rvcnkgb2YgYHI4MTY5LmhgIHRvIGNvbmZpcm0gdGhlIGNvZGUncyByZWNlbnQgaGlzdG9yeSB0byBoZWxwIHRyYWNrIGRvd24gdGhlIHBvdGVudGlhbCBvcmlnaW4gb2YgdGhlIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTIwLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDM6MTguNDI3MTY1NDAyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM3MDI3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaD0xNT1lbnVtIG1hY192ZXJzaW9uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC03Ni1cXHRSVExfR0lHQV9NQUNfVkVSX0xBU1QgPSBSVExfR0lHQV9NQUNfTk9ORSAtIDEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjc3OlxcdFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgPSBSVExfR0lHQV9NQUNfTk9ORSArIDFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtNzgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTMtXFx0LyogZXh0ZW5kZWQgY2hpcCB2ZXJzaW9uKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMTQ6XFx0eyAweDdjZiwgMHg3YzgsIFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01NjAyPXN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NjU5OlxcdGlmIChjaGlwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY2MC1cXHRcXHRleHRfeGlkX3N0ciA9IFxcXCJleHRcXFwiO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzoxOC40NzQ1NDYyMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzY0MjM4MDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlYWx0ZWsgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHNpbXBsZSBvbmUgb24gdGhlIHN1cmZhY2UsIGp1c3QgaW5jcmVtZW50aW5nIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYCBmcm9tIGBSVExfR0lHQV9NQUNfTk9ORWAgdG8gYFJUTF9HSUdBX01BQ19OT05FICsgMWAuIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYXMgYSBidWcgZml4IOKAkyB0aGUgb2xkIGFzc2lnbm1lbnQgbXVzdCBoYXZlIGJlZW4gYW4gZXJyb3IuIEJ1dCBhcyBhIGZ1enppbmcgZXhwZXJ0LCBteSBtaW5kIGp1bXBzIHRvIHRoZSBpbXBhY3QuIElzIHRoaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlPyBBYnNvbHV0ZWx5LCBpZiBgcjgxNjlgIGlzIGV2ZW4gZnV6emFibGUuIFRoYXQncyB0aGUgcmVhbCBxdWVzdGlvbi5cblxuQ2FuIFN5emthbGxlciBldmVuIHJlYWNoIHRoaXMgZHJpdmVyPyBMZXQgbWUgdGhpbmsuLi4gd2UgaGF2ZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCwgd2hpY2ggY2FuIHRyaWdnZXIgUENJIHByb2JlIGZ1bmN0aW9ucy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbjogaXMgYHI4MTY5YCBlbmFibGVkIGluIHRoZSBzdGFuZGFyZCBjb25maWd1cmF0aW9ucyB0aGF0IFN5emthbGxlciB1c2VzPyBJdCdzIGEgUmVhbHRlayBnaWdhYml0IGV0aGVybmV0IGRyaXZlciwgcHJldHR5IGNvbW1vbi4gSSdtIGdvaW5nIHRvIGJldCBpdCdzIHRoZXJlLiBMZXQgbWUgY2hlY2suLi4geWVwLCBgQ09ORklHX1I4MTY5YCBsb29rcyB2ZXJ5IGZhbWlsaWFyLiBHb29kLCBpdCdzIHRoZXJlLiBUaGlzIGRlc2VydmVzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgYXMgZXZlbiBhIHNtYWxsIGJ1ZyBmaXggY291bGQgcmV2ZWFsIG5ldywgZXhwbG9pdGFibGUgY29kZSBwYXRocyBkdXJpbmcgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE3MiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzoyNS44Mzg3ODc4MDZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjMxMzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSODE2OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9NzQ9Y29uZmlnIDgxMzlfT0xEX1JYX1JFU0VUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjg0OmNvbmZpZyBSODE2OVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy04NS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MTY5LzgxNjgvODEwMS84MTI1IGV0aGVybmV0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMDI6Y29uZmlnIFI4MTY5X0xFRFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAzLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIGNvbnRyb2xsaW5nIHRoZSBOSUMgTEVEc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDM6MjUuODg2MDI0MDg0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTc4MTUzMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6XG5cbioqQ2hlY2tpbmcgUjgxNjkgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgdGltZSB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBgUjgxNjlgIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIGBLY29uZmlnYCBmaWxlIHNwZWNpZmljYWxseSBmb3IgdGhhdCBkcml2ZXIuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHN0cmFpZ2h0IHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgUmVhbHRlayBFdGhlcm5ldCBkcml2ZXJzIGFyZSBkZWZpbmVkIGluIHRoZSBrZXJuZWwgc291cmNlLiBCeSBvcGVuaW5nIGFuZCByZWFkaW5nIHRoaXMgZmlsZSwgSSdsbCBiZSBhYmxlIHRvIHNlZSBleGFjdGx5IHdoYXQgb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIG1vZHVsZXMgYFI4MTY5YCByZWxpZXMgdXBvbiwgYW5kIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUuIFRoYXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIG15IGludmVzdGlnYXRpb24gdG8gdW5kZXJzdGFuZCBpdHMgaW50ZWdyYXRpb24gd2l0aCB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSBhbmQgaXRzIHJlcXVpcmVtZW50cy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGluZm9ybWF0aW9uIG9uIGRlcGVuZGVuY2llcyBsaWtlIG90aGVyIG5ldHdvcmsgZHJpdmVycywgc3BlY2lmaWMgaGFyZHdhcmUgc3VwcG9ydCwgb3IgcG90ZW50aWFsbHkgb3RoZXIga2VybmVsIGZlYXR1cmVzIGl0IG5lZWRzIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gVGhpcyBpcyB0aGUgZmlyc3QgbG9naWNhbCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODU5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDM6MjkuNzQzODQyNDQ5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MDpcXHRcXHQgIFJYLXJlc2V0IG1ldGhvZCBzaG91bGQgYmUgYWRlcXVhdGUgZm9yIGFsbCBib2FyZHMuICBCdXQgaWYgeW91XFxuICA4MTpcXHRcXHQgIGV4cGVyaWVuY2UgcHJvYmxlbXMsIHlvdSBjYW4gZW5hYmxlIHRoaXMgb3B0aW9uIHRvIHJlc3RvcmUgdGhlXFxuICA4MjpcXHRcXHQgIG9sZCBSWC1yZXNldCBiZWhhdmlvci4gIElmIHVuc3VyZSwgc2F5IE4uXFxuICA4MzpcXHRcXG4gIDg0OlxcdGNvbmZpZyBSODE2OVxcbiAgODU6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODE2OS84MTY4LzgxMDEvODEyNSBldGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgODY6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDg3OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDg4OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgODk6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAgOTA6XFx0XFx0c2VsZWN0IFJFQUxURUtfUEhZXFxuICA5MTpcXHRcXHRoZWxwXFxuICA5MjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBSZWFsdGVrIEV0aGVybmV0IGFkYXB0ZXIgYmVsb25naW5nIHRvXFxuICA5MzpcXHRcXHQgIHRoZSBmb2xsb3dpbmcgZmFtaWxpZXM6XFxuICA5NDpcXHRcXHQgIFJUTDgxNjkgR2lnYWJpdCBFdGhlcm5ldFxcbiAgOTU6XFx0XFx0ICBSVEw4MTY4IEdpZ2FiaXQgRXRoZXJuZXRcXG4gIDk2OlxcdFxcdCAgUlRMODEwMSBGYXN0IEV0aGVybmV0XFxuICA5NzpcXHRcXHQgIFJUTDgxMjUgMi41R0JpdCBFdGhlcm5ldFxcbiAgOTg6XFx0XFxuICA5OTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDM6MjkuNzQzOTA3Mzk5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNjA0Nzk0NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQQ0kgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gdGhpcyBkZWZpbml0ZWx5IGhpbmdlcyBvbiBgUENJYC4gVGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0gaGVyZSBpcyBgQ09ORklHX1I4MTY5YCwgdGhhdCdzIG91ciBzdGFydGluZyBwb2ludC4gQ29uc2lkZXJpbmcgdGhpcyBpcyBhIFBDSSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24gZml4LCBmdXp6aW5nIHNlZW1zIGxpa2UgYSB3b3J0aHdoaWxlIGVuZGVhdm9yLiBUaGUgYWN0dWFsIHByb2JlIGZ1bmN0aW9uIHdlJ3JlIGludGVyZXN0ZWQgaW4gaXMgYHJ0bF9pbml0X29uZWAuIE5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUgd2UndmUgaWRlbnRpZmllZCB0aGUgcmlnaHQgc3BvdCwgYW5kIHRoYXQgd2UncmUgbm90IG1pc3Npbmcgb3RoZXIgaW1wb3J0YW50IGZ1bmN0aW9ucyBpbiB0aGlzIGFyZWEgdGhhdCBtaWdodCBiZSB3b3J0aCBzaW1pbGFyIGF0dGVudGlvbi4gVGhlcmUgbWF5IGJlIGFkamFjZW50IHBvaW50cyBmb3IgdXMgdG8gZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDQyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzozNC44MDQzODk2OTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MjU1MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bF9pbml0X29uZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xOTQ1PXN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9jb3VudGVyX29mZnNldHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xOTU4LVxcdCAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTk1OTpcXHQgKiAoKikgV2UgY2FuJ3QgY2FsbCBydGw4MTY5X2luaXRfY291bnRlcl9vZmZzZXRzIGZyb20gcnRsX2luaXRfb25lXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTk2MC1cXHQgKiBmb3IgdGhlIHJlYXNvbiBzdGF0ZWQgaW4gcnRsODE2OV91cGRhdGVfY291bnRlcnM7IENtZFJ4RW5iIGlzIG9ubHlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTU1OTM9c3RhdGljIGJvb2wgcnRsX2FzcG1faXNfc2FmZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU2MDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTYwMjpzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NjAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTU4MjY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ0bDgxNjlfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU4MjgtXFx0LmlkX3RhYmxlXFx0PSBydGw4MTY5X3BjaV90YmwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTgyOTpcXHQucHJvYmVcXHRcXHQ9IHJ0bF9pbml0X29uZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01ODMwLVxcdC5yZW1vdmVcXHRcXHQ9IHJ0bF9yZW1vdmVfb25lLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzozNC44NTM2NDkyOTVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcyOTMxMDQ3ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgU3VidGxlIEJ1ZyBpbiB0aGUgYHJ0bF9pbml0X29uZWAgUHJvYmUgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSB0aGUgcHJvYmxlbSBqdW1wcyBvdXQgYXQgbWUuIFRoZSBjb3JlIGlzc3VlIGlzIHRoZSB2YWx1ZSBhc3NpZ25tZW50OiBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgYW5kIGBSVExfR0lHQV9NQUNfTk9ORWAgYXJlIGJlaW5nIHRyZWF0ZWQgYXMgdGhlIHNhbWUsIHdoaWNoIGlzIGEgYmlnIHJlZCBmbGFnIGluIHRoaXMgY29udGV4dC4gTGV0J3MgYnJlYWsgaXQgZG93bjpcblxuVGhlIHByb2JlIGZ1bmN0aW9uLCBgcnRsX2luaXRfb25lYCwgaXMgdGhlIGVudHJ5IHBvaW50LiBUaGUgcGF0Y2ggYWltcyB0byBmaXggYSBjb25kaXRpb24gd2hlcmUgdGhlc2UgdHdvIGNvbnN0YW50cyBhcmUgaWRlbnRpY2FsLiBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZW4gdGhlIGNhdGNoLWFsbCBlbnRyeSBpbiBgcnRsX2NoaXBfaW5mb2AgZW5kcyB1cCBhc3NpZ25pbmcgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkIGBSVExfR0lHQV9NQUNfTk9ORWAuIEl0IGJlY29tZXMgYSBzb3VyY2Ugb2YgbWlzaWRlbnRpZmljYXRpb24uXG5cblRoaXMgbWVhbnMgdGhlIGNhdGNoLWFsbCBlbnRyeTpcbmBgYGNcbi8qIENhdGNoLWFsbCAqL1xueyAweDAwMCwgMHgwMDAsXHRSVExfR0lHQV9NQUNfTk9ORSB9XG5gYGBcbmlzIGVmZmVjdGl2ZWx5OlxuYGBgY1xuLyogQ2F0Y2gtYWxsICovXG57IDB4MDAwLCAweDAwMCwgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB9XG5gYGBcblxuQW5kIHNpbWlsYXJseSwgdGhlIGludGVuZGVkIGV4dGVuZGVkIGVudHJ5OlxuYGBgY1xuLyogZXh0ZW5kZWQgY2hpcCB2ZXJzaW9uKi9cbnsgMHg3Y2YsIDB4N2M4LCBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEIH0sXG5gYGBcbmlzIGluc3RlYWQgdGhpczpcbmBgYGNcbi8qIGV4dGVuZGVkIGNoaXAgdmVyc2lvbiovXG57IDB4N2NmLCAweDdjOCwgUlRMX0dJR0FfTUFDX05PTkUgfSxcbmBgYFxuXG5Db25zZXF1ZW50bHksIGlmIGEgY2hpcCBoYXBwZW5zIHRvIG1hdGNoIHRoZSBleHRlbmRlZCBlbnRyeSwgaXQncyB3cm9uZ2x5IGdpdmVuIGBSVExfR0lHQV9NQUNfTk9ORWAuXG5cblRoaXMgY3JlYXRlcyBhIGNoYWluIHJlYWN0aW9uLiAgVGhlIGNvZGUgdGhlbiBjaGVja3MgYGlmIChjaGlwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQpYC4gU2luY2UgdGhlc2UgdHdvIGNvbnN0YW50cyBhcmUgZXF1YWwsIHRoYXQgY29uZGl0aW9uIG5vdyBiZWNvbWVzIHRydWUsIGV2ZW4gZm9yIGEgbm9uLWV4dGVuZGVkIGNoaXAuIEFzIGEgcmVzdWx0IGl0IHJlYWRzIGBUWF9DT05GSUdfVjJgIGFuZCB0cmlnZ2VycyBgcnRsODE2OV9nZXRfZXh0ZW5kZWRfY2hpcF92ZXJzaW9uYC5cblxuSWYgdGhlIGNoaXAgZG9lc24ndCBtYXRjaCB0aGUgZXh0ZW5kZWQgZW50cnksIGl0IGhpdHMgdGhlIGNhdGNoLWFsbCwgYW5kIGlzIGFzc2lnbmVkIHRoZSB2YWx1ZSB0aGF0IGlzIHVzZWQgaW4gdGhlIGBSVExfR0lHQV9NQUNfTk9ORWAgZW50cnkuICBgUlRMX0dJR0FfTUFDX05PTkVgIGlzIHRoZSBzYW1lIGFzIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYC4gIFRoZW4gdGhlIHNhbWUgY29uZGl0aW9uLCBgaWYgKGNoaXAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRClgIGlzIG5vdyB0cnVlISBUaGlzIGxlYWRzIHRoZSBwcm9iZSB0byBpbmNvcnJlY3RseSBjYWxsIGBydGw4MTY5X2dldF9leHRlbmRlZF9jaGlwX3ZlcnNpb25gIGFnYWluLCBldmVuIGZvciB0aGUgXCJ1bmtub3duXCIgY2hpcHMuXG5cblRoZSBwcm9ibGVtIGVzY2FsYXRlcy4gSWYgYHJ0bDgxNjlfZ2V0X2V4dGVuZGVkX2NoaXBfdmVyc2lvbmAgcmV0dXJucyBgUlRMX0dJR0FfTUFDX05PTkVgIChiZWNhdXNlIGl0IGRvZXNuJ3QgcmVjb2duaXplIHRoZSBleHRlbmRlZCB2ZXJzaW9uKSwgdGhlbiBgaWYgKGNoaXAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX05PTkUpYCBiZWNvbWVzIHRydWUsIGxlYWRpbmcgdG8gYSBgLUVOT0RFVmAgZXJyb3IuIEJ1dCwgdGhlIHJlYWwga2lja2VyIGlzIGlmIHRoZSBleHRlbmRlZCB2ZXJzaW9uICpkb2VzKiBtYXRjaCBzb21ldGhpbmcsIHRoZW4gdGhlIGNvZGUgd2lsbCBlcnJvbmVvdXNseSBjbGFzc2lmeSBhbiB1bmtub3duIGNoaXAgYXMgYW4gXCJleHRlbmRlZFwiIGNoaXAuIFRoYXQncyBhIHNlcmlvdXMgZnVuY3Rpb25hbCBidWcgdGhhdCBoYXMgdG8gYmUgZml4ZWQuXG5cbkkgYW0gc2V0dGluZyBgV29ydGhGdXp6aW5nPXRydWVgIGJlY2F1c2UgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIGBydGxfaW5pdF9vbmVgIGZ1bmN0aW9uIGlzIHRoZSBwbGFjZSB0byBmb2N1cyBvbiwgYW5kIEknbGwga2VlcCB0aGUgYFI4MTY5YCBjb25maWcgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxODcsIk91dHB1dFRva2VucyI6MTQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDExOjAzOjUyLjE0Njc1NjEwNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MjM5NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSODE2OVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bF9pbml0X29uZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGVudW0gdmFsdWUgY29sbGlzaW9uIHdoZXJlIFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgd2FzIGltcGxpY2l0bHkgZXF1YWwgdG8gUlRMX0dJR0FfTUFDX05PTkUuIFRoaXMgY2F1c2VkIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiAocnRsX2luaXRfb25lKSB0byBtaXNpZGVudGlmeSB1bmtub3duIGNoaXBzIGFzIGV4dGVuZGVkIGNoaXBzLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluY29ycmVjdCBpbml0aWFsaXphdGlvbiBvciBjcmFzaGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBQQ0kgZHJpdmVyIHByb2JlIHBhdGggdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgc3l6a2FsbGVyJ3Mgc3l6X3BjaV9kZXZpY2VfYWRkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlI4MTY5XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRsX2luaXRfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gZW51bSB2YWx1ZSBjb2xsaXNpb24gd2hlcmUgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRCB3YXMgaW1wbGljaXRseSBlcXVhbCB0byBSVExfR0lHQV9NQUNfTk9ORS4gVGhpcyBjYXVzZWQgdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIChydGxfaW5pdF9vbmUpIHRvIG1pc2lkZW50aWZ5IHVua25vd24gY2hpcHMgYXMgZXh0ZW5kZWQgY2hpcHMsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gaW5jb3JyZWN0IGluaXRpYWxpemF0aW9uIG9yIGNyYXNoZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFBDSSBkcml2ZXIgcHJvYmUgcGF0aCB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBzeXprYWxsZXIncyBzeXpfcGNpX2RldmljZV9hZGQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDExOjAzOjUyLjIyMzAwOTcyMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0OTE0NzAyODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzo1Mi4yMjM0ODE4NDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTI0OTA5OTIwNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGVudW0gdmFsdWUgY29sbGlzaW9uIGluIGBlbnVtIG1hY192ZXJzaW9uYCB3aGVyZSBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaW1wbGljaXRseSBoYWQgdGhlIHNhbWUgdmFsdWUgYXMgYFJUTF9HSUdBX01BQ19OT05FYC4gVGhpcyBpcyBhIGxvZ2ljIGJ1ZyBhZmZlY3RpbmcgaGFyZHdhcmUgaWRlbnRpZmljYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGZvciBzcGVjaWZpYyBSZWFsdGVrIG5ldHdvcmsgY2FyZHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBTdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTiBhcmUgc3VmZmljaWVudCBmb3IgdGhpcyBjaGFuZ2UuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTdmNTM1ZWVlMmU3YWRiZTBhZjAxMzU2NjM2NWNmMmY1YmQ4ODdkZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMTE6MDI6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmhcbmluZGV4IDBiOWMxZDRlYjQ4YmEuLmZiNzcyY2MwNDMxMDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaFxuQEAgLTc0LDcgKzc0LDcgQEAgZW51bSBtYWNfdmVyc2lvbiB7XG4gXHRSVExfR0lHQV9NQUNfVkVSXzgwLFxuIFx0UlRMX0dJR0FfTUFDX05PTkUsXG4gXHRSVExfR0lHQV9NQUNfVkVSX0xBU1QgPSBSVExfR0lHQV9NQUNfTk9ORSAtIDEsXG4tXHRSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEXG4rXHRSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEID0gUlRMX0dJR0FfTUFDX05PTkUgKyAxXG4gfTtcbiBcbiBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDM6NTIuMjIzNDgyNzAyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyMjMxMjM2NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgUmVhbHRlayByODE2OSBkcml2ZXIsIGFuZCBpdCdzIHR3ZWFraW5nIHRoZSBgbWFjX3ZlcnNpb25gIGVudW0gaW4gYHI4MTY5LmhgLiBTcGVjaWZpY2FsbHksIGl0J3MgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEYC4gSW5pdGlhbGx5LCBpdCB3YXMgYmVpbmcgYXNzaWduZWQgaW1wbGljaXRseSwgYW5kIHRoYXQncyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBMZXQgbWUgd2FsayB0aHJvdWdoIHRoaXMuLi5cblxuQmVmb3JlIHRoZSBwYXRjaCwgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGltcGxpY2l0bHkgYXNzdW1lZCB0aGUgbmV4dCB2YWx1ZS4gTm93LCB0aGUgZW51bSBhcyBpdCBzdGFuZHMgaXMgZGVmaW5lZCBhczpcblxuYGBgY1xuZW51bSBtYWNfdmVyc2lvbiB7XG4gICAgLi4uXG5cdFJUTF9HSUdBX01BQ19WRVJfODAsXG5cdFJUTF9HSUdBX01BQ19OT05FLFxuXHRSVExfR0lHQV9NQUNfVkVSX0xBU1QgPSBSVExfR0lHQV9NQUNfTk9ORSAtIDEsXG5cdFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURcbn07XG5gYGBcblxuU28sIGBSVExfR0lHQV9NQUNfVkVSX0xBU1RgIGlzIGV4cGxpY2l0bHkgc2V0IHRvIGBSVExfR0lHQV9NQUNfTk9ORSAtIDFgLiBUaGlzIG1lYW5zIHRoYXQgYmVmb3JlIHRoZSBwYXRjaCwgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIHdhcyBpbXBsaWNpdGx5ICplcXVhbCogdG8gYFJUTF9HSUdBX01BQ19OT05FYCEgVGhhdCdzIGEgZGVmaW5pdGUgY29sbGlzaW9uLiBUaGUgaW1wbGljaXQgaW5jcmVtZW50IG1hZGUgaXQgZXF1YWwgdG8gdGhlIGV4cGxpY2l0bHkgZGVjbGFyZWQgYFJUTF9HSUdBX01BQ19OT05FYC5cblxuVGhlIHBhdGNoIGZpeGVzIHRoaXMgYnkgbWFraW5nIGBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEID0gUlRMX0dJR0FfTUFDX05PTkUgKyAxYC4gVGhpcyByZXNvbHZlcyB0aGUgdmFsdWUgY2xhc2guXG5cblRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGVudW0gdmFsdWUgYnVnLCBJIGRvbid0IHNlZSBhbnkgaW1tZWRpYXRlIGNvbmNlcm5zIHJlZ2FyZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXQncyBqdXN0IGEgbWF0dGVyIG9mIGVuc3VyaW5nIGRpc3RpbmN0IHZhbHVlcy4gTm93LCBJIG5lZWQgdG8gY2hlY2sgd2hlcmUgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGlzIGFjdHVhbGx5IHVzZWQgaW4gdGhlIGRyaXZlciB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzo1OS40NDY2MDk3MjJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTczMDYxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaD0xNT1lbnVtIG1hY192ZXJzaW9uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC03Ni1cXHRSVExfR0lHQV9NQUNfVkVSX0xBU1QgPSBSVExfR0lHQV9NQUNfTk9ORSAtIDEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjc3OlxcdFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgPSBSVExfR0lHQV9NQUNfTk9ORSArIDFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtNzgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTMtXFx0LyogZXh0ZW5kZWQgY2hpcCB2ZXJzaW9uKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMTQ6XFx0eyAweDdjZiwgMHg3YzgsIFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERUQgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01NjAyPXN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NjU5OlxcdGlmIChjaGlwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSX0VYVEVOREVEKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY2MC1cXHRcXHRleHRfeGlkX3N0ciA9IFxcXCJleHRcXFwiO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxMTowMzo1OS42NDgzNTQzNzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA2NjA4OTgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEVudW0gQ29sbGlzaW9uIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gV2UgaGF2ZSBhbiBlbnVtIGNvbGxpc2lvbiBpc3N1ZS4gU3BlY2lmaWNhbGx5LCBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgd2FzLCBmb3Igc29tZSByZWFzb24sIGdldHRpbmcgdGhlIHNhbWUgdmFsdWUgYXMgYFJUTF9HSUdBX01BQ19OT05FYC4gVGhpcyBpcyBhIGNsYXNzaWMgbG9naWMgZXJyb3IsIG5vdGhpbmcgdGhhdCBoaW50cyBhdCBtZW1vcnkgY29ycnVwdGlvbiBvciB1bmluaXRpYWxpemVkIG1lbW9yeSB3b2VzLiBJdCBtZWFucyB0aGF0IGRlcGVuZGluZyBvbiB0aGUgY29udGV4dCwgdGhlIGNvZGUgd2FzIG1pc2ludGVycHJldGluZyB0aGUgaGFyZHdhcmUgdmVyc2lvbi4gSWYgYGNoaXAtXHUwMDNlbWFjX3ZlcnNpb25gIGhlbGQgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgLCBpdCB3YXMgc29tZXRpbWVzIGJlaW5nIHRyZWF0ZWQgYXMgYFJUTF9HSUdBX01BQ19OT05FYCwgYW5kIHZpY2UgdmVyc2EuIENsZWFybHkgYSBidWcsIGJ1dCBub3QgYSBtZW1vcnkgc2FmZXR5IG9uZS4gSSdtIGdvaW5nIHRvIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYmVjYXVzZSBpdCdzIG5vdCBhcHBsaWNhYmxlIGhlcmUuIFRoaXMgaXMganVzdCBhIGhhcmR3YXJlIGlkZW50aWZpY2F0aW9uIGxvZ2ljIGJ1ZywgcmVxdWlyaW5nIGEgc2ltcGxlIGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ0OSwiT3V0cHV0VG9rZW5zIjoxMzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTE6MDQ6MDQuNzE0NDQ3Njc0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBlbnVtIHZhbHVlIGNvbGxpc2lvbiBpbiBgZW51bSBtYWNfdmVyc2lvbmAgd2hlcmUgYFJUTF9HSUdBX01BQ19WRVJfRVhURU5ERURgIGltcGxpY2l0bHkgaGFkIHRoZSBzYW1lIHZhbHVlIGFzIGBSVExfR0lHQV9NQUNfTk9ORWAuIFRoaXMgaXMgYSBsb2dpYyBidWcgYWZmZWN0aW5nIGhhcmR3YXJlIGlkZW50aWZpY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBmb3Igc3BlY2lmaWMgUmVhbHRlayBuZXR3b3JrIGNhcmRzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gU3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGVudW0gdmFsdWUgY29sbGlzaW9uIGluIGBlbnVtIG1hY192ZXJzaW9uYCB3aGVyZSBgUlRMX0dJR0FfTUFDX1ZFUl9FWFRFTkRFRGAgaW1wbGljaXRseSBoYWQgdGhlIHNhbWUgdmFsdWUgYXMgYFJUTF9HSUdBX01BQ19OT05FYC4gVGhpcyBpcyBhIGxvZ2ljIGJ1ZyBhZmZlY3RpbmcgaGFyZHdhcmUgaWRlbnRpZmljYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGZvciBzcGVjaWZpYyBSZWFsdGVrIG5ldHdvcmsgY2FyZHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBTdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTiBhcmUgc3VmZmljaWVudCBmb3IgdGhpcyBjaGFuZ2UuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dsn4[1] Phase: Succeeded StartedAt: 2026-08-08 11:04:16 +0000 UTC FinishedAt: 2026-08-08 11:04:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-08 11:04:16 +0000 UTC FinishedAt: 2026-08-08 11:04:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2] Phase: Succeeded StartedAt: 2026-08-08 11:04:16 +0000 UTC FinishedAt: 2026-08-08 11:44:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-08 11:04:16 +0000 UTC FinishedAt: 2026-08-08 11:44:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-08 11:04:16 +0000 UTC FinishedAt: 2026-08-08 11:04:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-08 11:04:16 +0000 UTC FinishedAt: 2026-08-08 11:04:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4dsn4/series-workflow4dsn4-convert-artifact-1991724194/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-08 11:04:26 +0000 UTC FinishedAt: 2026-08-08 11:22:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-08 11:04:26 +0000 UTC FinishedAt: 2026-08-08 11:22:22 +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:*c4ed15c1-d89a-4b95-9a5e-9cb909a9fffe,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-workflow4dsn4/series-workflow4dsn4-convert-artifact-1991724194/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": "e5b605ea-bcd1-498a-8b20-490a3f2280a7", "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-workflow4dsn4/series-workflow4dsn4-build-action-582274656/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-08 11:04:26 +0000 UTC FinishedAt: 2026-08-08 11:22:12 +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:*c4ed15c1-d89a-4b95-9a5e-9cb909a9fffe,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-workflow4dsn4/series-workflow4dsn4-convert-artifact-1991724194/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": "e5b605ea-bcd1-498a-8b20-490a3f2280a7", "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-workflow4dsn4/series-workflow4dsn4-build-action-582274656/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-08 11:22:22 +0000 UTC FinishedAt: 2026-08-08 11:22:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-08 11:22:22 +0000 UTC FinishedAt: 2026-08-08 11:22:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-08 11:22:22 +0000 UTC FinishedAt: 2026-08-08 11:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-08 11:22:22 +0000 UTC FinishedAt: 2026-08-08 11:22:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4dsn4/series-workflow4dsn4-convert-artifact-406541309/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-08 11:22:32 +0000 UTC FinishedAt: 2026-08-08 11:24:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-08 11:22:32 +0000 UTC FinishedAt: 2026-08-08 11:24:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e5b605ea-bcd1-498a-8b20-490a3f2280a7,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-workflow4dsn4/series-workflow4dsn4-build-action-582274656/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-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-08 11:24:36 +0000 UTC FinishedAt: 2026-08-08 11:24:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-08 11:24:36 +0000 UTC FinishedAt: 2026-08-08 11:24:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-08 11:24:36 +0000 UTC FinishedAt: 2026-08-08 11:40:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-08 11:24:36 +0000 UTC FinishedAt: 2026-08-08 11:40: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:*c4ed15c1-d89a-4b95-9a5e-9cb909a9fffe,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-workflow4dsn4/series-workflow4dsn4-convert-artifact-406541309/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": "f1703a51-40db-41fb-aa5e-1d3d1c3268bf", "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-workflow4dsn4/series-workflow4dsn4-build-action-1622873177/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-08 11:24:36 +0000 UTC FinishedAt: 2026-08-08 11:40: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:*c4ed15c1-d89a-4b95-9a5e-9cb909a9fffe,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-workflow4dsn4/series-workflow4dsn4-convert-artifact-406541309/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": "f1703a51-40db-41fb-aa5e-1d3d1c3268bf", "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-workflow4dsn4/series-workflow4dsn4-build-action-1622873177/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-08 11:40:51 +0000 UTC FinishedAt: 2026-08-08 11:40:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-08 11:40:51 +0000 UTC FinishedAt: 2026-08-08 11:40:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-08 11:40:51 +0000 UTC FinishedAt: 2026-08-08 11:42:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-08 11:40:51 +0000 UTC FinishedAt: 2026-08-08 11:42:35 +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:*f1703a51-40db-41fb-aa5e-1d3d1c3268bf,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-workflow4dsn4/series-workflow4dsn4-build-action-1622873177/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-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-08 11:42:45 +0000 UTC FinishedAt: 2026-08-08 11:44:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-08 11:42:45 +0000 UTC FinishedAt: 2026-08-08 11:44:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"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:*e5b605ea-bcd1-498a-8b20-490a3f2280a7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f1703a51-40db-41fb-aa5e-1d3d1c3268bf,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-workflow4dsn4/series-workflow4dsn4-build-action-582274656/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-workflow4dsn4/series-workflow4dsn4-build-action-1622873177/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-08 11:42:45 +0000 UTC FinishedAt: 2026-08-08 11:42:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-08 11:42:45 +0000 UTC FinishedAt: 2026-08-08 11:42:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"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-workflow4dsn4/series-workflow4dsn4-convert-artifact-1679564418/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-08 11:42:45 +0000 UTC FinishedAt: 2026-08-08 11:42:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-08 11:42:45 +0000 UTC FinishedAt: 2026-08-08 11:42:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-08 11:42:45 +0000 UTC FinishedAt: 2026-08-08 11:42:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-08 11:42:55 +0000 UTC FinishedAt: 2026-08-08 11:44:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dsn4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl_init_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"0bc3718d-1497-4954-9891-e6cc7875d741","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-08 11:42:55 +0000 UTC FinishedAt: 2026-08-08 11:43:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e5b605ea-bcd1-498a-8b20-490a3f2280a7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f1703a51-40db-41fb-aa5e-1d3d1c3268bf,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-workflow4dsn4/series-workflow4dsn4-build-action-582274656/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-workflow4dsn4/series-workflow4dsn4-build-action-1622873177/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-workflow4dsn4/series-workflow4dsn4-convert-artifact-1679564418/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,}