Name: series-workflowl7rfz Phase: Succeeded StartedAt: 2026-08-25 04:50:36 +0000 UTC FinishedAt: 2026-08-25 09:16:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[0] Phase: Succeeded StartedAt: 2026-08-25 04:50:36 +0000 UTC FinishedAt: 2026-08-25 05:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[0].run-triage Phase: Succeeded StartedAt: 2026-08-25 04:50:36 +0000 UTC FinishedAt: 2026-08-25 05:36:49 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "77e03fde-c02b-4cc0-a1bb-2e617ea74803" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_adjust_monitor_flags", "ieee80211_do_open", "ieee80211_sdata_stop" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9kb19vcGVuJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9zZGF0YV9zdG9wJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGluIGBpZWVlODAyMTFfZG9fc3RvcGAgYnkgbW92aW5nIHRoZSBjYWxsIHRvIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NgIG91dHNpZGUgb2YgYSBjb25kaXRpb25hbCBibG9jay4gVGhpcyBpcyBhIGxvZ2ljIGZpeCByZWxhdGVkIHRvIGludGVyZmFjZSBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBtb25pdG9yIGZsYWdzIGFkanVzdG1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIHJlc3VsdGluZyBmcm9tIGluY29ycmVjdCBzdGF0ZSBtYW5hZ2VtZW50IChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBvciBvdGhlciBidWcgZGV0ZWN0b3JzLiBBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBtYWM4MDIxMSB3aGVyZSBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSlgIHdhcyBjb25kaXRpb25hbGx5IHNraXBwZWQgZHVyaW5nIG1vbml0b3IgaW50ZXJmYWNlIHRlYXJkb3duLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtYWM4MDIxMSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTNlNDZlYjJiOTgzZTlmYjZjZDQzNmEwNzVjMmY0ZDEzNzU2MTQyMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDI1IDA1OjM0OjQ4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZmFjZS5jIGIvbmV0L21hYzgwMjExL2lmYWNlLmNcbmluZGV4IDQzNDYwYTcwNWE2YmQuLjZmYzAxZDg1ZWVhOWIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvaWZhY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2lmYWNlLmNcbkBAIC02MjksOSAmIzQzOzYyOSw5IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2RvXG4gXHRcdFx0XHRsb2NhbC1cdTAwM2Vody5jb25mLmZsYWdzIFx1MDAyNj0gfklFRUU4MDIxMV9DT05GX01PTklUT1I7XG4gXHRcdFx0XHRod19yZWNvbmZfZmxhZ3MgfD0gSUVFRTgwMjExX0NPTkZfQ0hBTkdFX01PTklUT1I7XG4gXHRcdFx0fVxuLVxuLVx0XHRcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xuIFx0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9OQU46XG4gXHRcdC8qIENoZWNrIGlmIGFueSBvcGVuIE5BTl9EQVRBIGludGVyZmFjZXMgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3MmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2RvX29wZW4mIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3NkYXRhX3N0b3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbWFjODAyMTEgd2hlcmUgYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpYCB3YXMgY29uZGl0aW9uYWxseSBza2lwcGVkIGR1cmluZyBtb25pdG9yIGludGVyZmFjZSB0ZWFyZG93bi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWFjODAyMTEgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYG1hYzgwMjExX2h3c2ltYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEzZTQ2ZWIyYjk4M2U5ZmI2Y2Q0MzZhMDc1YzJmNGQxMzc1NjE0MjIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAyNSAwNTozNDo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZmFjZS5jIGIvbmV0L21hYzgwMjExL2lmYWNlLmMKaW5kZXggNDM0NjBhNzA1YTZiZC4uNmZjMDFkODVlZWE5YiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2lmYWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2lmYWNlLmMKQEAgLTYyOSw5ICYjNDM7NjI5LDkgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG8KIAkJCQlsb2NhbC0mZ3Q7aHcuY29uZi5mbGFncyAmYW1wOz0gfklFRUU4MDIxMV9DT05GX01PTklUT1I7CiAJCQkJaHdfcmVjb25mX2ZsYWdzIHw9IElFRUU4MDIxMV9DT05GX0NIQU5HRV9NT05JVE9SOwogCQkJfQotCi0JCQlpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKTsKIAkJfQomIzQzOwomIzQzOwkJaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7CiAJCWJyZWFrOwogCWNhc2UgTkw4MDIxMV9JRlRZUEVfTkFOOgogCQkvKiBDaGVjayBpZiBhbnkgb3BlbiBOQU5fREFUQSBpbnRlcmZhY2VzICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzIKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbmV0L21hYzgwMjExL2lmYWNlLmNgIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9tYWM4MDIxMS9pZmFjZS5jYCwgYW5kIHNwZWNpZmljYWxseSBgaWVlZTgwMjExX2RvX3N0b3BgLiBSaWdodCBvZmYgdGhlIGJhdCwgdGhhdCBzdWdnZXN0cyBzb21ldGhpbmcgcmVsYXRlZCB0byBpbnRlcmZhY2Ugc3RvcHBpbmcsIHdoaWNoIGlzIHByZXR0eSBmdW5kYW1lbnRhbC4gVGhlIG1vZGlmaWNhdGlvbiBpcyBmb2N1c2VkIG9uIG1vdmluZyB0aGUgYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFnc2AgY2FsbC4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhhdCBpdCYjMzk7cyAqbW92ZWQgb3V0KiBvZiB0aGUgaW5uZXIgYGlmYCBibG9jay4gTGV0IG1lIHB1bGwgdXAgdGhhdCBmdW5jdGlvbiBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIGBpZWVlODAyMTFfZG9fc3RvcGAgaXRzZWxmIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgdW5kZXJzdGFuZCB0aGUgb3JpZ2luYWwgcGxhY2VtZW50IG9mIHRoYXQgYGFkanVzdF9tb25pdG9yX2ZsYWdzYCBjYWxsIGFuZCBob3cgdGhpcyBjaGFuZ2UgbWlnaHQgaW1wYWN0IGJlaGF2aW9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyB3aXRoaW4gdGhhdCBpbm5lciBgaWZgIGJsb2NrIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2UuIElzIHRoZXJlIGEgcmFjZSBjb25kaXRpb24gb3IgYSBzcGVjaWZpYyBlZGdlIGNhc2UgdGhleSBhcmUgdHJ5aW5nIHRvIGZpeD8gSSBuZWVkIHRvIGFuYWx5emUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZ3Jhc3AgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIHNoaWZ0LiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgdGhlIGZsYWdzIGFuZCB1bmRlcnN0YW5kIHRoZWlyIGNvbnRleHQgaW4gdGhlIG1vbml0b3IgbW9kZSBzZXR0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9kb19zdG9wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2lmYWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2lmYWNlLmM9NDYxPXN0YXRpYyBpbnQgaWVlZTgwMjExX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00NzgtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo0Nzk6c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTQ4MC17XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9ODQ1PXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NjctXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo4Njg6XHRpZWVlODAyMTFfZG9fc3RvcChzZGF0YSwgdHJ1ZSk7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NjktXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTk4MD1zdGF0aWMgaW50IGllZWU4MDIxMV9ydW50aW1lX2NoYW5nZV9pZnR5cGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjA0NC1cdC8qIGRvX3N0b3Agd2lsbCBzeW5jaHJvbml6ZV9yY3UoKSBmaXJzdCB0aGluZyAqL1xubmV0L21hYzgwMjExL2lmYWNlLmM6MjA0NTpcdGllZWU4MDIxMV9kb19zdG9wKHNkYXRhLCBmYWxzZSk7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMDQ2LVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTI0NDA9dm9pZCBpZWVlODAyMTFfc2RhdGFfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yNDQzLVx0XHRyZXR1cm47XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyNDQ0Olx0aWVlZTgwMjExX2RvX3N0b3Aoc2RhdGEsIHRydWUpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtMjQ0NS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyMwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIGBpZWVlODAyMTFfZG9fc3RvcGAgTW9kaWZpY2F0aW9uKioKCkFscmlnaHQsIHNvIGEgcGF0Y2ggaGFzIGxhbmRlZCB0aGF0JiMzOTtzIHR3ZWFraW5nIHRoZSBoYW5kbGluZyBvZiBgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUmAgKG9yIHNvbWV0aGluZyBhbmFsb2dvdXMpIHdpdGhpbiB0aGUgYGllZWU4MDIxMV9kb19zdG9wYCBmdW5jdGlvbi4gTXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBpbnRlcmVzdGluZy4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoaXMuJiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhpcyBjaGFuZ2Ugd2FzIG1hZGUuIFdoYXQgd2FzIHRoZSByYXRpb25hbGU/IFdoYXQgc3BlY2lmaWMgcHJvYmxlbSBvciBsaW1pdGF0aW9uIGluIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBwcm9tcHRlZCB0aGlzIG1vZGlmaWNhdGlvbj8gQmVmb3JlIEkgZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eSBvZiB0aGUgY29kZSBpdHNlbGYsIEkgd2FudCB0byBlc3RhYmxpc2ggdGhlICpjb250ZXh0Ki4gVGhpcyBtZWFucyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgc3Vycm91bmRpbmcgY29kZSwgdGhlIGNvbW1pdCBtZXNzYWdlLCB0aGUgYnVnIHJlcG9ydCAoaWYgdGhlcmUgaXMgb25lKSwgYW55dGhpbmcgdGhhdCBoZWxwcyBzaGVkIGxpZ2h0IG9uIHRoZSBkZXNpZ24gZGVjaXNpb24uIFRoaXMgaXMgaG93IEkmIzM5O2xsIGVuc3VyZSB0aGlzIGNoYW5nZSBpcyBjb3JyZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2lmYWNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYxMDpcdFx0aWYgKGdvaW5nX2Rvd24pXG4gNjExOlx0XHRcdGxvY2FsLVx1MDAzZW9wZW5fY291bnQtLTtcbiA2MTI6XHRcbiA2MTM6XHRcdHN3aXRjaCAoc2RhdGEtXHUwMDNldmlmLnR5cGUpIHtcbiA2MTQ6XHRcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbiA2MTU6XHRcdFx0bGlzdF9kZWwoXHUwMDI2c2RhdGEtXHUwMDNldS52bGFuLmxpc3QpO1xuIDYxNjpcdFx0XHRSQ1VfSU5JVF9QT0lOVEVSKHNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYsIE5VTEwpO1xuIDYxNzpcdFx0XHQvKiBzZWUgY29tbWVudCBpbiB0aGUgZGVmYXVsdCBjYXNlIGJlbG93ICovXG4gNjE4Olx0XHRcdGllZWU4MDIxMV9mcmVlX2tleXMoc2RhdGEsIHRydWUpO1xuIDYxOTpcdFx0XHQvKiBubyBuZWVkIHRvIHRlbGwgZHJpdmVyICovXG4gNjIwOlx0XHRcdGJyZWFrO1xuIDYyMTpcdFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NT05JVE9SOlxuIDYyMjpcdFx0XHRsb2NhbC1cdTAwM2Vtb25pdG9ycy0tO1xuIDYyMzpcdFxuIDYyNDpcdFx0XHRpZiAoIShzZGF0YS1cdTAwM2V1Lm1udHIuZmxhZ3MgXHUwMDI2IE1PTklUT1JfRkxBR19BQ1RJVkUpIFx1MDAyNlx1MDAyNlxuIDYyNTpcdFx0XHQgICAgIWllZWU4MDIxMV9od19jaGVjayhcdTAwMjZsb2NhbC1cdTAwM2VodywgTk9fVklSVFVBTF9NT05JVE9SKSkge1xuIDYyNjpcdFxuIDYyNzpcdFx0XHRcdGxvY2FsLVx1MDAzZXZpcnRfbW9uaXRvcnMtLTtcbiA2Mjg6XHRcdFx0XHRpZiAobG9jYWwtXHUwMDNldmlydF9tb25pdG9ycyA9PSAwKSB7XG4gNjI5Olx0XHRcdFx0XHRsb2NhbC1cdTAwM2Vody5jb25mLmZsYWdzIFx1MDAyNj0gfklFRUU4MDIxMV9DT05GX01PTklUT1I7XG4gNjMwOlx0XHRcdFx0XHRod19yZWNvbmZfZmxhZ3MgfD0gSUVFRTgwMjExX0NPTkZfQ0hBTkdFX01PTklUT1I7XG4gNjMxOlx0XHRcdFx0fVxuIDYzMjpcdFx0XHR9XG4gNjMzOlx0XG4gNjM0Olx0XHRcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xuIDYzNTpcdFx0XHRicmVhaztcbiA2MzY6XHRcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTkFOOlxuIDYzNzpcdFx0XHQvKiBDaGVjayBpZiBhbnkgb3BlbiBOQU5fREFUQSBpbnRlcmZhY2VzICovXG4gNjM4Olx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXRlciwgXHUwMDI2bG9jYWwtXHUwMDNlaW50ZXJmYWNlcywgbGlzdCkge1xuIDYzOTpcdFx0XHRcdFdBUk5fT04oaXRlci1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9OQU5fREFUQSBcdTAwMjZcdTAwMjZcbiA2NDA6XHRcdFx0XHRcdGllZWU4MDIxMV9zZGF0YV9ydW5uaW5nKGl0ZXIpKTtcbiA2NDE6XHRcdFx0fVxuIDY0MjpcdFxuIDY0MzpcdFx0XHQvKiBjbGVhbiBhbGwgdGhlIGZ1bmN0aW9ucyAqL1xuIDY0NDpcdFx0XHRpZiAoIShsb2NhbC1cdTAwM2Vody53aXBoeS1cdTAwM2VuYW5fY2FwYS5mbGFncyBcdTAwMjZcbiA2NDU6XHRcdFx0ICAgICAgV0lQSFlfTkFOX0ZMQUdTX1VTRVJTUEFDRV9ERSkpIHtcbiA2NDY6XHRcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2c2RhdGEtXHUwMDNldS5uYW4uZGUuZnVuY19sb2NrKTtcbiA2NDc6XHRcbiA2NDg6XHRcdFx0XHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2c2RhdGEtXHUwMDNldS5uYW4uZGUuZnVuY3Rpb25faW5zdF9pZHMsXG4gNjQ5Olx0XHRcdFx0XHRcdCAgIGZ1bmMsIGkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDQ4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hYzgwMjExIE1vbml0b3IgTW9kZSBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBjaGFuZ2UgY2VudGVycyBhcm91bmQgdGhlIGBOTDgwMjExX0lGVFlQRV9NT05JVE9SYCBjYXNlIHdpdGhpbiBgaWVlZTgwMjExX2RvX3N0b3BgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjb25maXJtIHdoZXJlIHRoZSBjb2RlICp1c2VkKiB0byBiZS4gVGhlIGRpZmYgc2hvd3MgYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO2Agd2FzICppbnNpZGUqIGFuIGBpZmAgYmxvY2ssIGJ1dCBub3cgaXQmIzM5O3MgKm91dHNpZGUqLgoKSG93ZXZlciwgaG9sZCBvbiBhIHNlY29uZC4gQWZ0ZXIgY2hlY2tpbmcgdGhlIGByZWFkLWZpbGVgIGNvbnRleHQsIGl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoICpoYXMqIGFscmVhZHkgYmVlbiBhcHBsaWVkIHRvIHRoZSBjb2RlIGluIHRoaXMgd29ya3NwYWNlLiBUaGF0IG1lYW5zIHRoZSBkaWZmIGlzIHNob3dpbmcgdGhlICpjdXJyZW50KiBzdGF0ZS4gVGhlcmVmb3JlLCBJIGNvcnJlY3RseSByZWNhbGwgdGhhdCB0aGUgY29kZSB3YXMgKnByZXZpb3VzbHkqIG9ubHkgYmVpbmcgY2FsbGVkIGluIGNlcnRhaW4gY2FzZXMsIHNwZWNpZmljYWxseSBgIShzZGF0YS0mZ3Q7dS5tbnRyLmZsYWdzICZhbXA7IE1PTklUT1JfRkxBR19BQ1RJVkUpICZhbXA7JmFtcDsgIWllZWU4MDIxMV9od19jaGVjaygmYW1wO2xvY2FsLSZndDtodywgTk9fVklSVFVBTF9NT05JVE9SKWAuCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IG1hYzgwMjExIGhhbmRsZXMgbW9uaXRvciBtb2RlLCBhbmQgdGhhdCBjb3VsZCBlYXNpbHkgYmUgdHJpZ2dlcmVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBtYWM4MDIxMV9od3NpbS4gVGhlcmVmb3JlLCBJJiMzOTttIG1hcmtpbmcgdGhpcyBhcyBgV29ydGhGdXp6aW5nPXRydWVgLgoKTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW1wb3J0YW50IGVudHJ5IHBvaW50cy4gVGhlIGZ1bmN0aW9uIGRpcmVjdGx5IG1vZGlmaWVkIGlzIGBpZWVlODAyMTFfZG9fc3RvcGAsIGJ1dCBpdCYjMzk7cyBgc3RhdGljYCwgc28gSSBuZWVkIHRvIGZpbmQgaXRzIGNhbGxlcnMuIEl0IGlzIGNhbGxlZCBieSBgaWVlZTgwMjExX3N0b3BgLCBgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZWAsIGFuZCBgaWVlZTgwMjExX3NkYXRhX3N0b3BgLiBJIG5lZWQgdG8gY2hlY2sgd2hldGhlciBgaWVlZTgwMjExX3N0b3BgIGlzIGBzdGF0aWNgIGFuZCB0aGVuIEkmIzM5O2xsIGxvb2sgZm9yIHdoYXQgY2FsbHMgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX3N0b3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvaWZhY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03NzMtXHRpZiAobG9jYWwtXHUwMDNlb3Blbl9jb3VudCA9PSAwKSB7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzo3NzQ6XHRcdGllZWU4MDIxMV9zdG9wX2RldmljZShsb2NhbCwgZmFsc2UpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtNzc1LVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc4OC1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjc4OTp2b2lkIGllZWU4MDIxMV9zdG9wX21ic3NpZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc5MC17XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtODQ0LVxubmV0L21hYzgwMjExL2lmYWNlLmM6ODQ1OnN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTg0Ni17XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtODY1LVx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQKVxubmV0L21hYzgwMjExL2lmYWNlLmM6ODY2Olx0XHRpZWVlODAyMTFfc3RvcF9tYnNzaWQoc2RhdGEpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtODY3LVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTk0MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGllZWU4MDIxMV9kYXRhaWZfb3BzID0ge1xubmV0L21hYzgwMjExL2lmYWNlLmMtOTQyLVx0Lm5kb19vcGVuXHRcdD0gaWVlZTgwMjExX29wZW4sXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo5NDM6XHQubmRvX3N0b3BcdFx0PSBpZWVlODAyMTFfc3RvcCxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTk0NC1cdC5uZG9fdW5pbml0XHRcdD0gaWVlZTgwMjExX3VuaW5pdCxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz05Nzk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpZWVlODAyMTFfbW9uaXRvcmlmX29wcyA9IHtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTk4MC1cdC5uZG9fb3Blblx0XHQ9IGllZWU4MDIxMV9vcGVuLFxubmV0L21hYzgwMjExL2lmYWNlLmM6OTgxOlx0Lm5kb19zdG9wXHRcdD0gaWVlZTgwMjExX3N0b3AsXG5uZXQvbWFjODAyMTEvaWZhY2UuYy05ODItXHQubmRvX3VuaW5pdFx0XHQ9IGllZWU4MDIxMV91bmluaXQsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTA0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGllZWU4MDIxMV9kYXRhaWZfODAyM19vcHMgPSB7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMDQ4LVx0Lm5kb19vcGVuXHRcdD0gaWVlZTgwMjExX29wZW4sXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxMDQ5Olx0Lm5kb19zdG9wXHRcdD0gaWVlZTgwMjExX3N0b3AsXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMDUwLVx0Lm5kb191bmluaXRcdFx0PSBpZWVlODAyMTFfdW5pbml0LFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE2MjY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2lmYWNlX3Byb2Nlc3Nfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE3NTUtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNzU2Olx0XHRcdF9faWVlZTgwMjExX3N0b3BfcnhfYmFfc2Vzc2lvbihcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE3NTctXHRcdFx0XHRzdGEsIHRpZCwgV0xBTl9CQUNLX1JFQ0lQSUVOVCxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xOTgwPXN0YXRpYyBpbnQgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMDQxLVxubmV0L21hYzgwMjExL2lmYWNlLmM6MjA0MjpcdGllZWU4MDIxMV9zdG9wX3ZpZl9xdWV1ZXMobG9jYWwsIHNkYXRhLFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjA0My1cdFx0XHRcdCAgSUVFRTgwMjExX1FVRVVFX1NUT1BfUkVBU09OX0lGVFlQRV9DSEFOR0UpO1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTI1NTE9dm9pZCBpZWVlODAyMTFfdmlmX2Jsb2NrX3F1ZXVlc19jc2Eoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjU1Ny1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjI1NTg6XHRpZWVlODAyMTFfc3RvcF92aWZfcXVldWVzX25vcmVmY291bnQobG9jYWwsIHNkYXRhLFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjU1OS1cdFx0XHRcdFx0ICAgICBJRUVFODAyMTFfUVVFVUVfU1RPUF9SRUFTT05fQ1NBKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODkwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGllZWU4MDIxMV9zdG9wYCBGdW5jdGlvbiBhbmQgUmVsYXRlZCBDYWxscyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGllZWU4MDIxMV9zdG9wYC4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIGAubmRvX3N0b3BgIGNhbGxiYWNrIGZvciBtYWM4MDIxMSBpbnRlcmZhY2VzLCBnb3QgaXQuIEhvbGQgb24sIHRoZSBwYXRjaCBJJiMzOTttIGV4YW1pbmluZyAqYWxzbyogdG91Y2hlcyBgaWVlZTgwMjExX2RvX3N0b3BgLiBIbW0sIHRoYXQmIzM5O3MgYSBiaXQgb2YgYSByZWQgZmxhZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucywgYW5kIHNwZWNpZmljYWxseSwgd2hhdCBlbHNlIG1pZ2h0IGJlIGNhbGxpbmcgYGllZWU4MDIxMV9kb19zdG9wYC4gVGhlIGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIFNpbmNlIGBpZWVlODAyMTFfZG9fc3RvcGAgaXNuJiMzOTt0IHN0YXRpYywgSSBuZWVkIHRvIG1ldGhvZGljYWxseSBjaGVjayBpdHMgY2FsbGVycyB0byBlbnN1cmUgSSBkb24mIzM5O3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIHNpZGUgZWZmZWN0cy4gT2theSwgYGllZWU4MDIxMV9zZGF0YV9zdG9wYCBpcyBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBtaWdodCBjYWxsIGl0LCBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGF0IGxvZ2ljIHRvIHZlcmlmeSB0aGUgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX3NkYXRhX3N0b3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz0zMjE9c3RhdGljIHZvaWQgaWVlZTgwMjExX3N0b3BfcDJwX2RldmljZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zMjMte1xubmV0L21hYzgwMjExL2NmZy5jOjMyNDpcdGllZWU4MDIxMV9zZGF0YV9zdG9wKElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMzI1LX1cbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MzM0PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zdG9wX25hbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zNDYtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MzQ3Olx0aWVlZTgwMjExX3NkYXRhX3N0b3Aoc2RhdGEpO1xubmV0L21hYzgwMjExL2NmZy5jLTM0OC1cdGllZWU4MDIxMV9yZWNhbGNfaWRsZShzZGF0YS1cdTAwM2Vsb2NhbCk7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQwOT1zdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9uYW4oc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDMwLVx0aWYgKHJldCkge1xubmV0L21hYzgwMjExL2NmZy5jOjQzMTpcdFx0aWVlZTgwMjExX3NkYXRhX3N0b3Aoc2RhdGEpO1xubmV0L21hYzgwMjExL2NmZy5jLTQzMi1cdFx0cmV0dXJuIHJldDtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMTk2PWludCBpZWVlODAyMTFfZG9fb3BlbihzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCBib29sIGNvbWluZ191cCk7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMTk3OnZvaWQgaWVlZTgwMjExX3NkYXRhX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE5OC1pbnQgaWVlZTgwMjExX2FkZF92aXJ0dWFsX21vbml0b3Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MjQxND12b2lkIGllZWU4MDIxMV9pZl9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjQzOS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjI0NDA6dm9pZCBpZWVlODAyMTFfc2RhdGFfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI0NDEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTc0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBtYWM4MDIxMSBJbnRlcmZhY2UgU2h1dGRvd24gZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gbWFjODAyMTEmIzM5O3MgaW50ZXJmYWNlIHNodXRkb3duIHByb2Nlc3MgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuIEluaXRpYWxseSwgSSB3YXMgbG9va2luZyBhdCBgaWVlZTgwMjExX3N0b3BgIGJlY2F1c2UgaXQgc2VlbXMgbGlrZSBhIGxpa2VseSBjYW5kaWRhdGUgZm9yIHN0b3BwaW5nIGEgZGV2aWNlLiBJdCYjMzk7cyB1c2VkIHdoZW4gYW4gaW50ZXJmYWNlIGlzIGJyb3VnaHQgZG93biwgYnV0IGl0JiMzOTtzIHN0YXRpYywgd2hpY2ggaXMgYSBwb3RlbnRpYWwgcHJvYmxlbSBiZWNhdXNlIHRoZSBjb21waWxlciBjb3VsZCBpbmxpbmUgaXQsIGFuZCB0aGF0IHdvdWxkIHByZXZlbnQgbWUgZnJvbSB0YXJnZXRpbmcgaXQgZGlyZWN0bHkgd2l0aCBzeXprYWxsZXIuCgpJIGhhZCBjb25zaWRlcmVkIGBpZWVlODAyMTFfcnVudGltZV9jaGFuZ2VfaWZ0eXBlYCB3aGljaCBpcyBhbHNvIHN0YXRpYy4gSSBhbHNvIGxvb2tlZCBhdCBgaWVlZTgwMjExX3NkYXRhX3N0b3BgLCB3aGljaCBpcyBub24tc3RhdGljLCBidXQgaXQgYXBwZWFycyB0byBiZSBwcmltYXJpbHkgdXNlZCBmcm9tIHdpdGhpbiBgY2ZnLmNgIGZvciBzcGVjaWZpYyBjYXNlcy4gSSBzZWUgYGllZWU4MDIxMV9zdG9wYCBpcyBhY3R1YWxseSBhc3NpZ25lZCB0byBgLm5kb19zdG9wYCwgd2hpY2ggbWVhbnMgaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNvIGl0JiMzOTtzICpub3QqIGlubGluZWQsIGRlc3BpdGUgYmVpbmcgc3RhdGljLiBUaGUgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgc3RhdGUgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhhdCBtYWtlcyBgaWVlZTgwMjExX3N0b3BgIHNvbWV3aGF0IGF0dHJhY3RpdmUsIGFzIHN5emthbGxlciBjYW4gZGVhbCB3aXRoIHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSBhcmVuJiMzOTt0IGlubGluZWQsIGJ1dCBJIHdhbnQgdG8gYmUgc2FmZS4KCkhvd2V2ZXIsIEkgY29uZmlybWVkIHRoYXQgYGllZWU4MDIxMV9zdG9wYCBpc24mIzM5O3QgZXhwb3J0ZWQsIHdoaWNoIGlzIGxlc3MgaWRlYWwuIEkgYWxzbyBjaGVja2VkIGBpZWVlODAyMTFfaWZfcmVtb3ZlYCBidXQgaXQgZG9lc24mIzM5O3QgY2FsbCBgaWVlZTgwMjExX3NkYXRhX3N0b3BgLgoKTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGJyb2FkZXIgZW50cnkgcG9pbnRzLiBJZiBJJiMzOTttIGNvbnNpZGVyaW5nIGludGVyZmFjZSAqc2h1dGRvd24qLCB0aGUgY2FsbHMgaW4gYG5ldC9jb3JlL2Rldi5jYCBzdWNoIGFzIGBkZXZfY2xvc2VgIGFuZCBgX19kZXZfY2xvc2VfbWFueWAgc2VlbSByZWxldmFudCwgYXMgYXJlIGZ1bmN0aW9ucyB1c2VkIGluIG1hYzgwMjExIHRvIG1hbmFnZSBpbnRlcmZhY2VzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGZ1bmN0aW9ucyBsaWtlIGBtYWM4MDIxMV9kZWxfaW50ZXJmYWNlYCB0byBmaW5kIGEgbm9uLXN0YXRpYyBlbnRyeSBwb2ludCB0byB0aGUgbWFjODAyMTEgc3RvcCBzZXF1ZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWM4MDIxMV9kZWxfaW50ZXJmYWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxMzUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludGVyZmFjZSBEZWxldGlvbiBEZWVwIERpdmUqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyZmFjZSBkZWxldGlvbiBwcm9jZXNzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gYGNmZy5jYC4gVGhhdCYjMzk7cyB0eXBpY2FsbHkgd2hlcmUgdGhlc2Ugc29ydHMgb2YgaW50ZXJmYWNlIG1hbmFnZW1lbnQgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIG9yIGF0IGxlYXN0IHJlZmVyZW5jZWQuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGFjdHVhbCBsb2dpYyBvciBhdCBsZWFzdCBwb2ludGVycyB0byBpdCB3aXRoaW4gdGhhdCBmaWxlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBmdW5jdGlvbiBjYWxscyByZWxhdGVkIHRvIGludGVyZmFjZSB0ZWFyZG93biwgcmVtb3ZhbCBmcm9tIGNvbmZpZ3VyYXRpb24sIGFuZCBsaWtlbHkgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGtlcm5lbCBuZXR3b3JraW5nIHN0YWNrLiBMZXQmIzM5O3Mgc2VlIHdoYXQgYGNmZy5jYCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWxfdmlydHVhbF9pbnRmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9NTk3Nj1jb25zdCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIG1hYzgwMjExX2NvbmZpZ19vcHMgPSB7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNTk3Ny1cdC5hZGRfdmlydHVhbF9pbnRmID0gaWVlZTgwMjExX2FkZF9pZmFjZSxcbm5ldC9tYWM4MDIxMS9jZmcuYzo1OTc4Olx0LmRlbF92aXJ0dWFsX2ludGYgPSBpZWVlODAyMTFfZGVsX2lmYWNlLFxubmV0L21hYzgwMjExL2NmZy5jLTU5NzktXHQuY2hhbmdlX3ZpcnR1YWxfaW50ZiA9IGllZWU4MDIxMV9jaGFuZ2VfaWZhY2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0ODQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91JiMzOTt2ZSBkZXNjcmliZWQ6CgoqKkRlbHZpbmcgaW50byBgaWVlZTgwMjExX2RlbF9pZmFjZWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBpZWVlODAyMTFfZGVsX2lmYWNlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IGhhcHBlbnMgaGVyZSB3aGVuIGEgd2lyZWxlc3MgaW50ZXJmYWNlIGdldHMgZGVsZXRlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQmIzM5O3MgdGhlIHNlcXVlbmNlPyBXaGF0IGFyZSB0aGUgY3JpdGljYWwgcmVzb3VyY2VzIGJlaW5nIGZyZWVkPyBXZeKAmXJlIHRhbGtpbmcgYWJvdXQgZnJlZWluZyB1cCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGEgd2lyZWxlc3MgaW50ZXJmYWNlLCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBhc3NvY2lhdGVkIG1lbW9yeSwgbmV0d29yayBxdWV1ZXMsIHBvdGVudGlhbCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgYW5kIGFueSByZWdpc3RlcmVkIGhhbmRsZXJzIG9yIGNhbGxiYWNrcy4KCkkmIzM5O20gbWVudGFsbHkgc3RlcHBpbmcgdGhyb3VnaCBhIGxpa2VseSBzY2VuYXJpbzogdGhlIGludGVyZmFjZSBpcyBiZWluZyBzaHV0IGRvd24gb3IgcmVtb3ZlZCBlbnRpcmVseS4gVGhlcmVmb3JlLCBJIGV4cGVjdCB0aGVyZeKAmWxsIGJlIGEgY2xlYW4tdXAgb2YgdGhlIGRhdGEgc3RydWN0dXJlcyBJIGtub3cgYXJlIGxpbmtlZCB0byBpdCwgbGlrZSB0aGUgYGllZWU4MDIxMV92aWZgIHN0cnVjdHVyZSwgYW55IGFzc29jaWF0ZWQgdmlydHVhbCBpbnRlcmZhY2VzIChWTEFOcyBvciB2aXJ0dWFsIEFQcyksIGFuZCBwcm9iYWJseSBhbnl0aGluZyBpbiB0aGUgZHJpdmVyJiMzOTtzIHByaXZhdGUgZGF0YSB0aGF0IGl0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGludGVyZmFjZS4gSSBoYXZlIHRvIHRoaW5rIGFib3V0IHRoZSBkaWZmZXJlbnQgc2NlbmFyaW9z4oCUIHdoYXQgaGFwcGVucyBpZiBpdCYjMzk7cyBhIHN0YXRpb24gaW50ZXJmYWNlLCBhbiBBUCBpbnRlcmZhY2UsIGEgbW9uaXRvciBpbnRlcmZhY2U/IFRob3NlIHNob3VsZCBhbGwgYmUgaGFuZGxlZCBjbGVhbmx5LgoKSSYjMzk7bSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgZm9yIHJhY2UgY29uZGl0aW9ucy4gSWYgdGhlcmUgYXJlIGFueSB0aHJlYWRzIG9yIHByb2Nlc3NlcyBzdGlsbCBhY2Nlc3NpbmcgdGhpcyBpbnRlcmZhY2UsIGhvdyBpcyB0aGF0IHN5bmNocm9uaXplZD8gQXJlIG11dGV4ZXMgb3IgcmVmZXJlbmNlIGNvdW50cyBjb3JyZWN0bHkgdXNlZCB0byBwcmV2ZW50IGRvdWJsZS1mcmVlcyBvciB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb25zPyBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgdHJpY2t5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgcm9jayBzb2xpZC4KCkFuZCB3aGF0IGFib3V0IGhhcmR3YXJlPyBUaGlzIGZ1bmN0aW9uIHByb2JhYmx5IGFsc28gbmVlZHMgdG8gdGVsbCB0aGUgaGFyZHdhcmUgdG8gc3RvcCB0cmFuc21pdHRpbmcgYW5kIHJlY2VpdmluZyBvbiB0aGF0IGludGVyZmFjZS4gSSYjMzk7bSBleHBlY3Rpbmcgc29tZSByZWdpc3RlciB3cml0ZXMsIG1heWJlIHNvbWUgRE1BIHNldHVwIHRvIGJlIGNsZWFyZWQsIGFuZCBsaWtlbHkgc29tZSBpbnRlcnJ1cHQgZGlzYWJsZSBsb2dpYyB0byBhdm9pZCBhbnkgZnVydGhlciBpbnRlcmZlcmVuY2UuIEZpbmFsbHksIHRoZSBmdW5jdGlvbiBtdXN0IHVwZGF0ZSBhbnkgbWFzdGVyIHN0cnVjdHVyZXMgKGUuZy4gdGhlIGxpc3Qgb2YgYWxsIGNvbmZpZ3VyZWQgd2lyZWxlc3MgaW50ZXJmYWNlcyksIHRvIGVuc3VyZSB0aGUgc3lzdGVtIGlzIGluIGEgY29uc2lzdGVudCBzdGF0ZSBhbmQgbm8gc3RyYXkgcG9pbnRlcnMgYXJlIGxlZnQgZGFuZ2xpbmcuCgpJIGFsc28gaGF2ZSB0byBzZWUgaG93IGl0IGhhbmRsZXMgZXJyb3JzLiBJZiBhbnkgc3RlcCBvZiB0aGUgZGVsZXRpb24gcHJvY2VzcyBmYWlscywgd2hhdCYjMzk7cyB0aGUgcmVjb3ZlcnkgcGF0aD8gRG9lcyBpdCBhdHRlbXB0IHRvIHJvbGwgYmFjayBhbnkgY2hhbmdlcz8gRG9lcyBpdCBsb2cgZXJyb3JzIHByb3Blcmx5PyBBbmQgZG9lcyBpdCBoYXZlIGFueSBpbXBhY3Qgb24gdGhlIG9wZXJhdGlvbiBvZiBhbnkgb3RoZXIgd2lyZWxlc3MgaW50ZXJmYWNlcz8KCkVzc2VudGlhbGx5LCBJIG5lZWQgdG8gc2VlIGhvdyByb2J1c3QgYW5kIHJlbGlhYmxlIHRoaXMgcm91dGluZSBpcy4gSSYjMzk7bSBsb29raW5nIGZvciBhIGdyYWNlZnVsIGFuZCB0aG9yb3VnaCBjbGVhbnVwLCBwcmV2ZW50aW5nIG1lbW9yeSBsZWFrcywgYW5kIHByZXNlcnZpbmcgdGhlIGludGVncml0eSBvZiB0aGUgd2lyZWxlc3Mgc3RhY2suIExldCYjMzk7cyBzZWUgaG93IHdlbGwgaXQmIzM5O3MgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9kZWxfaWZhY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz0yMDY9c3RhdGljIHN0cnVjdCB3aXJlbGVzc19kZXYgKmllZWU4MDIxMV9hZGRfaWZhY2Uoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjUxLVxubmV0L21hYzgwMjExL2NmZy5jOjI1MjpzdGF0aWMgaW50IGllZWU4MDIxMV9kZWxfaWZhY2Uoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldilcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNTMte1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01OTc2PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcbm5ldC9tYWM4MDIxMS9jZmcuYy01OTc3LVx0LmFkZF92aXJ0dWFsX2ludGYgPSBpZWVlODAyMTFfYWRkX2lmYWNlLFxubmV0L21hYzgwMjExL2NmZy5jOjU5Nzg6XHQuZGVsX3ZpcnR1YWxfaW50ZiA9IGllZWU4MDIxMV9kZWxfaWZhY2UsXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTk3OS1cdC5jaGFuZ2VfdmlydHVhbF9pbnRmID0gaWVlZTgwMjExX2NoYW5nZV9pZmFjZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzNzUKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBGdW5jdGlvbiBTY29wZSBpbiB0aGUgSUVFRSA4MDIuMTEgU3Vic3lzdGVtKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgSUVFRSA4MDIuMTEgY29kZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgaG93IHdlJiMzOTtyZSBtYW5hZ2luZyBpbnRlcmZhY2VzIGFuZCB0aGVpciBsaWZlY3ljbGUuIEkgbm90aWNlZCBgaWVlZTgwMjExX2RlbF9pZmFjZWAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBzY29wZSBhbmQgcG90ZW50aWFsIHZpc2liaWxpdHkgaXNzdWVzIGZvciBleHRlcm5hbCBjYWxscyBvciBleHRlbnNpb25zLiBCdXQgdGhlbiwgaGFuZyBvbi4uLiBgaWVlZTgwMjExX3NkYXRhX3N0b3BgICppc24mIzM5O3QqIGBzdGF0aWNgLiBUaGF0JiMzOTtzIGEgcG9pbnQgb2YgY29udHJhc3QgYW5kIG1ha2VzIG1lIHRoaW5rIHRoZXJlIG1pZ2h0IGJlIGEgZGVzaWduIHByaW5jaXBsZSBhdCBwbGF5IGhlcmUuCgpOb3csIG15IG1pbmQgc2hpZnRzIHRvIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQgbWUgcXVpY2tseSBjaGVjayBgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZWAuIEFoLCBhbm90aGVyIGBzdGF0aWNgIG9uZS4gVGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IGJlY29tZXM6IGFyZSB0aGVyZSAqYW55KiBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBtb2R1bGUgdGhhdCBjb3VsZCBiZSB1dGlsaXplZCBpbiBhbHRlcm5hdGl2ZSBjb2RlIHBhdGhzLCBvciBpbiBleHRlbmRpbmcgY3VycmVudCBiZWhhdmlvcj8gVGhpcyBzZWVtcyBsaWtlIGFuIGludGVyZXN0aW5nIHBvaW50IGZvciByZWZhY3RvcmluZywgb3IgYSByZXZpZXcuIExldCYjMzk7cyBzZWUuLi4gd2hhdCBhYm91dCBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYD8gVGhpcyBuZWVkcyBhIG1vcmUgY2FyZWZ1bCBsb29rLCBtaWdodCBiZSBhIGdvb2QgY2FuZGlkYXRlIGlmIHdlJiMzOTtyZSBsb29raW5nIHRvIG1vZGlmeSBtb25pdG9yIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NmZy5jPTk2PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9tb25fb3B0aW9ucyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTQyLVx0XHRpZiAoaWVlZTgwMjExX3NkYXRhX3J1bm5pbmcoc2RhdGEpKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MTQzOlx0XHRcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xubmV0L21hYzgwMjExL2NmZy5jLTE0NC1cdFx0XHRzZGF0YS1cdTAwM2V1Lm1udHIuZmxhZ3MgPSBwYXJhbXMtXHUwMDNlZmxhZ3M7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MTQ1Olx0XHRcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgMSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMTQ2LVxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTIxOTM9dm9pZCBpZWVlODAyMTFfcmVjYWxjX2lkbGUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjE5NDp2b2lkIGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxOTUtXHRcdFx0XHQgICAgY29uc3QgaW50IG9mZnNldCk7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9NDc5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNjMzLVxubmV0L21hYzgwMjExL2lmYWNlLmM6NjM0Olx0XHRpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKTtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYzNS1cdFx0YnJlYWs7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTE1NT12b2lkIGllZWU4MDIxMV9yZWNhbGNfb2ZmbG9hZChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMTcxLVxubmV0L21hYzgwMjExL2lmYWNlLmM6MTE3Mjp2b2lkIGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTExNzMtXHRcdFx0XHQgICAgY29uc3QgaW50IG9mZnNldClcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xMzY1PWludCBpZWVlODAyMTFfZG9fb3BlbihzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCBib29sIGNvbWluZ191cClcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNTA1LVxubmV0L21hYzgwMjExL2lmYWNlLmM6MTUwNjpcdFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAxKTtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE1MDctXHRcdGllZWU4MDIxMV9jb25maWd1cmVfZmlsdGVyKGxvY2FsKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2MjIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXMgU3ltYm9sIENvbmZpcm1hdGlvbiBhbmQgS2NvbmZpZyBEZXBlbmRlbmN5IENoZWNrKioKCk9rYXksIHNvIEkmIzM5O3ZlIGp1c3QgY29uZmlybWVkIHNvbWV0aGluZyBpbXBvcnRhbnQgYWJvdXQgdGhpcyBzZXQgb2YgZnVuY3Rpb25zLiBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCwgYGllZWU4MDIxMV9kb19vcGVuYCwgYW5kIGBpZWVlODAyMTFfc2RhdGFfc3RvcGAgYXJlICpub3QqIGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0IG1lYW5zIHRoZXkmIzM5O3JlIGFjY2Vzc2libGUgb3V0c2lkZSBvZiB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0sIHRoaXMgbWFrZXMgdGhlbSBwZXJmZWN0IGNhbmRpZGF0ZXMgdG8gYmUgY29uc2lkZXJlZCBhcyBGb2N1c1N5bWJvbHMuIFRoaXMgYWNjZXNzaWJpbGl0eSBpcyBleGFjdGx5IHdoYXQgSSBuZWVkIHRvIGxldmVyYWdlIGluIG15IGFuYWx5c2lzLgoKTm93IHRoYXQgSSBoYXZlIGNvbmZpcm1lZCB0aGVpciBzdWl0YWJpbGl0eSBhcyBGb2N1c1N5bWJvbHMsIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIG1hYzgwMjExLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgZ292ZXJuIHRoZSBpbmNsdXNpb24gYW5kIGJlaGF2aW9yIG9mIHRoaXMgcGFydGljdWxhciBtb2R1bGUgdG8gY29udGludWUgd2l0aCBteSBhc3Nlc3NtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTQ5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgb3BlcmF0aW9uIHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgYE1BQzgwMjExYCBjb25maWd1cmF0aW9uLiBUaGF0JiMzOTtzIHRoZSBiaWcgcGljdHVyZSwgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjcnVjaWFsIGNvbmZpZyBwYXJhbWV0ZXJzIGx1cmtpbmcgYXJvdW5kIHRoYXQgSSYjMzk7bSBtaXNzaW5nLiBXZSYjMzk7cmUgdGFsa2luZyBsb3ctbGV2ZWwgaGVyZSwgc28gb3Zlcmxvb2tpbmcgYSBzZWVtaW5nbHkgbWlub3Igb3B0aW9uIGNvdWxkIGJlIGRpc2FzdHJvdXMuCgpOb3csIHRoZSBjb2RlIG1vZGlmaWNhdGlvbiBpcyBhcHBhcmVudGx5IGZvY3VzZWQgaW4gYG5ldC9tYWM4MDIxMS9pZmFjZS5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBJJiMzOTtsbCBuZWVkIHRvIG1ldGljdWxvdXNseSBzY2FuIHRoYXQgZmlsZSwgc3BlY2lmaWNhbGx5IGh1bnRpbmcgZm9yIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBibG9ja3MsIHRob3NlIGAjaWZkZWZgIGRpcmVjdGl2ZXMuIEkmIzM5O20gcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gdGhvc2Ugc3Vycm91bmRpbmcgdGhlIGBpZWVlODAyMTFfZG9fc3RvcGAgZnVuY3Rpb24gYW5kLCBjcnVjaWFsbHksIHRoZSBgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUmAgaW50ZXJmYWNlIHR5cGUuIFRob3NlIGFyZSBrZXkgaW5kaWNhdG9ycyB0aGF0IGNvbmRpdGlvbmFsIGxvZ2ljIGJhc2VkIG9uIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIGluIHBsYXkgYW5kIEkgbmVlZCB0byBiZSBhd2FyZSBvZiB3aGF0IGlzIGJlaW5nIGNvbnNpZGVyZWQuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCBpZiBzb21ldGhpbmcgaXMgbWlzc2luZy4gSSBuZWVkIHRvIGJlIHN1cmUgdGhlIGNvbmZpZyBpcyBjb3JyZWN0IGZvciB0aGUgaW50ZW5kZWQgb3BlcmF0aW9uLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBhdm9pZGluZyBzdWJ0bGUsIGhhcmQtdG8tZGVidWcgcHJvYmxlbXMgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05MODAyMTFfSUZUWVBFX01PTklUT1ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvaWZhY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvaWZhY2UuYz0xNjE9c3RhdGljIGludCBpZWVlODAyMTFfdmVyaWZ5X21hYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgdTggKmFkZHIsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTkxLVxubmV0L21hYzgwMjExL2lmYWNlLmM6MTkyOlx0XHRpZiAoaXRlci1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2lmYWNlLmMtMTkzLVx0XHQgICAgIShpdGVyLVx1MDAzZXUubW50ci5mbGFncyBcdTAwMjYgTU9OSVRPUl9GTEFHX0FDVElWRSkpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MjY4PXN0YXRpYyBpbnQgX2llZWU4MDIxMV9jaGFuZ2VfbWFjKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI4NC1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjI4NTpcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2lmYWNlLmMtMjg2LVx0ICAgICEoc2RhdGEtXHUwMDNldS5tbnRyLmZsYWdzIFx1MDAyNiBNT05JVE9SX0ZMQUdfQUNUSVZFKSlcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0zMjk9c3RhdGljIGlubGluZSBpbnQgaWRlbnRpY2FsX21hY19hZGRyX2FsbG93ZWQoaW50IHR5cGUxLCBpbnQgdHlwZTIpXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0zMzAte1xubmV0L21hYzgwMjExL2lmYWNlLmM6MzMxOlx0cmV0dXJuIHR5cGUxID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IgfHxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjMzMjpcdFx0dHlwZTIgPT0gTkw4MDIxMV9JRlRZUEVfTU9OSVRPUiB8fFxubmV0L21hYzgwMjExL2lmYWNlLmMtMzMzLVx0XHR0eXBlMSA9PSBOTDgwMjExX0lGVFlQRV9QMlBfREVWSUNFIHx8XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MzQxPXN0YXRpYyBpbnQgaWVlZTgwMjExX2NoZWNrX2NvbmN1cnJlbnRfaWZhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMzU4LVx0XHRcdGlmICgoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfT0NCIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2lmYWNlLmM6MzU5Olx0XHRcdCAgICAgbnNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX01PTklUT1IpIHx8XG5uZXQvbWFjODAyMTEvaWZhY2UuYzozNjA6XHRcdFx0ICAgIChzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2lmYWNlLmMtMzYxLVx0XHRcdCAgICAgbnNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX09DQikpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9NDc5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNTEwLVx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjUxMTpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUjpcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTUxMi1cdFx0bGlzdF9kZWxfcmN1KFx1MDAyNnNkYXRhLVx1MDAzZXUubW50ci5saXN0KTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02MjAtXHRcdGJyZWFrO1xubmV0L21hYzgwMjExL2lmYWNlLmM6NjIxOlx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NT05JVE9SOlxubmV0L21hYzgwMjExL2lmYWNlLmMtNjIyLVx0XHRsb2NhbC1cdTAwM2Vtb25pdG9ycy0tO1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc0NS1cdFx0YnJlYWs7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzo3NDY6XHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XG5uZXQvbWFjODAyMTEvaWZhY2UuYy03NDctXHRcdGlmIChsb2NhbC1cdTAwM2V2aXJ0X21vbml0b3JzID09IDApXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTIyOD1pbnQgaWVlZTgwMjExX2FkZF92aXJ0dWFsX21vbml0b3Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTI0OS1cdC8qIHNldCB1cCBkYXRhICovXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxMjUwOlx0c2RhdGEtXHUwMDNldmlmLnR5cGUgPSBOTDgwMjExX0lGVFlQRV9NT05JVE9SO1xubmV0L21hYzgwMjExL2lmYWNlLmMtMTI1MS1cdHNucHJpbnRmKHNkYXRhLVx1MDAzZW5hbWUsIElGTkFNU0laLCBcJiMzNDslcy1tb25pdG9yXCYjMzQ7LFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTI1Mi1cdFx0IHdpcGh5X25hbWUobG9jYWwtXHUwMDNlaHcud2lwaHkpKTtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjEyNTM6XHRzZGF0YS1cdTAwM2V3ZGV2LmlmdHlwZSA9IE5MODAyMTFfSUZUWVBFX01PTklUT1I7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMjU0LVx0c2RhdGEtXHUwMDNld2Rldi53aXBoeSA9IGxvY2FsLVx1MDAzZWh3LndpcGh5O1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEyNjgtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxMjY5Olx0cmV0ID0gaWVlZTgwMjExX2NoZWNrX3F1ZXVlcyhzZGF0YSwgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUik7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMjcwLVx0aWYgKHJldCkge1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTEzNjU9aW50IGllZWU4MDIxMV9kb19vcGVuKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIGJvb2wgY29taW5nX3VwKVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE0MDktXHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNDEwOlx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NT05JVE9SOlxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQxMS1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfQURIT0M6XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQ2Mi1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE0NjM6XHRzZGF0YS1cdTAwM2V2aWYuYWRkcl92YWxpZCA9IHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX01PTklUT1IgfHxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE0NjQtXHRcdFx0XHQoc2RhdGEtXHUwMDNldS5tbnRyLmZsYWdzIFx1MDAyNiBNT05JVE9SX0ZMQUdfQUNUSVZFKTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNDgwLVx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE0ODE6XHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNDgyLVx0XHRpZiAoKHNkYXRhLVx1MDAzZXUubW50ci5mbGFncyBcdTAwMjYgTU9OSVRPUl9GTEFHX0FDVElWRSkgfHxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xODc4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXR1cF9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTQ1LVx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE5NDY6XHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTQ3LVx0XHRzZGF0YS1cdTAwM2VkZXYtXHUwMDNldHlwZSA9IEFSUEhSRF9JRUVFODAyMTFfUkFESU9UQVA7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MjA5OT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfYXNzaWduX3Blcm1fYWRkcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMTE3LVx0c3dpdGNoICh0eXBlKSB7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyMTE4Olx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NT05JVE9SOlxubmV0L21hYzgwMjExL2lmYWNlLmMtMjExOS1cdFx0LyogZG9lc24mIzM5O3QgbWF0dGVyICovXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjE4NS1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShzZGF0YSwgXHUwMDI2bG9jYWwtXHUwMDNlaW50ZXJmYWNlcywgbGlzdCkge1xubmV0L21hYzgwMjExL2lmYWNlLmM6MjE4NjpcdFx0XHRpZiAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfTU9OSVRPUilcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIxODctXHRcdFx0XHRjb250aW51ZTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0yMjI4PWludCBpZWVlODAyMTFfaWZfYWRkKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIyODEtXHRcdGlmICh0eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyMjgyOlx0XHQgICAgKHR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfTU9OSVRPUiB8fFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjI4My1cdFx0ICAgICAocGFyYW1zLVx1MDAzZWZsYWdzIFx1MDAyNiBNT05JVE9SX0ZMQUdfQUNUSVZFKSkpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjM5MS1cdFx0bmRldi1cdTAwM2VtaW5fbXR1ID0gMjU2O1xubmV0L21hYzgwMjExL2lmYWNlLmM6MjM5MjpcdFx0aWYgKHR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfTU9OSVRPUilcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIzOTMtXHRcdFx0bmRldi1cdTAwM2VtYXhfbXR1ID0gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcwMjEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBNaXNzaW5nIE1vbml0b3IgTW9kZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIEkgc2VlIG5vIGAjaWZkZWZgIGd1YXJkaW5nIHRoZSBgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUmAgZGVmaW5pdGlvbi4gVGhhdCYjMzk7cyBhIGxpdHRsZSB1bnVzdWFsLCBnaXZlbiB0aGUgY29udGV4dC4gVGhlIGNvbmZpZ3VyYXRpb24sIGFzIGZhciBhcyBJIGNhbiBzZWUgZnJvbSB0aGlzIHNuaXBwZXQsIHNlZW1zIHRvIGJlIGBNQUM4MDIxMWAuIEJ1dCB3YWl0IGEgc2Vjb25kLCBpc24mIzM5O3QgYE1BQzgwMjExYCBhIHRyaXN0YXRlIG9wdGlvbj8gVGhhdCBtZWFucyBpdCBjYW4gYmUgYnVpbHQgaW4sIGFzIGEgbW9kdWxlLCBvciBkaXNhYmxlZC4gU28gdGhlIHF1ZXN0aW9uIGlzLCAqd2h5KiBpc24mIzM5O3QgdGhpcyBkZWZpbmVkIGF0IGFsbD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW5vdGhlciByZWxldmFudCBjb25maWcgaW52b2x2ZWQgaGVyZS4gVGltZSB0byBkaWcgaW50byBgbmV0L21hYzgwMjExL01ha2VmaWxlYCBhbmQgc2VlIGlmIHRoZSBidWlsZCBwcm9jZXNzIGlzIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBzb21ldGhpbmcgb3Igbm90LiBJJiMzOTttIGd1ZXNzaW5nIHRoZXJlJiMzOTtzIGEgZGVwZW5kZW5jeSBJIGhhdmVuJiMzOTt0IHNwb3R0ZWQgeWV0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZmFjZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvTWFrZWZpbGU9NT1tYWM4MDIxMS15IDo9IFxcXG4tLVxubmV0L21hYzgwMjExL01ha2VmaWxlLTE3LVx0aWJzcy5vIFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGU6MTg6XHRpZmFjZS5vIFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtMTktXHRsaW5rLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc0MTgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENvbXBpbGF0aW9uIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBgaWZhY2Uub2AgaXMgZGVmaW5pdGVseSBidWlsdCB3aGVuIHRoZSBgTUFDODAyMTFgIHdpcmVsZXNzIHN0YWNrIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBuZXh0IG1vdmUgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE1BQzgwMjExYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgaXRzIGluY2x1c2lvbiBhbmQgd2hhdCBvdGhlciBtb2R1bGVzIG9yIGZlYXR1cmVzIGl0IHJlbGllcyBvbi4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBzdGFydCB3aXRoIHRoZSBidWlsZCBzeXN0ZW0gY29uZmlndXJhdGlvbiBhbmQgcG9zc2libHkgdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIGZpbGVzLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmN5IHRyZWUgZm9yIGBNQUM4MDIxMWAgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCB3aHkgYGlmYWNlLm9gIGlzIGJlaW5nIGluY2x1ZGVkIGluIHRoZSBidWlsZCBwcm9jZXNzLiBPbmNlIEkgaGF2ZSB0aGF0IG5haWxlZCBkb3duLCBJIGNhbiBkZXRlcm1pbmUgdGhlIGxpa2VseSByZWFzb25zIGZvciBgaWZhY2Uub2AgYmVpbmcgYnVpbHQgd2hlbiBgTUFDODAyMTFgIGlzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMsIGFuZCBzZWUgd2hhdCBjb2RlIHBhdGhzIGdldCBleGVyY2lzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctOTgtXHRib29sIFwmIzM0O1RyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjEwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O1ZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cdGludCBcJiMzNDtTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXCYjMzQ7IGlmIE1BQzgwMjExX0RFQlVHX01FTlVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4NzcKCQkJCQkJCW91dHB1dDogMTc4CgkJCQkJCQl0aG91Z2h0czogNzE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIG1hYzgwMjExIEJ1ZyBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggcmVsYXRlZCB0byB0aGUgYE1BQzgwMjExYCBjb3JlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgaWZhY2UuY2AgZmlsZS4gVG8gcHJvcGVybHkgdGVzdCB0aGlzLCBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIG5lZWQgYm90aCBgTUFDODAyMTFgIGFuZCBhIGRyaXZlciBsaWtlIGBNQUM4MDIxMV9IV1NJTWAgZW5hYmxlZC4gQWRkaW5nIHRob3NlIHRvIG15IGBFbmFibGVDb25maWdzYCBsaXN0IHNlZW1zIGxpa2UgdGhlIHJpZ2h0IG1vdmUuCgpOb3csIGRpZ2dpbmcgaW50byB0aGUgY29kZSBjaGFuZ2UsIGl0IGxvb2tzIGxpa2UgYSBzdWJ0bGUgYnVnIGhhcyBiZWVuIGFkZHJlc3NlZCBpbiB0aGUgaW50ZXJmYWNlIHRlYXJkb3duIGxvZ2ljLiBUaGUgY3JpdGljYWwgZnVuY3Rpb24gaGVyZSBpcyBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYC4gSSBhbHNvIHdhbnQgdG8ga2VlcCBpbiBtaW5kLCBmb3IgY29tcGxldGVuZXNzLCBgaWVlZTgwMjExX2RvX29wZW5gIGFuZCBgaWVlZTgwMjExX3NkYXRhX3N0b3BgLiBHb29kLCB0aGVzZSBhcmUgYWxsIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCBzbyB0aGV5IGFyZSBnb29kIGNhbmRpZGF0ZXMgdG8gY29uc2lkZXIgZHVyaW5nIGZ1enppbmcuCgpUaGUgb3JpZ2luYWwgY29kZSB3YXMgc2tpcHBpbmcgYSBjYWxsIHRvIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKWAgdW5kZXIgc3BlY2lmaWMgY29uZGl0aW9ucyByZWxhdGVkIHRvIG1vbml0b3IgaW50ZXJmYWNlcyDigJMgc3BlY2lmaWNhbGx5IGlmIHRoZSBgTU9OSVRPUl9GTEFHX0FDVElWRWAgb3IgYE5PX1ZJUlRVQUxfTU9OSVRPUmAgZmxhZ3Mgd2VyZSBzZXQuIFRoaXMgY29uZGl0aW9uYWwgb21pc3Npb24gY291bGQgbGVhZCB0byBtb25pdG9yIGZsYWcgbGVha3MgYW5kIHBvdGVudGlhbCBpbWJhbGFuY2VzLCB3aGljaCBpcyBkZWZpbml0ZWx5IGJhZCBuZXdzLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyBpbiB0aGUgaGVhcnQgb2YgdGhlIG1hYzgwMjExIGludGVyZmFjZSBsb2dpYywgYW5kIHNpbmNlIGl0JiMzOTtzIHJlbGV2YW50IHRvIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBgbWFjODAyMTFfaHdzaW1gLCBmdXp6aW5nIHRoaXMgYXJlYSBpcyBhYnNvbHV0ZWx5IHdvcnRoIHRoZSBlZmZvcnQuIEl0JiMzOTtzIGFuIGFyZWEgSSYjMzk7ZCBkZWZpbml0ZWx5IHdhbnQgdG8gZXhwbG9yZSB3aXRoIGZ1enppbmcuIExldCYjMzk7cyBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz10cnVlYC4KCkxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfZG9fb3BlbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfc2RhdGFfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBtYWM4MDIxMSB3aGVyZSBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSlgIHdhcyBjb25kaXRpb25hbGx5IHNraXBwZWQgZHVyaW5nIG1vbml0b3IgaW50ZXJmYWNlIHRlYXJkb3duLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtYWM4MDIxMSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfZG9fb3BlbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfc2RhdGFfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBtYWM4MDIxMSB3aGVyZSBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSlgIHdhcyBjb25kaXRpb25hbGx5IHNraXBwZWQgZHVyaW5nIG1vbml0b3IgaW50ZXJmYWNlIHRlYXJkb3duLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtYWM4MDIxMSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIGJ5IG1vdmluZyB0aGUgY2FsbCB0byBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCBvdXRzaWRlIG9mIGEgY29uZGl0aW9uYWwgYmxvY2suIFRoaXMgaXMgYSBsb2dpYyBmaXggcmVsYXRlZCB0byBpbnRlcmZhY2Ugc3RhdGUgbWFuYWdlbWVudCBhbmQgbW9uaXRvciBmbGFncyBhZGp1c3RtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyByZXN1bHRpbmcgZnJvbSBpbmNvcnJlY3Qgc3RhdGUgbWFuYWdlbWVudCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gb3Igb3RoZXIgYnVnIGRldGVjdG9ycy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTNlNDZlYjJiOTgzZTlmYjZjZDQzNmEwNzVjMmY0ZDEzNzU2MTQyMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDI1IDA1OjM0OjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2lmYWNlLmMgYi9uZXQvbWFjODAyMTEvaWZhY2UuYwppbmRleCA0MzQ2MGE3MDVhNmJkLi42ZmMwMWQ4NWVlYTliIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvaWZhY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvaWZhY2UuYwpAQCAtNjI5LDkgJiM0Mzs2MjksOSBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfZG9fc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgYm9vbCBnb2luZ19kbwogCQkJCWxvY2FsLSZndDtody5jb25mLmZsYWdzICZhbXA7PSB+SUVFRTgwMjExX0NPTkZfTU9OSVRPUjsKIAkJCQlod19yZWNvbmZfZmxhZ3MgfD0gSUVFRTgwMjExX0NPTkZfQ0hBTkdFX01PTklUT1I7CiAJCQl9Ci0KLQkJCWllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpOwogCQl9CiYjNDM7CiYjNDM7CQlpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKTsKIAkJYnJlYWs7CiAJY2FzZSBOTDgwMjExX0lGVFlQRV9OQU46CiAJCS8qIENoZWNrIGlmIGFueSBvcGVuIE5BTl9EQVRBIGludGVyZmFjZXMgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTUFDODAyMTEgSW50ZXJmYWNlIFN0b3AgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbiBgbmV0L21hYzgwMjExL2lmYWNlLmNgLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBzdG9wcGluZyBhbiBpbnRlcmZhY2UuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIG1vdmluZyB0aGUgY2FsbCB0byBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7YCBvdXQgb2YgdGhlIGNvbmRpdGlvbmFsIGJsb2NrIHdpdGhpbiBgaWVlZTgwMjExX2RvX3N0b3BgLiBMZXQmIzM5O3MgY2xhcmlmeSB0aGUgaW50ZW50LgoKTG9va2luZyBhdCB0aGUgZGlmZiwgaXQgYXBwZWFycyB0aGV5JiMzOTt2ZSB0YWtlbiB0aGUgY2FsbCB0byBhZGp1c3QgdGhlIG1vbml0b3IgZmxhZ3MsIHdoaWNoIHdhcyBwcmV2aW91c2x5IGNvbmRpdGlvbmFsIG9uIHRoZSBgSUVFRTgwMjExX0NPTkZfTU9OSVRPUmAgZmxhZywgYW5kIGFyZSBub3cgYXBwbHlpbmcgaXQgdW5jb25kaXRpb25hbGx5IHdoZW4gYW4gaW50ZXJmYWNlIGlzIHN0b3BwZWQuIFRoaXMgbGlrZWx5IGZpeGVzIGEgbG9naWMgYnVnLiBUaGUgY29tbWVudCBzdWdnZXN0cyB0aGV5IHdlcmUgbm90IHVwZGF0aW5nIHRoZSBtb25pdG9yIGZsYWdzIGNvcnJlY3RseSBmb3IgYWxsIGNhc2VzLgoKVGhlIHF1ZXN0aW9uIG5vdyBpcywgd2hhdCYjMzk7cyB0aGUgcG90ZW50aWFsIGltcGFjdD8gQ291bGQgdGhpcyBpbnRyb2R1Y2Ugc29tZSBzdWJ0bGUgYmVoYXZpb3IgY2hhbmdlPyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUgY291bGQgYmUgc29tZSB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MgcmlzayBkdWUgdG8gdGhlIGNoYW5nZS4gTm8sIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MganVzdCBhZGp1c3Rpbmcgc29tZSBmbGFncy9jb3VudGVycyBiYXNlZCBvbiB0aGUgc3RhdGUuIEl0IHNlZW1zIHRoYXQgaXQgbWFrZXMgc2Vuc2UgdG8gdXBkYXRlIHRoZSBtb25pdG9yIGZsYWdzIGluIGFsbCBjYXNlcyB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgc3RvcHBlZCBhbmQgaXQgbWFrZXMgc2Vuc2UgdG8gZG8gaXQgb3V0c2lkZSBvZiB0aGlzIGNvbmRpdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NgIGp1c3QgdG8gYmUgc3VyZSwgYnV0IG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgYnVnIGZpeC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9OTY9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X21vbl9vcHRpb25zKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0xNDItXHRcdGlmIChpZWVlODAyMTFfc2RhdGFfcnVubmluZyhzZGF0YSkpIHtcbm5ldC9tYWM4MDIxMS9jZmcuYzoxNDM6XHRcdFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMTQ0LVx0XHRcdHNkYXRhLVx1MDAzZXUubW50ci5mbGFncyA9IHBhcmFtcy1cdTAwM2VmbGFncztcbm5ldC9tYWM4MDIxMS9jZmcuYzoxNDU6XHRcdFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAxKTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNDYtXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjE5Mz12b2lkIGllZWU4MDIxMV9yZWNhbGNfaWRsZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCk7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMTk0OnZvaWQgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE5NS1cdFx0XHRcdCAgICBjb25zdCBpbnQgb2Zmc2V0KTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02MzMtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo2MzQ6XHRcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtNjM1LVx0XHRicmVhaztcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xMTU1PXZvaWQgaWVlZTgwMjExX3JlY2FsY19vZmZsb2FkKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTExNzEtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxMTcyOnZvaWQgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTE3My1cdFx0XHRcdCAgICBjb25zdCBpbnQgb2Zmc2V0KVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTEzNjU9aW50IGllZWU4MDIxMV9kb19vcGVuKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIGJvb2wgY29taW5nX3VwKVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE1MDUtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNTA2Olx0XHRpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIDEpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtMTUwNy1cdFx0aWVlZTgwMjExX2NvbmZpZ3VyZV9maWx0ZXIobG9jYWwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjA5CgkJCQkJCQlvdXRwdXQ6IDE2OAoJCQkJCQkJdGhvdWdodHM6IDE2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBjb2RlIGFuZCwgZnJhbmtseSwgSSBkb24mIzM5O3Qgc2VlIGFueXRoaW5nIGhlcmUgdGhhdCBzY3JlYW1zICYjMzQ7S01TQU4gYWxlcnQuJiMzNDsgVGhlIGZ1bmN0aW9uIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NgIGlzIGVzc2VudGlhbGx5IGp1c3QgdHdlYWtpbmcgZmxhZ3MgYW5kIGNvdW50ZXJzLiBObyBldmlkZW5jZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB0b3VjaGVkLCBubyBvYnZpb3VzIGluZm8gbGVha3MsIGFuZCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBiZWluZyBleHBvc2VkLgoKVGhlIGNoYW5nZSBpdHNlbGYg4oCTIG1vdmluZyB0aGUgZnVuY3Rpb24gY2FsbCBvdXQgb2YgdGhhdCBpbm5lciBibG9jayBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIOKAkyBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGxvZ2ljIGZpeC4gSXTigJlzIGFib3V0IGludGVyZmFjZSBzdGF0ZSBtYW5hZ2VtZW50LCBnZXR0aW5nIHRoZSBzZXF1ZW5jaW5nIHJpZ2h0LiBXaGlsZSB0aGVvcmV0aWNhbGx5LCBhbnkgY29kZSBjaGFuZ2UgY2FuICpwb3RlbnRpYWxseSogbGVhZCB0byBhIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgaXNzdWUgaWYgdGhlIHN0YXRlIGlzIG1lc3NlZCB1cCwgdGhhdCYjMzk7cyBub3Qgc3BlY2lmaWNhbGx5IGEgS01TQU4gY29uY2Vybi4gS0FTQU4gYW5kIExPQ0tERVAgbWlnaHQgYmUgcmVsZXZhbnQgKmlmKiB0aGlzIGludHJvZHVjZWQgYSBtb3JlIGNvbXBsZXggYnVnLCBidXQgZm9yIG5vdywgdGhpcyBjaGFuZ2UgaXNuJiMzOTt0IEtNU0FOLXNwZWNpZmljLiBNeSBjb25jbHVzaW9uOiBLTVNBTiBpc24mIzM5O3QgbmVlZGVkIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIGJ5IG1vdmluZyB0aGUgY2FsbCB0byBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCBvdXRzaWRlIG9mIGEgY29uZGl0aW9uYWwgYmxvY2suIFRoaXMgaXMgYSBsb2dpYyBmaXggcmVsYXRlZCB0byBpbnRlcmZhY2Ugc3RhdGUgbWFuYWdlbWVudCBhbmQgbW9uaXRvciBmbGFncyBhZGp1c3RtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyByZXN1bHRpbmcgZnJvbSBpbmNvcnJlY3Qgc3RhdGUgbWFuYWdlbWVudCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gb3Igb3RoZXIgYnVnIGRldGVjdG9ycy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIGJ5IG1vdmluZyB0aGUgY2FsbCB0byBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCBvdXRzaWRlIG9mIGEgY29uZGl0aW9uYWwgYmxvY2suIFRoaXMgaXMgYSBsb2dpYyBmaXggcmVsYXRlZCB0byBpbnRlcmZhY2Ugc3RhdGUgbWFuYWdlbWVudCBhbmQgbW9uaXRvciBmbGFncyBhZGp1c3RtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyByZXN1bHRpbmcgZnJvbSBpbmNvcnJlY3Qgc3RhdGUgbWFuYWdlbWVudCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gb3Igb3RoZXIgYnVnIGRldGVjdG9ycy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzQ6NTAuNTc5NTU1NjI0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NTE2NTcxMzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFnc1wiLFxuICAgIFwiaWVlZTgwMjExX2RvX29wZW5cIixcbiAgICBcImllZWU4MDIxMV9zZGF0YV9zdG9wXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgaW4gYGllZWU4MDIxMV9kb19zdG9wYCBieSBtb3ZpbmcgdGhlIGNhbGwgdG8gYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFnc2Agb3V0c2lkZSBvZiBhIGNvbmRpdGlvbmFsIGJsb2NrLiBUaGlzIGlzIGEgbG9naWMgZml4IHJlbGF0ZWQgdG8gaW50ZXJmYWNlIHN0YXRlIG1hbmFnZW1lbnQgYW5kIG1vbml0b3IgZmxhZ3MgYWRqdXN0bWVudC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBjcmVhdGluZyBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVzdWx0aW5nIGZyb20gaW5jb3JyZWN0IHN0YXRlIG1hbmFnZW1lbnQgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIG9yIG90aGVyIGJ1ZyBkZXRlY3RvcnMuIEEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbWFjODAyMTEgd2hlcmUgYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpYCB3YXMgY29uZGl0aW9uYWxseSBza2lwcGVkIGR1cmluZyBtb25pdG9yIGludGVyZmFjZSB0ZWFyZG93bi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWFjODAyMTEgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYG1hYzgwMjExX2h3c2ltYC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzQ6NTAuNTc5NTYwNDI0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY3ODkwNDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTNlNDZlYjJiOTgzZTlmYjZjZDQzNmEwNzVjMmY0ZDEzNzU2MTQyMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAyNSAwNTozNDo0OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWZhY2UuYyBiL25ldC9tYWM4MDIxMS9pZmFjZS5jXFxuaW5kZXggNDM0NjBhNzA1YTZiZC4uNmZjMDFkODVlZWE5YiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvaWZhY2UuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9pZmFjZS5jXFxuQEAgLTYyOSw5ICs2MjksOSBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfZG9fc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgYm9vbCBnb2luZ19kb1xcbiBcXHRcXHRcXHRcXHRsb2NhbC1cXHUwMDNlaHcuY29uZi5mbGFncyBcXHUwMDI2PSB+SUVFRTgwMjExX0NPTkZfTU9OSVRPUjtcXG4gXFx0XFx0XFx0XFx0aHdfcmVjb25mX2ZsYWdzIHw9IElFRUU4MDIxMV9DT05GX0NIQU5HRV9NT05JVE9SO1xcbiBcXHRcXHRcXHR9XFxuLVxcbi1cXHRcXHRcXHRpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKTtcXG4gXFx0XFx0fVxcbitcXG4rXFx0XFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIE5MODAyMTFfSUZUWVBFX05BTjpcXG4gXFx0XFx0LyogQ2hlY2sgaWYgYW55IG9wZW4gTkFOX0RBVEEgaW50ZXJmYWNlcyAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNDo1MS44NDgwMzQxNTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5NDE3NjkyNzM4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NcIixcbiAgICBcImllZWU4MDIxMV9kb19vcGVuXCIsXG4gICAgXCJpZWVlODAyMTFfc2RhdGFfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG1hYzgwMjExIHdoZXJlIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKWAgd2FzIGNvbmRpdGlvbmFsbHkgc2tpcHBlZCBkdXJpbmcgbW9uaXRvciBpbnRlcmZhY2UgdGVhcmRvd24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1hYzgwMjExIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGBtYWM4MDIxMV9od3NpbWAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEzZTQ2ZWIyYjk4M2U5ZmI2Y2Q0MzZhMDc1YzJmNGQxMzc1NjE0MjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAyNSAwNTozNDo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZmFjZS5jIGIvbmV0L21hYzgwMjExL2lmYWNlLmNcbmluZGV4IDQzNDYwYTcwNWE2YmQuLjZmYzAxZDg1ZWVhOWIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvaWZhY2UuY1xuKysrIGIvbmV0L21hYzgwMjExL2lmYWNlLmNcbkBAIC02MjksOSArNjI5LDkgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG9cbiBcdFx0XHRcdGxvY2FsLVx1MDAzZWh3LmNvbmYuZmxhZ3MgXHUwMDI2PSB+SUVFRTgwMjExX0NPTkZfTU9OSVRPUjtcbiBcdFx0XHRcdGh3X3JlY29uZl9mbGFncyB8PSBJRUVFODAyMTFfQ09ORl9DSEFOR0VfTU9OSVRPUjtcbiBcdFx0XHR9XG4tXG4tXHRcdFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7XG4gXHRcdH1cbitcbitcdFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9OQU46XG4gXHRcdC8qIENoZWNrIGlmIGFueSBvcGVuIE5BTl9EQVRBIGludGVyZmFjZXMgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM0OjUxLjg0ODAzNTY5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDAwNzcxMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgbmV0L21hYzgwMjExL2lmYWNlLmNgIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L21hYzgwMjExL2lmYWNlLmNgLCBhbmQgc3BlY2lmaWNhbGx5IGBpZWVlODAyMTFfZG9fc3RvcGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGF0IHN1Z2dlc3RzIHNvbWV0aGluZyByZWxhdGVkIHRvIGludGVyZmFjZSBzdG9wcGluZywgd2hpY2ggaXMgcHJldHR5IGZ1bmRhbWVudGFsLiBUaGUgbW9kaWZpY2F0aW9uIGlzIGZvY3VzZWQgb24gbW92aW5nIHRoZSBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCBjYWxsLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGF0IGl0J3MgKm1vdmVkIG91dCogb2YgdGhlIGlubmVyIGBpZmAgYmxvY2suIExldCBtZSBwdWxsIHVwIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24gd2l0aGluIGBpZWVlODAyMTFfZG9fc3RvcGAgaXRzZWxmIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgdW5kZXJzdGFuZCB0aGUgb3JpZ2luYWwgcGxhY2VtZW50IG9mIHRoYXQgYGFkanVzdF9tb25pdG9yX2ZsYWdzYCBjYWxsIGFuZCBob3cgdGhpcyBjaGFuZ2UgbWlnaHQgaW1wYWN0IGJlaGF2aW9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyB3aXRoaW4gdGhhdCBpbm5lciBgaWZgIGJsb2NrIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2UuIElzIHRoZXJlIGEgcmFjZSBjb25kaXRpb24gb3IgYSBzcGVjaWZpYyBlZGdlIGNhc2UgdGhleSBhcmUgdHJ5aW5nIHRvIGZpeD8gSSBuZWVkIHRvIGFuYWx5emUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZ3Jhc3AgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIHNoaWZ0LiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgdGhlIGZsYWdzIGFuZCB1bmRlcnN0YW5kIHRoZWlyIGNvbnRleHQgaW4gdGhlIG1vbml0b3IgbW9kZSBzZXR0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDcyLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzQ6NTUuOTQ4MTE1NDYyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjI1MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9kb19zdG9wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9pZmFjZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9pZmFjZS5jPTQ2MT1zdGF0aWMgaW50IGllZWU4MDIxMV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00NzgtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6NDc5OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNDgwLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTg0NT1zdGF0aWMgaW50IGllZWU4MDIxMV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NjctXFxubmV0L21hYzgwMjExL2lmYWNlLmM6ODY4OlxcdGllZWU4MDIxMV9kb19zdG9wKHNkYXRhLCB0cnVlKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NjktXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xOTgwPXN0YXRpYyBpbnQgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIwNDQtXFx0LyogZG9fc3RvcCB3aWxsIHN5bmNocm9uaXplX3JjdSgpIGZpcnN0IHRoaW5nICovXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MjA0NTpcXHRpZWVlODAyMTFfZG9fc3RvcChzZGF0YSwgZmFsc2UpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIwNDYtXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0yNDQwPXZvaWQgaWVlZTgwMjExX3NkYXRhX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yNDQzLVxcdFxcdHJldHVybjtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyNDQ0OlxcdGllZWU4MDIxMV9kb19zdG9wKHNkYXRhLCB0cnVlKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yNDQ1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzQ6NTUuOTkxNzQzMDYxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzMDQ5OTM0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgaWVlZTgwMjExX2RvX3N0b3BgIE1vZGlmaWNhdGlvbioqXG5cbkFscmlnaHQsIHNvIGEgcGF0Y2ggaGFzIGxhbmRlZCB0aGF0J3MgdHdlYWtpbmcgdGhlIGhhbmRsaW5nIG9mIGBOTDgwMjExX0lGVFlQRV9NT05JVE9SYCAob3Igc29tZXRoaW5nIGFuYWxvZ291cykgd2l0aGluIHRoZSBgaWVlZTgwMjExX2RvX3N0b3BgIGZ1bmN0aW9uLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBcIk9rYXksIGludGVyZXN0aW5nLiBMZXQncyBkaWcgaW50byB0aGlzLlwiIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgY2hhbmdlIHdhcyBtYWRlLiBXaGF0IHdhcyB0aGUgcmF0aW9uYWxlPyBXaGF0IHNwZWNpZmljIHByb2JsZW0gb3IgbGltaXRhdGlvbiBpbiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24gcHJvbXB0ZWQgdGhpcyBtb2RpZmljYXRpb24/IEJlZm9yZSBJIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhlIGNvZGUgaXRzZWxmLCBJIHdhbnQgdG8gZXN0YWJsaXNoIHRoZSAqY29udGV4dCouIFRoaXMgbWVhbnMgSSdsbCBiZSBsb29raW5nIGZvciB0aGUgc3Vycm91bmRpbmcgY29kZSwgdGhlIGNvbW1pdCBtZXNzYWdlLCB0aGUgYnVnIHJlcG9ydCAoaWYgdGhlcmUgaXMgb25lKSwgYW55dGhpbmcgdGhhdCBoZWxwcyBzaGVkIGxpZ2h0IG9uIHRoZSBkZXNpZ24gZGVjaXNpb24uIFRoaXMgaXMgaG93IEknbGwgZW5zdXJlIHRoaXMgY2hhbmdlIGlzIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjMsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNDo1OS41MjIyNDU1OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvaWZhY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2MTA6XFx0XFx0aWYgKGdvaW5nX2Rvd24pXFxuIDYxMTpcXHRcXHRcXHRsb2NhbC1cXHUwMDNlb3Blbl9jb3VudC0tO1xcbiA2MTI6XFx0XFxuIDYxMzpcXHRcXHRzd2l0Y2ggKHNkYXRhLVxcdTAwM2V2aWYudHlwZSkge1xcbiA2MTQ6XFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbiA2MTU6XFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNnNkYXRhLVxcdTAwM2V1LnZsYW4ubGlzdCk7XFxuIDYxNjpcXHRcXHRcXHRSQ1VfSU5JVF9QT0lOVEVSKHNkYXRhLVxcdTAwM2V2aWYuYnNzX2NvbmYuY2hhbmN0eF9jb25mLCBOVUxMKTtcXG4gNjE3OlxcdFxcdFxcdC8qIHNlZSBjb21tZW50IGluIHRoZSBkZWZhdWx0IGNhc2UgYmVsb3cgKi9cXG4gNjE4OlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX2tleXMoc2RhdGEsIHRydWUpO1xcbiA2MTk6XFx0XFx0XFx0Lyogbm8gbmVlZCB0byB0ZWxsIGRyaXZlciAqL1xcbiA2MjA6XFx0XFx0XFx0YnJlYWs7XFxuIDYyMTpcXHRcXHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XFxuIDYyMjpcXHRcXHRcXHRsb2NhbC1cXHUwMDNlbW9uaXRvcnMtLTtcXG4gNjIzOlxcdFxcbiA2MjQ6XFx0XFx0XFx0aWYgKCEoc2RhdGEtXFx1MDAzZXUubW50ci5mbGFncyBcXHUwMDI2IE1PTklUT1JfRkxBR19BQ1RJVkUpIFxcdTAwMjZcXHUwMDI2XFxuIDYyNTpcXHRcXHRcXHQgICAgIWllZWU4MDIxMV9od19jaGVjayhcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBOT19WSVJUVUFMX01PTklUT1IpKSB7XFxuIDYyNjpcXHRcXG4gNjI3OlxcdFxcdFxcdFxcdGxvY2FsLVxcdTAwM2V2aXJ0X21vbml0b3JzLS07XFxuIDYyODpcXHRcXHRcXHRcXHRpZiAobG9jYWwtXFx1MDAzZXZpcnRfbW9uaXRvcnMgPT0gMCkge1xcbiA2Mjk6XFx0XFx0XFx0XFx0XFx0bG9jYWwtXFx1MDAzZWh3LmNvbmYuZmxhZ3MgXFx1MDAyNj0gfklFRUU4MDIxMV9DT05GX01PTklUT1I7XFxuIDYzMDpcXHRcXHRcXHRcXHRcXHRod19yZWNvbmZfZmxhZ3MgfD0gSUVFRTgwMjExX0NPTkZfQ0hBTkdFX01PTklUT1I7XFxuIDYzMTpcXHRcXHRcXHRcXHR9XFxuIDYzMjpcXHRcXHRcXHR9XFxuIDYzMzpcXHRcXG4gNjM0OlxcdFxcdFxcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xcbiA2MzU6XFx0XFx0XFx0YnJlYWs7XFxuIDYzNjpcXHRcXHRjYXNlIE5MODAyMTFfSUZUWVBFX05BTjpcXG4gNjM3OlxcdFxcdFxcdC8qIENoZWNrIGlmIGFueSBvcGVuIE5BTl9EQVRBIGludGVyZmFjZXMgKi9cXG4gNjM4OlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXRlciwgXFx1MDAyNmxvY2FsLVxcdTAwM2VpbnRlcmZhY2VzLCBsaXN0KSB7XFxuIDYzOTpcXHRcXHRcXHRcXHRXQVJOX09OKGl0ZXItXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX05BTl9EQVRBIFxcdTAwMjZcXHUwMDI2XFxuIDY0MDpcXHRcXHRcXHRcXHRcXHRpZWVlODAyMTFfc2RhdGFfcnVubmluZyhpdGVyKSk7XFxuIDY0MTpcXHRcXHRcXHR9XFxuIDY0MjpcXHRcXG4gNjQzOlxcdFxcdFxcdC8qIGNsZWFuIGFsbCB0aGUgZnVuY3Rpb25zICovXFxuIDY0NDpcXHRcXHRcXHRpZiAoIShsb2NhbC1cXHUwMDNlaHcud2lwaHktXFx1MDAzZW5hbl9jYXBhLmZsYWdzIFxcdTAwMjZcXG4gNjQ1OlxcdFxcdFxcdCAgICAgIFdJUEhZX05BTl9GTEFHU19VU0VSU1BBQ0VfREUpKSB7XFxuIDY0NjpcXHRcXHRcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnNkYXRhLVxcdTAwM2V1Lm5hbi5kZS5mdW5jX2xvY2spO1xcbiA2NDc6XFx0XFxuIDY0ODpcXHRcXHRcXHRcXHRpZHJfZm9yX2VhY2hfZW50cnkoXFx1MDAyNnNkYXRhLVxcdTAwM2V1Lm5hbi5kZS5mdW5jdGlvbl9pbnN0X2lkcyxcXG4gNjQ5OlxcdFxcdFxcdFxcdFxcdFxcdCAgIGZ1bmMsIGkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzQ6NTkuNTIyNDUwMzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTAxNDYyODg0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1hYzgwMjExIE1vbml0b3IgTW9kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgY2hhbmdlIGNlbnRlcnMgYXJvdW5kIHRoZSBgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUmAgY2FzZSB3aXRoaW4gYGllZWU4MDIxMV9kb19zdG9wYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY29uZmlybSB3aGVyZSB0aGUgY29kZSAqdXNlZCogdG8gYmUuIFRoZSBkaWZmIHNob3dzIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKTtgIHdhcyAqaW5zaWRlKiBhbiBgaWZgIGJsb2NrLCBidXQgbm93IGl0J3MgKm91dHNpZGUqLlxuXG5Ib3dldmVyLCBob2xkIG9uIGEgc2Vjb25kLiBBZnRlciBjaGVja2luZyB0aGUgYHJlYWQtZmlsZWAgY29udGV4dCwgaXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggKmhhcyogYWxyZWFkeSBiZWVuIGFwcGxpZWQgdG8gdGhlIGNvZGUgaW4gdGhpcyB3b3Jrc3BhY2UuIFRoYXQgbWVhbnMgdGhlIGRpZmYgaXMgc2hvd2luZyB0aGUgKmN1cnJlbnQqIHN0YXRlLiBUaGVyZWZvcmUsIEkgY29ycmVjdGx5IHJlY2FsbCB0aGF0IHRoZSBjb2RlIHdhcyAqcHJldmlvdXNseSogb25seSBiZWluZyBjYWxsZWQgaW4gY2VydGFpbiBjYXNlcywgc3BlY2lmaWNhbGx5IGAhKHNkYXRhLVx1MDAzZXUubW50ci5mbGFncyBcdTAwMjYgTU9OSVRPUl9GTEFHX0FDVElWRSkgXHUwMDI2XHUwMDI2ICFpZWVlODAyMTFfaHdfY2hlY2soXHUwMDI2bG9jYWwtXHUwMDNlaHcsIE5PX1ZJUlRVQUxfTU9OSVRPUilgLlxuXG5UaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IG1hYzgwMjExIGhhbmRsZXMgbW9uaXRvciBtb2RlLCBhbmQgdGhhdCBjb3VsZCBlYXNpbHkgYmUgdHJpZ2dlcmVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBtYWM4MDIxMV9od3NpbS4gVGhlcmVmb3JlLCBJJ20gbWFya2luZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcG9ydGFudCBlbnRyeSBwb2ludHMuIFRoZSBmdW5jdGlvbiBkaXJlY3RseSBtb2RpZmllZCBpcyBgaWVlZTgwMjExX2RvX3N0b3BgLCBidXQgaXQncyBgc3RhdGljYCwgc28gSSBuZWVkIHRvIGZpbmQgaXRzIGNhbGxlcnMuIEl0IGlzIGNhbGxlZCBieSBgaWVlZTgwMjExX3N0b3BgLCBgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZWAsIGFuZCBgaWVlZTgwMjExX3NkYXRhX3N0b3BgLiBJIG5lZWQgdG8gY2hlY2sgd2hldGhlciBgaWVlZTgwMjExX3N0b3BgIGlzIGBzdGF0aWNgIGFuZCB0aGVuIEknbGwgbG9vayBmb3Igd2hhdCBjYWxscyBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA0OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNToxMC41MzcxMDQyNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzM1Nzk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfc3RvcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvaWZhY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc3My1cXHRpZiAobG9jYWwtXFx1MDAzZW9wZW5fY291bnQgPT0gMCkge1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjc3NDpcXHRcXHRpZWVlODAyMTFfc3RvcF9kZXZpY2UobG9jYWwsIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03NzUtXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03ODgtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6Nzg5OnZvaWQgaWVlZTgwMjExX3N0b3BfbWJzc2lkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc5MC17XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NDQtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6ODQ1OnN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NDYte1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtODY1LVxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApXFxubmV0L21hYzgwMjExL2lmYWNlLmM6ODY2OlxcdFxcdGllZWU4MDIxMV9zdG9wX21ic3NpZChzZGF0YSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtODY3LVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9OTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWVlZTgwMjExX2RhdGFpZl9vcHMgPSB7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTQyLVxcdC5uZG9fb3BlblxcdFxcdD0gaWVlZTgwMjExX29wZW4sXFxubmV0L21hYzgwMjExL2lmYWNlLmM6OTQzOlxcdC5uZG9fc3RvcFxcdFxcdD0gaWVlZTgwMjExX3N0b3AsXFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTQ0LVxcdC5uZG9fdW5pbml0XFx0XFx0PSBpZWVlODAyMTFfdW5pbml0LFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9OTc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWVlZTgwMjExX21vbml0b3JpZl9vcHMgPSB7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTgwLVxcdC5uZG9fb3BlblxcdFxcdD0gaWVlZTgwMjExX29wZW4sXFxubmV0L21hYzgwMjExL2lmYWNlLmM6OTgxOlxcdC5uZG9fc3RvcFxcdFxcdD0gaWVlZTgwMjExX3N0b3AsXFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTgyLVxcdC5uZG9fdW5pbml0XFx0XFx0PSBpZWVlODAyMTFfdW5pbml0LFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MTA0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGllZWU4MDIxMV9kYXRhaWZfODAyM19vcHMgPSB7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTA0OC1cXHQubmRvX29wZW5cXHRcXHQ9IGllZWU4MDIxMV9vcGVuLFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjEwNDk6XFx0Lm5kb19zdG9wXFx0XFx0PSBpZWVlODAyMTFfc3RvcCxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMDUwLVxcdC5uZG9fdW5pbml0XFx0XFx0PSBpZWVlODAyMTFfdW5pbml0LFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MTYyNj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfaWZhY2VfcHJvY2Vzc19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNzU1LVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE3NTY6XFx0XFx0XFx0X19pZWVlODAyMTFfc3RvcF9yeF9iYV9zZXNzaW9uKFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE3NTctXFx0XFx0XFx0XFx0c3RhLCB0aWQsIFdMQU5fQkFDS19SRUNJUElFTlQsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xOTgwPXN0YXRpYyBpbnQgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIwNDEtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MjA0MjpcXHRpZWVlODAyMTFfc3RvcF92aWZfcXVldWVzKGxvY2FsLCBzZGF0YSxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMDQzLVxcdFxcdFxcdFxcdCAgSUVFRTgwMjExX1FVRVVFX1NUT1BfUkVBU09OX0lGVFlQRV9DSEFOR0UpO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MjU1MT12b2lkIGllZWU4MDIxMV92aWZfYmxvY2tfcXVldWVzX2NzYShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI1NTctXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MjU1ODpcXHRpZWVlODAyMTFfc3RvcF92aWZfcXVldWVzX25vcmVmY291bnQobG9jYWwsIHNkYXRhLFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI1NTktXFx0XFx0XFx0XFx0XFx0ICAgICBJRUVFODAyMTFfUVVFVUVfU1RPUF9SRUFTT05fQ1NBKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzU6MTAuNTgwNDY1NzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTA1ODgzMTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGllZWU4MDIxMV9zdG9wYCBGdW5jdGlvbiBhbmQgUmVsYXRlZCBDYWxscyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBpZWVlODAyMTFfc3RvcGAuIFJpZ2h0LCB0aGF0J3MgdGhlIGAubmRvX3N0b3BgIGNhbGxiYWNrIGZvciBtYWM4MDIxMSBpbnRlcmZhY2VzLCBnb3QgaXQuIEhvbGQgb24sIHRoZSBwYXRjaCBJJ20gZXhhbWluaW5nICphbHNvKiB0b3VjaGVzIGBpZWVlODAyMTFfZG9fc3RvcGAuIEhtbSwgdGhhdCdzIGEgYml0IG9mIGEgcmVkIGZsYWcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBmdW5jdGlvbnMsIGFuZCBzcGVjaWZpY2FsbHksIHdoYXQgZWxzZSBtaWdodCBiZSBjYWxsaW5nIGBpZWVlODAyMTFfZG9fc3RvcGAuIFRoZSBnb2FsIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLiBTaW5jZSBgaWVlZTgwMjExX2RvX3N0b3BgIGlzbid0IHN0YXRpYywgSSBuZWVkIHRvIG1ldGhvZGljYWxseSBjaGVjayBpdHMgY2FsbGVycyB0byBlbnN1cmUgSSBkb24ndCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gc2lkZSBlZmZlY3RzLiBPa2F5LCBgaWVlZTgwMjExX3NkYXRhX3N0b3BgIGlzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IG1pZ2h0IGNhbGwgaXQsIEknbGwgbmVlZCB0byBmb2xsb3cgdGhhdCBsb2dpYyB0byB2ZXJpZnkgdGhlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4OTAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzU6MTQuNDg2MzUwNzkyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzIyNjM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfc2RhdGFfc3RvcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz0zMjE9c3RhdGljIHZvaWQgaWVlZTgwMjExX3N0b3BfcDJwX2RldmljZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTMyMy17XFxubmV0L21hYzgwMjExL2NmZy5jOjMyNDpcXHRpZWVlODAyMTFfc2RhdGFfc3RvcChJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2RldikpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zMjUtfVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTMzND1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc3RvcF9uYW4oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNDYtXFxubmV0L21hYzgwMjExL2NmZy5jOjM0NzpcXHRpZWVlODAyMTFfc2RhdGFfc3RvcChzZGF0YSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTM0OC1cXHRpZWVlODAyMTFfcmVjYWxjX2lkbGUoc2RhdGEtXFx1MDAzZWxvY2FsKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz00MDk9c3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfbmFuKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDMwLVxcdGlmIChyZXQpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDMxOlxcdFxcdGllZWU4MDIxMV9zZGF0YV9zdG9wKHNkYXRhKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDMyLVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMTk2PWludCBpZWVlODAyMTFfZG9fb3BlbihzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCBib29sIGNvbWluZ191cCk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjE5Nzp2b2lkIGllZWU4MDIxMV9zZGF0YV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMTk4LWludCBpZWVlODAyMTFfYWRkX3ZpcnR1YWxfbW9uaXRvcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTI0MTQ9dm9pZCBpZWVlODAyMTFfaWZfcmVtb3ZlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjQzOS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyNDQwOnZvaWQgaWVlZTgwMjExX3NkYXRhX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjQ0MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM1OjE0LjUyOTU4MTUxMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDM1MjkzMTE3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgbWFjODAyMTEgSW50ZXJmYWNlIFNodXRkb3duIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBtYWM4MDIxMSdzIGludGVyZmFjZSBzaHV0ZG93biBwcm9jZXNzIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLiBJbml0aWFsbHksIEkgd2FzIGxvb2tpbmcgYXQgYGllZWU4MDIxMV9zdG9wYCBiZWNhdXNlIGl0IHNlZW1zIGxpa2UgYSBsaWtlbHkgY2FuZGlkYXRlIGZvciBzdG9wcGluZyBhIGRldmljZS4gSXQncyB1c2VkIHdoZW4gYW4gaW50ZXJmYWNlIGlzIGJyb3VnaHQgZG93biwgYnV0IGl0J3Mgc3RhdGljLCB3aGljaCBpcyBhIHBvdGVudGlhbCBwcm9ibGVtIGJlY2F1c2UgdGhlIGNvbXBpbGVyIGNvdWxkIGlubGluZSBpdCwgYW5kIHRoYXQgd291bGQgcHJldmVudCBtZSBmcm9tIHRhcmdldGluZyBpdCBkaXJlY3RseSB3aXRoIHN5emthbGxlci5cblxuSSBoYWQgY29uc2lkZXJlZCBgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZWAgd2hpY2ggaXMgYWxzbyBzdGF0aWMuIEkgYWxzbyBsb29rZWQgYXQgYGllZWU4MDIxMV9zZGF0YV9zdG9wYCwgd2hpY2ggaXMgbm9uLXN0YXRpYywgYnV0IGl0IGFwcGVhcnMgdG8gYmUgcHJpbWFyaWx5IHVzZWQgZnJvbSB3aXRoaW4gYGNmZy5jYCBmb3Igc3BlY2lmaWMgY2FzZXMuIEkgc2VlIGBpZWVlODAyMTFfc3RvcGAgaXMgYWN0dWFsbHkgYXNzaWduZWQgdG8gYC5uZG9fc3RvcGAsIHdoaWNoIG1lYW5zIGl0cyBhZGRyZXNzIGlzIHRha2VuLCBzbyBpdCdzICpub3QqIGlubGluZWQsIGRlc3BpdGUgYmVpbmcgc3RhdGljLiBUaGUgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgc3RhdGUgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhhdCBtYWtlcyBgaWVlZTgwMjExX3N0b3BgIHNvbWV3aGF0IGF0dHJhY3RpdmUsIGFzIHN5emthbGxlciBjYW4gZGVhbCB3aXRoIHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSBhcmVuJ3QgaW5saW5lZCwgYnV0IEkgd2FudCB0byBiZSBzYWZlLlxuXG5Ib3dldmVyLCBJIGNvbmZpcm1lZCB0aGF0IGBpZWVlODAyMTFfc3RvcGAgaXNuJ3QgZXhwb3J0ZWQsIHdoaWNoIGlzIGxlc3MgaWRlYWwuIEkgYWxzbyBjaGVja2VkIGBpZWVlODAyMTFfaWZfcmVtb3ZlYCBidXQgaXQgZG9lc24ndCBjYWxsIGBpZWVlODAyMTFfc2RhdGFfc3RvcGAuXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IGJyb2FkZXIgZW50cnkgcG9pbnRzLiBJZiBJJ20gY29uc2lkZXJpbmcgaW50ZXJmYWNlICpzaHV0ZG93biosIHRoZSBjYWxscyBpbiBgbmV0L2NvcmUvZGV2LmNgIHN1Y2ggYXMgYGRldl9jbG9zZWAgYW5kIGBfX2Rldl9jbG9zZV9tYW55YCBzZWVtIHJlbGV2YW50LCBhcyBhcmUgZnVuY3Rpb25zIHVzZWQgaW4gbWFjODAyMTEgdG8gbWFuYWdlIGludGVyZmFjZXMuIEknbGwgbmVlZCB0byBjaGVjayBmdW5jdGlvbnMgbGlrZSBgbWFjODAyMTFfZGVsX2ludGVyZmFjZWAgdG8gZmluZCBhIG5vbi1zdGF0aWMgZW50cnkgcG9pbnQgdG8gdGhlIG1hYzgwMjExIHN0b3Agc2VxdWVuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NzQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzU6MjQuODgyNTE1MzIzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTA0NzA0NDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hYzgwMjExX2RlbF9pbnRlcmZhY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzU6MjUuMDMyOTkyNjIxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Nzg0OTA5NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW50ZXJmYWNlIERlbGV0aW9uIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmZhY2UgZGVsZXRpb24gcHJvY2Vzcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIGBjZmcuY2AuIFRoYXQncyB0eXBpY2FsbHkgd2hlcmUgdGhlc2Ugc29ydHMgb2YgaW50ZXJmYWNlIG1hbmFnZW1lbnQgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIG9yIGF0IGxlYXN0IHJlZmVyZW5jZWQuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGFjdHVhbCBsb2dpYyBvciBhdCBsZWFzdCBwb2ludGVycyB0byBpdCB3aXRoaW4gdGhhdCBmaWxlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGZ1bmN0aW9uIGNhbGxzIHJlbGF0ZWQgdG8gaW50ZXJmYWNlIHRlYXJkb3duLCByZW1vdmFsIGZyb20gY29uZmlndXJhdGlvbiwgYW5kIGxpa2VseSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUga2VybmVsIG5ldHdvcmtpbmcgc3RhY2suIExldCdzIHNlZSB3aGF0IGBjZmcuY2AgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTEzNSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM1OjI4LjkxMTQ4NTYxNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUzOTU0MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVsX3ZpcnR1YWxfaW50ZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz01OTc2PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTk3Ny1cXHQuYWRkX3ZpcnR1YWxfaW50ZiA9IGllZWU4MDIxMV9hZGRfaWZhY2UsXFxubmV0L21hYzgwMjExL2NmZy5jOjU5Nzg6XFx0LmRlbF92aXJ0dWFsX2ludGYgPSBpZWVlODAyMTFfZGVsX2lmYWNlLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy01OTc5LVxcdC5jaGFuZ2VfdmlydHVhbF9pbnRmID0gaWVlZTgwMjExX2NoYW5nZV9pZmFjZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzU6MjguOTU2ODg0NzEzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NzY5NDkwNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91J3ZlIGRlc2NyaWJlZDpcblxuKipEZWx2aW5nIGludG8gYGllZWU4MDIxMV9kZWxfaWZhY2VgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGllZWU4MDIxMV9kZWxfaWZhY2VgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgaGFwcGVucyBoZXJlIHdoZW4gYSB3aXJlbGVzcyBpbnRlcmZhY2UgZ2V0cyBkZWxldGVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCdzIHRoZSBzZXF1ZW5jZT8gV2hhdCBhcmUgdGhlIGNyaXRpY2FsIHJlc291cmNlcyBiZWluZyBmcmVlZD8gV2XigJlyZSB0YWxraW5nIGFib3V0IGZyZWVpbmcgdXAgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBhIHdpcmVsZXNzIGludGVyZmFjZSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBhc3NvY2lhdGVkIG1lbW9yeSwgbmV0d29yayBxdWV1ZXMsIHBvdGVudGlhbCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgYW5kIGFueSByZWdpc3RlcmVkIGhhbmRsZXJzIG9yIGNhbGxiYWNrcy5cblxuSSdtIG1lbnRhbGx5IHN0ZXBwaW5nIHRocm91Z2ggYSBsaWtlbHkgc2NlbmFyaW86IHRoZSBpbnRlcmZhY2UgaXMgYmVpbmcgc2h1dCBkb3duIG9yIHJlbW92ZWQgZW50aXJlbHkuIFRoZXJlZm9yZSwgSSBleHBlY3QgdGhlcmXigJlsbCBiZSBhIGNsZWFuLXVwIG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMgSSBrbm93IGFyZSBsaW5rZWQgdG8gaXQsIGxpa2UgdGhlIGBpZWVlODAyMTFfdmlmYCBzdHJ1Y3R1cmUsIGFueSBhc3NvY2lhdGVkIHZpcnR1YWwgaW50ZXJmYWNlcyAoVkxBTnMgb3IgdmlydHVhbCBBUHMpLCBhbmQgcHJvYmFibHkgYW55dGhpbmcgaW4gdGhlIGRyaXZlcidzIHByaXZhdGUgZGF0YSB0aGF0IGl0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGludGVyZmFjZS4gSSBoYXZlIHRvIHRoaW5rIGFib3V0IHRoZSBkaWZmZXJlbnQgc2NlbmFyaW9z4oCUIHdoYXQgaGFwcGVucyBpZiBpdCdzIGEgc3RhdGlvbiBpbnRlcmZhY2UsIGFuIEFQIGludGVyZmFjZSwgYSBtb25pdG9yIGludGVyZmFjZT8gVGhvc2Ugc2hvdWxkIGFsbCBiZSBoYW5kbGVkIGNsZWFubHkuXG5cbkknbSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgZm9yIHJhY2UgY29uZGl0aW9ucy4gSWYgdGhlcmUgYXJlIGFueSB0aHJlYWRzIG9yIHByb2Nlc3NlcyBzdGlsbCBhY2Nlc3NpbmcgdGhpcyBpbnRlcmZhY2UsIGhvdyBpcyB0aGF0IHN5bmNocm9uaXplZD8gQXJlIG11dGV4ZXMgb3IgcmVmZXJlbmNlIGNvdW50cyBjb3JyZWN0bHkgdXNlZCB0byBwcmV2ZW50IGRvdWJsZS1mcmVlcyBvciB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb25zPyBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgdHJpY2t5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgcm9jayBzb2xpZC5cblxuQW5kIHdoYXQgYWJvdXQgaGFyZHdhcmU/IFRoaXMgZnVuY3Rpb24gcHJvYmFibHkgYWxzbyBuZWVkcyB0byB0ZWxsIHRoZSBoYXJkd2FyZSB0byBzdG9wIHRyYW5zbWl0dGluZyBhbmQgcmVjZWl2aW5nIG9uIHRoYXQgaW50ZXJmYWNlLiBJJ20gZXhwZWN0aW5nIHNvbWUgcmVnaXN0ZXIgd3JpdGVzLCBtYXliZSBzb21lIERNQSBzZXR1cCB0byBiZSBjbGVhcmVkLCBhbmQgbGlrZWx5IHNvbWUgaW50ZXJydXB0IGRpc2FibGUgbG9naWMgdG8gYXZvaWQgYW55IGZ1cnRoZXIgaW50ZXJmZXJlbmNlLiBGaW5hbGx5LCB0aGUgZnVuY3Rpb24gbXVzdCB1cGRhdGUgYW55IG1hc3RlciBzdHJ1Y3R1cmVzIChlLmcuIHRoZSBsaXN0IG9mIGFsbCBjb25maWd1cmVkIHdpcmVsZXNzIGludGVyZmFjZXMpLCB0byBlbnN1cmUgdGhlIHN5c3RlbSBpcyBpbiBhIGNvbnNpc3RlbnQgc3RhdGUgYW5kIG5vIHN0cmF5IHBvaW50ZXJzIGFyZSBsZWZ0IGRhbmdsaW5nLlxuXG5JIGFsc28gaGF2ZSB0byBzZWUgaG93IGl0IGhhbmRsZXMgZXJyb3JzLiBJZiBhbnkgc3RlcCBvZiB0aGUgZGVsZXRpb24gcHJvY2VzcyBmYWlscywgd2hhdCdzIHRoZSByZWNvdmVyeSBwYXRoPyBEb2VzIGl0IGF0dGVtcHQgdG8gcm9sbCBiYWNrIGFueSBjaGFuZ2VzPyBEb2VzIGl0IGxvZyBlcnJvcnMgcHJvcGVybHk/IEFuZCBkb2VzIGl0IGhhdmUgYW55IGltcGFjdCBvbiB0aGUgb3BlcmF0aW9uIG9mIGFueSBvdGhlciB3aXJlbGVzcyBpbnRlcmZhY2VzP1xuXG5Fc3NlbnRpYWxseSwgSSBuZWVkIHRvIHNlZSBob3cgcm9idXN0IGFuZCByZWxpYWJsZSB0aGlzIHJvdXRpbmUgaXMuIEknbSBsb29raW5nIGZvciBhIGdyYWNlZnVsIGFuZCB0aG9yb3VnaCBjbGVhbnVwLCBwcmV2ZW50aW5nIG1lbW9yeSBsZWFrcywgYW5kIHByZXNlcnZpbmcgdGhlIGludGVncml0eSBvZiB0aGUgd2lyZWxlc3Mgc3RhY2suIExldCdzIHNlZSBob3cgd2VsbCBpdCdzIGltcGxlbWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDg0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzU6MzMuNjMzODM2MDYzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY4MzcxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfZGVsX2lmYWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTIwNj1zdGF0aWMgc3RydWN0IHdpcmVsZXNzX2RldiAqaWVlZTgwMjExX2FkZF9pZmFjZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI1MS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjUyOnN0YXRpYyBpbnQgaWVlZTgwMjExX2RlbF9pZmFjZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNTMte1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTU5NzY9Y29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyBtYWM4MDIxMV9jb25maWdfb3BzID0ge1xcbm5ldC9tYWM4MDIxMS9jZmcuYy01OTc3LVxcdC5hZGRfdmlydHVhbF9pbnRmID0gaWVlZTgwMjExX2FkZF9pZmFjZSxcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTk3ODpcXHQuZGVsX3ZpcnR1YWxfaW50ZiA9IGllZWU4MDIxMV9kZWxfaWZhY2UsXFxubmV0L21hYzgwMjExL2NmZy5jLTU5NzktXFx0LmNoYW5nZV92aXJ0dWFsX2ludGYgPSBpZWVlODAyMTFfY2hhbmdlX2lmYWNlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNTozMy42Nzg1MjIxOTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI0NDIzMzk4NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBGdW5jdGlvbiBTY29wZSBpbiB0aGUgSUVFRSA4MDIuMTEgU3Vic3lzdGVtKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIElFRUUgODAyLjExIGNvZGUsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGhvdyB3ZSdyZSBtYW5hZ2luZyBpbnRlcmZhY2VzIGFuZCB0aGVpciBsaWZlY3ljbGUuIEkgbm90aWNlZCBgaWVlZTgwMjExX2RlbF9pZmFjZWAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBzY29wZSBhbmQgcG90ZW50aWFsIHZpc2liaWxpdHkgaXNzdWVzIGZvciBleHRlcm5hbCBjYWxscyBvciBleHRlbnNpb25zLiBCdXQgdGhlbiwgaGFuZyBvbi4uLiBgaWVlZTgwMjExX3NkYXRhX3N0b3BgICppc24ndCogYHN0YXRpY2AuIFRoYXQncyBhIHBvaW50IG9mIGNvbnRyYXN0IGFuZCBtYWtlcyBtZSB0aGluayB0aGVyZSBtaWdodCBiZSBhIGRlc2lnbiBwcmluY2lwbGUgYXQgcGxheSBoZXJlLlxuXG5Ob3csIG15IG1pbmQgc2hpZnRzIHRvIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQgbWUgcXVpY2tseSBjaGVjayBgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZWAuIEFoLCBhbm90aGVyIGBzdGF0aWNgIG9uZS4gVGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IGJlY29tZXM6IGFyZSB0aGVyZSAqYW55KiBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBtb2R1bGUgdGhhdCBjb3VsZCBiZSB1dGlsaXplZCBpbiBhbHRlcm5hdGl2ZSBjb2RlIHBhdGhzLCBvciBpbiBleHRlbmRpbmcgY3VycmVudCBiZWhhdmlvcj8gVGhpcyBzZWVtcyBsaWtlIGFuIGludGVyZXN0aW5nIHBvaW50IGZvciByZWZhY3RvcmluZywgb3IgYSByZXZpZXcuIExldCdzIHNlZS4uLiB3aGF0IGFib3V0IGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NgPyBUaGlzIG5lZWRzIGEgbW9yZSBjYXJlZnVsIGxvb2ssIG1pZ2h0IGJlIGEgZ29vZCBjYW5kaWRhdGUgaWYgd2UncmUgbG9va2luZyB0byBtb2RpZnkgbW9uaXRvciBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM3NSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNTo1Ni4xMjA4NjQyNDZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTY3MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFnc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz05Nj1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfbW9uX29wdGlvbnMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTQyLVxcdFxcdGlmIChpZWVlODAyMTFfc2RhdGFfcnVubmluZyhzZGF0YSkpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MTQzOlxcdFxcdFxcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNDQtXFx0XFx0XFx0c2RhdGEtXFx1MDAzZXUubW50ci5mbGFncyA9IHBhcmFtcy1cXHUwMDNlZmxhZ3M7XFxubmV0L21hYzgwMjExL2NmZy5jOjE0NTpcXHRcXHRcXHRpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIDEpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNDYtXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMTkzPXZvaWQgaWVlZTgwMjExX3JlY2FsY19pZGxlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMTk0OnZvaWQgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxOTUtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IGludCBvZmZzZXQpO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9NDc5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02MzMtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6NjM0OlxcdFxcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYzNS1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTExNTU9dm9pZCBpZWVlODAyMTFfcmVjYWxjX29mZmxvYWQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMTcxLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjExNzI6dm9pZCBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTE3My1cXHRcXHRcXHRcXHQgICAgY29uc3QgaW50IG9mZnNldClcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTEzNjU9aW50IGllZWU4MDIxMV9kb19vcGVuKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIGJvb2wgY29taW5nX3VwKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTUwNS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNTA2OlxcdFxcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgMSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTUwNy1cXHRcXHRpZWVlODAyMTFfY29uZmlndXJlX2ZpbHRlcihsb2NhbCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM1OjU2LjE2NjgzMzk2NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTM2MzI1MDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzIFN5bWJvbCBDb25maXJtYXRpb24gYW5kIEtjb25maWcgRGVwZW5kZW5jeSBDaGVjayoqXG5cbk9rYXksIHNvIEkndmUganVzdCBjb25maXJtZWQgc29tZXRoaW5nIGltcG9ydGFudCBhYm91dCB0aGlzIHNldCBvZiBmdW5jdGlvbnMuIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NgLCBgaWVlZTgwMjExX2RvX29wZW5gLCBhbmQgYGllZWU4MDIxMV9zZGF0YV9zdG9wYCBhcmUgKm5vdCogZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgbWVhbnMgdGhleSdyZSBhY2Nlc3NpYmxlIG91dHNpZGUgb2YgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtLCB0aGlzIG1ha2VzIHRoZW0gcGVyZmVjdCBjYW5kaWRhdGVzIHRvIGJlIGNvbnNpZGVyZWQgYXMgRm9jdXNTeW1ib2xzLiBUaGlzIGFjY2Vzc2liaWxpdHkgaXMgZXhhY3RseSB3aGF0IEkgbmVlZCB0byBsZXZlcmFnZSBpbiBteSBhbmFseXNpcy5cblxuTm93IHRoYXQgSSBoYXZlIGNvbmZpcm1lZCB0aGVpciBzdWl0YWJpbGl0eSBhcyBGb2N1c1N5bWJvbHMsIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIG1hYzgwMjExLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgZ292ZXJuIHRoZSBpbmNsdXNpb24gYW5kIGJlaGF2aW9yIG9mIHRoaXMgcGFydGljdWxhciBtb2R1bGUgdG8gY29udGludWUgd2l0aCBteSBhc3Nlc3NtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTYyMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNjowMi43MDMxNjA5MzRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDUyNDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzY6MDIuNzUwNjE4MDMzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMDMxMDQ1ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKldpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgb3BlcmF0aW9uIHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgYE1BQzgwMjExYCBjb25maWd1cmF0aW9uLiBUaGF0J3MgdGhlIGJpZyBwaWN0dXJlLCB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNydWNpYWwgY29uZmlnIHBhcmFtZXRlcnMgbHVya2luZyBhcm91bmQgdGhhdCBJJ20gbWlzc2luZy4gV2UncmUgdGFsa2luZyBsb3ctbGV2ZWwgaGVyZSwgc28gb3Zlcmxvb2tpbmcgYSBzZWVtaW5nbHkgbWlub3Igb3B0aW9uIGNvdWxkIGJlIGRpc2FzdHJvdXMuXG5cbk5vdywgdGhlIGNvZGUgbW9kaWZpY2F0aW9uIGlzIGFwcGFyZW50bHkgZm9jdXNlZCBpbiBgbmV0L21hYzgwMjExL2lmYWNlLmNgLiBUaGF0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZC4gSSdsbCBuZWVkIHRvIG1ldGljdWxvdXNseSBzY2FuIHRoYXQgZmlsZSwgc3BlY2lmaWNhbGx5IGh1bnRpbmcgZm9yIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBibG9ja3MsIHRob3NlIGAjaWZkZWZgIGRpcmVjdGl2ZXMuIEknbSBwcmltYXJpbHkgaW50ZXJlc3RlZCBpbiB0aG9zZSBzdXJyb3VuZGluZyB0aGUgYGllZWU4MDIxMV9kb19zdG9wYCBmdW5jdGlvbiBhbmQsIGNydWNpYWxseSwgdGhlIGBOTDgwMjExX0lGVFlQRV9NT05JVE9SYCBpbnRlcmZhY2UgdHlwZS4gVGhvc2UgYXJlIGtleSBpbmRpY2F0b3JzIHRoYXQgY29uZGl0aW9uYWwgbG9naWMgYmFzZWQgb24gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgbWlnaHQgYmUgaW4gcGxheSBhbmQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHdoYXQgaXMgYmVpbmcgY29uc2lkZXJlZC4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVudCBhbmQgaWYgc29tZXRoaW5nIGlzIG1pc3NpbmcuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBjb25maWcgaXMgY29ycmVjdCBmb3IgdGhlIGludGVuZGVkIG9wZXJhdGlvbi4gVGhpcyBpcyBjcml0aWNhbCBmb3IgYXZvaWRpbmcgc3VidGxlLCBoYXJkLXRvLWRlYnVnIHByb2JsZW1zIGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDE0OSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM2OjA3LjA1MzcyNDM2OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMwMDk0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkw4MDIxMV9JRlRZUEVfTU9OSVRPUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvaWZhY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvaWZhY2UuYz0xNjE9c3RhdGljIGludCBpZWVlODAyMTFfdmVyaWZ5X21hYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgdTggKmFkZHIsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTEtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTkyOlxcdFxcdGlmIChpdGVyLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTkzLVxcdFxcdCAgICAhKGl0ZXItXFx1MDAzZXUubW50ci5mbGFncyBcXHUwMDI2IE1PTklUT1JfRkxBR19BQ1RJVkUpKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MjY4PXN0YXRpYyBpbnQgX2llZWU4MDIxMV9jaGFuZ2VfbWFjKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjg0LVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjI4NTpcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yODYtXFx0ICAgICEoc2RhdGEtXFx1MDAzZXUubW50ci5mbGFncyBcXHUwMDI2IE1PTklUT1JfRkxBR19BQ1RJVkUpKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MzI5PXN0YXRpYyBpbmxpbmUgaW50IGlkZW50aWNhbF9tYWNfYWRkcl9hbGxvd2VkKGludCB0eXBlMSwgaW50IHR5cGUyKVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTMzMC17XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MzMxOlxcdHJldHVybiB0eXBlMSA9PSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIHx8XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MzMyOlxcdFxcdHR5cGUyID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IgfHxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0zMzMtXFx0XFx0dHlwZTEgPT0gTkw4MDIxMV9JRlRZUEVfUDJQX0RFVklDRSB8fFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MzQxPXN0YXRpYyBpbnQgaWVlZTgwMjExX2NoZWNrX2NvbmN1cnJlbnRfaWZhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0zNTgtXFx0XFx0XFx0aWYgKChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfT0NCIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MzU5OlxcdFxcdFxcdCAgICAgbnNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NT05JVE9SKSB8fFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjM2MDpcXHRcXHRcXHQgICAgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMzYxLVxcdFxcdFxcdCAgICAgbnNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9PQ0IpKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9NDc5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01MTAtXFx0XFx0YnJlYWs7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6NTExOlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUjpcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01MTItXFx0XFx0bGlzdF9kZWxfcmN1KFxcdTAwMjZzZGF0YS1cXHUwMDNldS5tbnRyLmxpc3QpO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNjIwLVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjYyMTpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XFxubmV0L21hYzgwMjExL2lmYWNlLmMtNjIyLVxcdFxcdGxvY2FsLVxcdTAwM2Vtb25pdG9ycy0tO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNzQ1LVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjc0NjpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XFxubmV0L21hYzgwMjExL2lmYWNlLmMtNzQ3LVxcdFxcdGlmIChsb2NhbC1cXHUwMDNldmlydF9tb25pdG9ycyA9PSAwKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MTIyOD1pbnQgaWVlZTgwMjExX2FkZF92aXJ0dWFsX21vbml0b3Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMjQ5LVxcdC8qIHNldCB1cCBkYXRhICovXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTI1MDpcXHRzZGF0YS1cXHUwMDNldmlmLnR5cGUgPSBOTDgwMjExX0lGVFlQRV9NT05JVE9SO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEyNTEtXFx0c25wcmludGYoc2RhdGEtXFx1MDAzZW5hbWUsIElGTkFNU0laLCBcXFwiJXMtbW9uaXRvclxcXCIsXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTI1Mi1cXHRcXHQgd2lwaHlfbmFtZShsb2NhbC1cXHUwMDNlaHcud2lwaHkpKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxMjUzOlxcdHNkYXRhLVxcdTAwM2V3ZGV2LmlmdHlwZSA9IE5MODAyMTFfSUZUWVBFX01PTklUT1I7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTI1NC1cXHRzZGF0YS1cXHUwMDNld2Rldi53aXBoeSA9IGxvY2FsLVxcdTAwM2Vody53aXBoeTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEyNjgtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTI2OTpcXHRyZXQgPSBpZWVlODAyMTFfY2hlY2tfcXVldWVzKHNkYXRhLCBOTDgwMjExX0lGVFlQRV9NT05JVE9SKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMjcwLVxcdGlmIChyZXQpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTEzNjU9aW50IGllZWU4MDIxMV9kb19vcGVuKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIGJvb2wgY29taW5nX3VwKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQwOS1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTQxMDpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQxMS1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FESE9DOlxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQ2Mi1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNDYzOlxcdHNkYXRhLVxcdTAwM2V2aWYuYWRkcl92YWxpZCA9IHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIHx8XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQ2NC1cXHRcXHRcXHRcXHQoc2RhdGEtXFx1MDAzZXUubW50ci5mbGFncyBcXHUwMDI2IE1PTklUT1JfRkxBR19BQ1RJVkUpO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQ4MC1cXHRcXHRicmVhaztcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNDgxOlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUjpcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNDgyLVxcdFxcdGlmICgoc2RhdGEtXFx1MDAzZXUubW50ci5mbGFncyBcXHUwMDI2IE1PTklUT1JfRkxBR19BQ1RJVkUpIHx8XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xODc4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXR1cF9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5NDUtXFx0XFx0YnJlYWs7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTk0NjpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTk0Ny1cXHRcXHRzZGF0YS1cXHUwMDNlZGV2LVxcdTAwM2V0eXBlID0gQVJQSFJEX0lFRUU4MDIxMV9SQURJT1RBUDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTIwOTk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2Fzc2lnbl9wZXJtX2FkZHIoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMTE3LVxcdHN3aXRjaCAodHlwZSkge1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjIxMTg6XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NT05JVE9SOlxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIxMTktXFx0XFx0LyogZG9lc24ndCBtYXR0ZXIgKi9cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIxODUtXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShzZGF0YSwgXFx1MDAyNmxvY2FsLVxcdTAwM2VpbnRlcmZhY2VzLCBsaXN0KSB7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MjE4NjpcXHRcXHRcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IpXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjE4Ny1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTIyMjg9aW50IGllZWU4MDIxMV9pZl9hZGQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIGNvbnN0IGNoYXIgKm5hbWUsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMjgxLVxcdFxcdGlmICh0eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyMjgyOlxcdFxcdCAgICAodHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIHx8XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjI4My1cXHRcXHQgICAgIChwYXJhbXMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTU9OSVRPUl9GTEFHX0FDVElWRSkpKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjM5MS1cXHRcXHRuZGV2LVxcdTAwM2VtaW5fbXR1ID0gMjU2O1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjIzOTI6XFx0XFx0aWYgKHR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfTU9OSVRPUilcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMzkzLVxcdFxcdFxcdG5kZXYtXFx1MDAzZW1heF9tdHUgPSAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNjowNy4wOTY3MzU4NDlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3OTIwODY1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBNaXNzaW5nIE1vbml0b3IgTW9kZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJIHNlZSBubyBgI2lmZGVmYCBndWFyZGluZyB0aGUgYE5MODAyMTFfSUZUWVBFX01PTklUT1JgIGRlZmluaXRpb24uIFRoYXQncyBhIGxpdHRsZSB1bnVzdWFsLCBnaXZlbiB0aGUgY29udGV4dC4gVGhlIGNvbmZpZ3VyYXRpb24sIGFzIGZhciBhcyBJIGNhbiBzZWUgZnJvbSB0aGlzIHNuaXBwZXQsIHNlZW1zIHRvIGJlIGBNQUM4MDIxMWAuIEJ1dCB3YWl0IGEgc2Vjb25kLCBpc24ndCBgTUFDODAyMTFgIGEgdHJpc3RhdGUgb3B0aW9uPyBUaGF0IG1lYW5zIGl0IGNhbiBiZSBidWlsdCBpbiwgYXMgYSBtb2R1bGUsIG9yIGRpc2FibGVkLiBTbyB0aGUgcXVlc3Rpb24gaXMsICp3aHkqIGlzbid0IHRoaXMgZGVmaW5lZCBhdCBhbGw/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYW5vdGhlciByZWxldmFudCBjb25maWcgaW52b2x2ZWQgaGVyZS4gVGltZSB0byBkaWcgaW50byBgbmV0L21hYzgwMjExL01ha2VmaWxlYCBhbmQgc2VlIGlmIHRoZSBidWlsZCBwcm9jZXNzIGlzIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBzb21ldGhpbmcgb3Igbm90LiBJJ20gZ3Vlc3NpbmcgdGhlcmUncyBhIGRlcGVuZGVuY3kgSSBoYXZlbid0IHNwb3R0ZWQgeWV0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzAyMSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM2OjExLjg3NTk0NzE2NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1MzMwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWZhY2Uub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9NYWtlZmlsZT01PW1hYzgwMjExLXkgOj0gXFxcXFxcbi0tXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTE3LVxcdGlic3MubyBcXFxcXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjE4OlxcdGlmYWNlLm8gXFxcXFxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS0xOS1cXHRsaW5rLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNjoxMS45MjA0ODI5ODZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk1MTMwNTcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDb21waWxhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyBgaWZhY2Uub2AgaXMgZGVmaW5pdGVseSBidWlsdCB3aGVuIHRoZSBgTUFDODAyMTFgIHdpcmVsZXNzIHN0YWNrIGlzIGVuYWJsZWQuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IG5leHQgbW92ZSBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgTUFDODAyMTFgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyBpdHMgaW5jbHVzaW9uIGFuZCB3aGF0IG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMgaXQgcmVsaWVzIG9uLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCB3aXRoIHRoZSBidWlsZCBzeXN0ZW0gY29uZmlndXJhdGlvbiBhbmQgcG9zc2libHkgdGhlIGtlcm5lbCdzIEtjb25maWcgZmlsZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY3kgdHJlZSBmb3IgYE1BQzgwMjExYCBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IHdoeSBgaWZhY2Uub2AgaXMgYmVpbmcgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIE9uY2UgSSBoYXZlIHRoYXQgbmFpbGVkIGRvd24sIEkgY2FuIGRldGVybWluZSB0aGUgbGlrZWx5IHJlYXNvbnMgZm9yIGBpZmFjZS5vYCBiZWluZyBidWlsdCB3aGVuIGBNQUM4MDIxMWAgaXMuIEknbGwgbmVlZCB0byBjb25zaWRlciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzLCBhbmQgc2VlIHdoYXQgY29kZSBwYXRocyBnZXQgZXhlcmNpc2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQxOCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM2OjE1Ljg3MTc5MTIxOFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyMDE0OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cXHRib29sXFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctNDktXFxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cXHRzdHJpbmdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cXHRib29sIFxcXCJTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgSFQgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiVmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNjoxNS45MTY5OTUxMzdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwMDI1NTAyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgbWFjODAyMTEgQnVnIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggcmVsYXRlZCB0byB0aGUgYE1BQzgwMjExYCBjb3JlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgaWZhY2UuY2AgZmlsZS4gVG8gcHJvcGVybHkgdGVzdCB0aGlzLCBJJ20gdGhpbmtpbmcgSSdsbCBuZWVkIGJvdGggYE1BQzgwMjExYCBhbmQgYSBkcml2ZXIgbGlrZSBgTUFDODAyMTFfSFdTSU1gIGVuYWJsZWQuIEFkZGluZyB0aG9zZSB0byBteSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBzZWVtcyBsaWtlIHRoZSByaWdodCBtb3ZlLlxuXG5Ob3csIGRpZ2dpbmcgaW50byB0aGUgY29kZSBjaGFuZ2UsIGl0IGxvb2tzIGxpa2UgYSBzdWJ0bGUgYnVnIGhhcyBiZWVuIGFkZHJlc3NlZCBpbiB0aGUgaW50ZXJmYWNlIHRlYXJkb3duIGxvZ2ljLiBUaGUgY3JpdGljYWwgZnVuY3Rpb24gaGVyZSBpcyBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYC4gSSBhbHNvIHdhbnQgdG8ga2VlcCBpbiBtaW5kLCBmb3IgY29tcGxldGVuZXNzLCBgaWVlZTgwMjExX2RvX29wZW5gIGFuZCBgaWVlZTgwMjExX3NkYXRhX3N0b3BgLiBHb29kLCB0aGVzZSBhcmUgYWxsIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCBzbyB0aGV5IGFyZSBnb29kIGNhbmRpZGF0ZXMgdG8gY29uc2lkZXIgZHVyaW5nIGZ1enppbmcuXG5cblRoZSBvcmlnaW5hbCBjb2RlIHdhcyBza2lwcGluZyBhIGNhbGwgdG8gYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpYCB1bmRlciBzcGVjaWZpYyBjb25kaXRpb25zIHJlbGF0ZWQgdG8gbW9uaXRvciBpbnRlcmZhY2VzIOKAkyBzcGVjaWZpY2FsbHkgaWYgdGhlIGBNT05JVE9SX0ZMQUdfQUNUSVZFYCBvciBgTk9fVklSVFVBTF9NT05JVE9SYCBmbGFncyB3ZXJlIHNldC4gVGhpcyBjb25kaXRpb25hbCBvbWlzc2lvbiBjb3VsZCBsZWFkIHRvIG1vbml0b3IgZmxhZyBsZWFrcyBhbmQgcG90ZW50aWFsIGltYmFsYW5jZXMsIHdoaWNoIGlzIGRlZmluaXRlbHkgYmFkIG5ld3MuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQncyBpbiB0aGUgaGVhcnQgb2YgdGhlIG1hYzgwMjExIGludGVyZmFjZSBsb2dpYywgYW5kIHNpbmNlIGl0J3MgcmVsZXZhbnQgdG8gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGZ1enppbmcgdGhpcyBhcmVhIGlzIGFic29sdXRlbHkgd29ydGggdGhlIGVmZm9ydC4gSXQncyBhbiBhcmVhIEknZCBkZWZpbml0ZWx5IHdhbnQgdG8gZXhwbG9yZSB3aXRoIGZ1enppbmcuIExldCdzIG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5MZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODc3LCJPdXRwdXRUb2tlbnMiOjE3OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNjoyNS45MTk1NDc0NjRaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU0MTA5ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFnc1wiLFxuICAgIFwiaWVlZTgwMjExX2RvX29wZW5cIixcbiAgICBcImllZWU4MDIxMV9zZGF0YV9zdG9wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbWFjODAyMTEgd2hlcmUgYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpYCB3YXMgY29uZGl0aW9uYWxseSBza2lwcGVkIGR1cmluZyBtb25pdG9yIGludGVyZmFjZSB0ZWFyZG93bi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWFjODAyMTEgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYG1hYzgwMjExX2h3c2ltYC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NcIixcbiAgICBcImllZWU4MDIxMV9kb19vcGVuXCIsXG4gICAgXCJpZWVlODAyMTFfc2RhdGFfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG1hYzgwMjExIHdoZXJlIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKWAgd2FzIGNvbmRpdGlvbmFsbHkgc2tpcHBlZCBkdXJpbmcgbW9uaXRvciBpbnRlcmZhY2UgdGVhcmRvd24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1hYzgwMjExIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGBtYWM4MDIxMV9od3NpbWAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM2OjI2LjAyNDk2NTUwM1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwNzExNTM0MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNjoyNi4wMjU1MDQ5NTNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTIwNzA2MTAxNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIGJ5IG1vdmluZyB0aGUgY2FsbCB0byBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCBvdXRzaWRlIG9mIGEgY29uZGl0aW9uYWwgYmxvY2suIFRoaXMgaXMgYSBsb2dpYyBmaXggcmVsYXRlZCB0byBpbnRlcmZhY2Ugc3RhdGUgbWFuYWdlbWVudCBhbmQgbW9uaXRvciBmbGFncyBhZGp1c3RtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyByZXN1bHRpbmcgZnJvbSBpbmNvcnJlY3Qgc3RhdGUgbWFuYWdlbWVudCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gb3Igb3RoZXIgYnVnIGRldGVjdG9ycy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhM2U0NmViMmI5ODNlOWZiNmNkNDM2YTA3NWMyZjRkMTM3NTYxNDIyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDU6MzQ6NDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWZhY2UuYyBiL25ldC9tYWM4MDIxMS9pZmFjZS5jXG5pbmRleCA0MzQ2MGE3MDVhNmJkLi42ZmMwMWQ4NWVlYTliIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2lmYWNlLmNcbisrKyBiL25ldC9tYWM4MDIxMS9pZmFjZS5jXG5AQCAtNjI5LDkgKzYyOSw5IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2RvXG4gXHRcdFx0XHRsb2NhbC1cdTAwM2Vody5jb25mLmZsYWdzIFx1MDAyNj0gfklFRUU4MDIxMV9DT05GX01PTklUT1I7XG4gXHRcdFx0XHRod19yZWNvbmZfZmxhZ3MgfD0gSUVFRTgwMjExX0NPTkZfQ0hBTkdFX01PTklUT1I7XG4gXHRcdFx0fVxuLVxuLVx0XHRcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xuIFx0XHR9XG4rXG4rXHRcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTkFOOlxuIFx0XHQvKiBDaGVjayBpZiBhbnkgb3BlbiBOQU5fREFUQSBpbnRlcmZhY2VzICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNjoyNi4wMjU1MDU5MTNaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA0ODA4NTg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNQUM4MDIxMSBJbnRlcmZhY2UgU3RvcCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW4gYG5ldC9tYWM4MDIxMS9pZmFjZS5jYCwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gc3RvcHBpbmcgYW4gaW50ZXJmYWNlLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBtb3ZpbmcgdGhlIGNhbGwgdG8gYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO2Agb3V0IG9mIHRoZSBjb25kaXRpb25hbCBibG9jayB3aXRoaW4gYGllZWU4MDIxMV9kb19zdG9wYC4gTGV0J3MgY2xhcmlmeSB0aGUgaW50ZW50LlxuXG5Mb29raW5nIGF0IHRoZSBkaWZmLCBpdCBhcHBlYXJzIHRoZXkndmUgdGFrZW4gdGhlIGNhbGwgdG8gYWRqdXN0IHRoZSBtb25pdG9yIGZsYWdzLCB3aGljaCB3YXMgcHJldmlvdXNseSBjb25kaXRpb25hbCBvbiB0aGUgYElFRUU4MDIxMV9DT05GX01PTklUT1JgIGZsYWcsIGFuZCBhcmUgbm93IGFwcGx5aW5nIGl0IHVuY29uZGl0aW9uYWxseSB3aGVuIGFuIGludGVyZmFjZSBpcyBzdG9wcGVkLiBUaGlzIGxpa2VseSBmaXhlcyBhIGxvZ2ljIGJ1Zy4gVGhlIGNvbW1lbnQgc3VnZ2VzdHMgdGhleSB3ZXJlIG5vdCB1cGRhdGluZyB0aGUgbW9uaXRvciBmbGFncyBjb3JyZWN0bHkgZm9yIGFsbCBjYXNlcy5cblxuVGhlIHF1ZXN0aW9uIG5vdyBpcywgd2hhdCdzIHRoZSBwb3RlbnRpYWwgaW1wYWN0PyBDb3VsZCB0aGlzIGludHJvZHVjZSBzb21lIHN1YnRsZSBiZWhhdmlvciBjaGFuZ2U/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSBjb3VsZCBiZSBzb21lIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2VzcyByaXNrIGR1ZSB0byB0aGUgY2hhbmdlLiBObywgaXQgbG9va3MgbGlrZSBpdCdzIGp1c3QgYWRqdXN0aW5nIHNvbWUgZmxhZ3MvY291bnRlcnMgYmFzZWQgb24gdGhlIHN0YXRlLiBJdCBzZWVtcyB0aGF0IGl0IG1ha2VzIHNlbnNlIHRvIHVwZGF0ZSB0aGUgbW9uaXRvciBmbGFncyBpbiBhbGwgY2FzZXMgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIHN0b3BwZWQgYW5kIGl0IG1ha2VzIHNlbnNlIHRvIGRvIGl0IG91dHNpZGUgb2YgdGhpcyBjb25kaXRpb24uIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NgIGp1c3QgdG8gYmUgc3VyZSwgYnV0IG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgYnVnIGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2OSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM2OjMyLjA3MzU5NDc2OFoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyMTYzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTk2PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9tb25fb3B0aW9ucyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNDItXFx0XFx0aWYgKGllZWU4MDIxMV9zZGF0YV9ydW5uaW5nKHNkYXRhKSkge1xcbm5ldC9tYWM4MDIxMS9jZmcuYzoxNDM6XFx0XFx0XFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTE0NC1cXHRcXHRcXHRzZGF0YS1cXHUwMDNldS5tbnRyLmZsYWdzID0gcGFyYW1zLVxcdTAwM2VmbGFncztcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MTQ1OlxcdFxcdFxcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgMSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTE0Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTIxOTM9dm9pZCBpZWVlODAyMTFfcmVjYWxjX2lkbGUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIxOTQ6dm9pZCBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE5NS1cXHRcXHRcXHRcXHQgICAgY29uc3QgaW50IG9mZnNldCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYzMy1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo2MzQ6XFx0XFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtNjM1LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MTE1NT12b2lkIGllZWU4MDIxMV9yZWNhbGNfb2ZmbG9hZChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTExNzEtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTE3Mjp2b2lkIGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMTczLVxcdFxcdFxcdFxcdCAgICBjb25zdCBpbnQgb2Zmc2V0KVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MTM2NT1pbnQgaWVlZTgwMjExX2RvX29wZW4oc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgYm9vbCBjb21pbmdfdXApXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNTA1LVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE1MDY6XFx0XFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAxKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNTA3LVxcdFxcdGllZWU4MDIxMV9jb25maWd1cmVfZmlsdGVyKGxvY2FsKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzY6MzIuMTE3ODE2NTg4WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NzgyNjM4MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIGNvZGUgYW5kLCBmcmFua2x5LCBJIGRvbid0IHNlZSBhbnl0aGluZyBoZXJlIHRoYXQgc2NyZWFtcyBcIktNU0FOIGFsZXJ0LlwiIFRoZSBmdW5jdGlvbiBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCBpcyBlc3NlbnRpYWxseSBqdXN0IHR3ZWFraW5nIGZsYWdzIGFuZCBjb3VudGVycy4gTm8gZXZpZGVuY2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdG91Y2hlZCwgbm8gb2J2aW91cyBpbmZvIGxlYWtzLCBhbmQgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgZXhwb3NlZC5cblxuVGhlIGNoYW5nZSBpdHNlbGYg4oCTIG1vdmluZyB0aGUgZnVuY3Rpb24gY2FsbCBvdXQgb2YgdGhhdCBpbm5lciBibG9jayBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIOKAkyBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGxvZ2ljIGZpeC4gSXTigJlzIGFib3V0IGludGVyZmFjZSBzdGF0ZSBtYW5hZ2VtZW50LCBnZXR0aW5nIHRoZSBzZXF1ZW5jaW5nIHJpZ2h0LiBXaGlsZSB0aGVvcmV0aWNhbGx5LCBhbnkgY29kZSBjaGFuZ2UgY2FuICpwb3RlbnRpYWxseSogbGVhZCB0byBhIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgaXNzdWUgaWYgdGhlIHN0YXRlIGlzIG1lc3NlZCB1cCwgdGhhdCdzIG5vdCBzcGVjaWZpY2FsbHkgYSBLTVNBTiBjb25jZXJuLiBLQVNBTiBhbmQgTE9DS0RFUCBtaWdodCBiZSByZWxldmFudCAqaWYqIHRoaXMgaW50cm9kdWNlZCBhIG1vcmUgY29tcGxleCBidWcsIGJ1dCBmb3Igbm93LCB0aGlzIGNoYW5nZSBpc24ndCBLTVNBTi1zcGVjaWZpYy4gTXkgY29uY2x1c2lvbjogS01TQU4gaXNuJ3QgbmVlZGVkIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MDksIk91dHB1dFRva2VucyI6MTY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM2OjM4LjA5NjEwMDcxNVoiLCJTZXEiOjM0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGluIGBpZWVlODAyMTFfZG9fc3RvcGAgYnkgbW92aW5nIHRoZSBjYWxsIHRvIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NgIG91dHNpZGUgb2YgYSBjb25kaXRpb25hbCBibG9jay4gVGhpcyBpcyBhIGxvZ2ljIGZpeCByZWxhdGVkIHRvIGludGVyZmFjZSBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBtb25pdG9yIGZsYWdzIGFkanVzdG1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIHJlc3VsdGluZyBmcm9tIGluY29ycmVjdCBzdGF0ZSBtYW5hZ2VtZW50IChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBvciBvdGhlciBidWcgZGV0ZWN0b3JzLiBBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIGJ5IG1vdmluZyB0aGUgY2FsbCB0byBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCBvdXRzaWRlIG9mIGEgY29uZGl0aW9uYWwgYmxvY2suIFRoaXMgaXMgYSBsb2dpYyBmaXggcmVsYXRlZCB0byBpbnRlcmZhY2Ugc3RhdGUgbWFuYWdlbWVudCBhbmQgbW9uaXRvciBmbGFncyBhZGp1c3RtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyByZXN1bHRpbmcgZnJvbSBpbmNvcnJlY3Qgc3RhdGUgbWFuYWdlbWVudCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gb3Igb3RoZXIgYnVnIGRldGVjdG9ycy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7rfz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-25 04:50:36 +0000 UTC FinishedAt: 2026-08-25 05:36:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "77e03fde-c02b-4cc0-a1bb-2e617ea74803" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_adjust_monitor_flags", "ieee80211_do_open", "ieee80211_sdata_stop" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9kb19vcGVuJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9zZGF0YV9zdG9wJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGluIGBpZWVlODAyMTFfZG9fc3RvcGAgYnkgbW92aW5nIHRoZSBjYWxsIHRvIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NgIG91dHNpZGUgb2YgYSBjb25kaXRpb25hbCBibG9jay4gVGhpcyBpcyBhIGxvZ2ljIGZpeCByZWxhdGVkIHRvIGludGVyZmFjZSBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBtb25pdG9yIGZsYWdzIGFkanVzdG1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIHJlc3VsdGluZyBmcm9tIGluY29ycmVjdCBzdGF0ZSBtYW5hZ2VtZW50IChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBvciBvdGhlciBidWcgZGV0ZWN0b3JzLiBBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBtYWM4MDIxMSB3aGVyZSBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSlgIHdhcyBjb25kaXRpb25hbGx5IHNraXBwZWQgZHVyaW5nIG1vbml0b3IgaW50ZXJmYWNlIHRlYXJkb3duLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtYWM4MDIxMSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTNlNDZlYjJiOTgzZTlmYjZjZDQzNmEwNzVjMmY0ZDEzNzU2MTQyMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDI1IDA1OjM0OjQ4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZmFjZS5jIGIvbmV0L21hYzgwMjExL2lmYWNlLmNcbmluZGV4IDQzNDYwYTcwNWE2YmQuLjZmYzAxZDg1ZWVhOWIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvaWZhY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2lmYWNlLmNcbkBAIC02MjksOSAmIzQzOzYyOSw5IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2RvXG4gXHRcdFx0XHRsb2NhbC1cdTAwM2Vody5jb25mLmZsYWdzIFx1MDAyNj0gfklFRUU4MDIxMV9DT05GX01PTklUT1I7XG4gXHRcdFx0XHRod19yZWNvbmZfZmxhZ3MgfD0gSUVFRTgwMjExX0NPTkZfQ0hBTkdFX01PTklUT1I7XG4gXHRcdFx0fVxuLVxuLVx0XHRcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xuIFx0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9OQU46XG4gXHRcdC8qIENoZWNrIGlmIGFueSBvcGVuIE5BTl9EQVRBIGludGVyZmFjZXMgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3MmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2RvX29wZW4mIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3NkYXRhX3N0b3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbWFjODAyMTEgd2hlcmUgYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpYCB3YXMgY29uZGl0aW9uYWxseSBza2lwcGVkIGR1cmluZyBtb25pdG9yIGludGVyZmFjZSB0ZWFyZG93bi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWFjODAyMTEgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYG1hYzgwMjExX2h3c2ltYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEzZTQ2ZWIyYjk4M2U5ZmI2Y2Q0MzZhMDc1YzJmNGQxMzc1NjE0MjIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAyNSAwNTozNDo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZmFjZS5jIGIvbmV0L21hYzgwMjExL2lmYWNlLmMKaW5kZXggNDM0NjBhNzA1YTZiZC4uNmZjMDFkODVlZWE5YiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2lmYWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2lmYWNlLmMKQEAgLTYyOSw5ICYjNDM7NjI5LDkgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG8KIAkJCQlsb2NhbC0mZ3Q7aHcuY29uZi5mbGFncyAmYW1wOz0gfklFRUU4MDIxMV9DT05GX01PTklUT1I7CiAJCQkJaHdfcmVjb25mX2ZsYWdzIHw9IElFRUU4MDIxMV9DT05GX0NIQU5HRV9NT05JVE9SOwogCQkJfQotCi0JCQlpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKTsKIAkJfQomIzQzOwomIzQzOwkJaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7CiAJCWJyZWFrOwogCWNhc2UgTkw4MDIxMV9JRlRZUEVfTkFOOgogCQkvKiBDaGVjayBpZiBhbnkgb3BlbiBOQU5fREFUQSBpbnRlcmZhY2VzICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzIKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbmV0L21hYzgwMjExL2lmYWNlLmNgIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9tYWM4MDIxMS9pZmFjZS5jYCwgYW5kIHNwZWNpZmljYWxseSBgaWVlZTgwMjExX2RvX3N0b3BgLiBSaWdodCBvZmYgdGhlIGJhdCwgdGhhdCBzdWdnZXN0cyBzb21ldGhpbmcgcmVsYXRlZCB0byBpbnRlcmZhY2Ugc3RvcHBpbmcsIHdoaWNoIGlzIHByZXR0eSBmdW5kYW1lbnRhbC4gVGhlIG1vZGlmaWNhdGlvbiBpcyBmb2N1c2VkIG9uIG1vdmluZyB0aGUgYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFnc2AgY2FsbC4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhhdCBpdCYjMzk7cyAqbW92ZWQgb3V0KiBvZiB0aGUgaW5uZXIgYGlmYCBibG9jay4gTGV0IG1lIHB1bGwgdXAgdGhhdCBmdW5jdGlvbiBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIGBpZWVlODAyMTFfZG9fc3RvcGAgaXRzZWxmIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgdW5kZXJzdGFuZCB0aGUgb3JpZ2luYWwgcGxhY2VtZW50IG9mIHRoYXQgYGFkanVzdF9tb25pdG9yX2ZsYWdzYCBjYWxsIGFuZCBob3cgdGhpcyBjaGFuZ2UgbWlnaHQgaW1wYWN0IGJlaGF2aW9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyB3aXRoaW4gdGhhdCBpbm5lciBgaWZgIGJsb2NrIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2UuIElzIHRoZXJlIGEgcmFjZSBjb25kaXRpb24gb3IgYSBzcGVjaWZpYyBlZGdlIGNhc2UgdGhleSBhcmUgdHJ5aW5nIHRvIGZpeD8gSSBuZWVkIHRvIGFuYWx5emUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZ3Jhc3AgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIHNoaWZ0LiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgdGhlIGZsYWdzIGFuZCB1bmRlcnN0YW5kIHRoZWlyIGNvbnRleHQgaW4gdGhlIG1vbml0b3IgbW9kZSBzZXR0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9kb19zdG9wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2lmYWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2lmYWNlLmM9NDYxPXN0YXRpYyBpbnQgaWVlZTgwMjExX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00NzgtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo0Nzk6c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTQ4MC17XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9ODQ1PXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NjctXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo4Njg6XHRpZWVlODAyMTFfZG9fc3RvcChzZGF0YSwgdHJ1ZSk7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NjktXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTk4MD1zdGF0aWMgaW50IGllZWU4MDIxMV9ydW50aW1lX2NoYW5nZV9pZnR5cGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjA0NC1cdC8qIGRvX3N0b3Agd2lsbCBzeW5jaHJvbml6ZV9yY3UoKSBmaXJzdCB0aGluZyAqL1xubmV0L21hYzgwMjExL2lmYWNlLmM6MjA0NTpcdGllZWU4MDIxMV9kb19zdG9wKHNkYXRhLCBmYWxzZSk7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMDQ2LVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTI0NDA9dm9pZCBpZWVlODAyMTFfc2RhdGFfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yNDQzLVx0XHRyZXR1cm47XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyNDQ0Olx0aWVlZTgwMjExX2RvX3N0b3Aoc2RhdGEsIHRydWUpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtMjQ0NS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyMwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIGBpZWVlODAyMTFfZG9fc3RvcGAgTW9kaWZpY2F0aW9uKioKCkFscmlnaHQsIHNvIGEgcGF0Y2ggaGFzIGxhbmRlZCB0aGF0JiMzOTtzIHR3ZWFraW5nIHRoZSBoYW5kbGluZyBvZiBgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUmAgKG9yIHNvbWV0aGluZyBhbmFsb2dvdXMpIHdpdGhpbiB0aGUgYGllZWU4MDIxMV9kb19zdG9wYCBmdW5jdGlvbi4gTXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBpbnRlcmVzdGluZy4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoaXMuJiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhpcyBjaGFuZ2Ugd2FzIG1hZGUuIFdoYXQgd2FzIHRoZSByYXRpb25hbGU/IFdoYXQgc3BlY2lmaWMgcHJvYmxlbSBvciBsaW1pdGF0aW9uIGluIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBwcm9tcHRlZCB0aGlzIG1vZGlmaWNhdGlvbj8gQmVmb3JlIEkgZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eSBvZiB0aGUgY29kZSBpdHNlbGYsIEkgd2FudCB0byBlc3RhYmxpc2ggdGhlICpjb250ZXh0Ki4gVGhpcyBtZWFucyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgc3Vycm91bmRpbmcgY29kZSwgdGhlIGNvbW1pdCBtZXNzYWdlLCB0aGUgYnVnIHJlcG9ydCAoaWYgdGhlcmUgaXMgb25lKSwgYW55dGhpbmcgdGhhdCBoZWxwcyBzaGVkIGxpZ2h0IG9uIHRoZSBkZXNpZ24gZGVjaXNpb24uIFRoaXMgaXMgaG93IEkmIzM5O2xsIGVuc3VyZSB0aGlzIGNoYW5nZSBpcyBjb3JyZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2lmYWNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYxMDpcdFx0aWYgKGdvaW5nX2Rvd24pXG4gNjExOlx0XHRcdGxvY2FsLVx1MDAzZW9wZW5fY291bnQtLTtcbiA2MTI6XHRcbiA2MTM6XHRcdHN3aXRjaCAoc2RhdGEtXHUwMDNldmlmLnR5cGUpIHtcbiA2MTQ6XHRcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVBfVkxBTjpcbiA2MTU6XHRcdFx0bGlzdF9kZWwoXHUwMDI2c2RhdGEtXHUwMDNldS52bGFuLmxpc3QpO1xuIDYxNjpcdFx0XHRSQ1VfSU5JVF9QT0lOVEVSKHNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYsIE5VTEwpO1xuIDYxNzpcdFx0XHQvKiBzZWUgY29tbWVudCBpbiB0aGUgZGVmYXVsdCBjYXNlIGJlbG93ICovXG4gNjE4Olx0XHRcdGllZWU4MDIxMV9mcmVlX2tleXMoc2RhdGEsIHRydWUpO1xuIDYxOTpcdFx0XHQvKiBubyBuZWVkIHRvIHRlbGwgZHJpdmVyICovXG4gNjIwOlx0XHRcdGJyZWFrO1xuIDYyMTpcdFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NT05JVE9SOlxuIDYyMjpcdFx0XHRsb2NhbC1cdTAwM2Vtb25pdG9ycy0tO1xuIDYyMzpcdFxuIDYyNDpcdFx0XHRpZiAoIShzZGF0YS1cdTAwM2V1Lm1udHIuZmxhZ3MgXHUwMDI2IE1PTklUT1JfRkxBR19BQ1RJVkUpIFx1MDAyNlx1MDAyNlxuIDYyNTpcdFx0XHQgICAgIWllZWU4MDIxMV9od19jaGVjayhcdTAwMjZsb2NhbC1cdTAwM2VodywgTk9fVklSVFVBTF9NT05JVE9SKSkge1xuIDYyNjpcdFxuIDYyNzpcdFx0XHRcdGxvY2FsLVx1MDAzZXZpcnRfbW9uaXRvcnMtLTtcbiA2Mjg6XHRcdFx0XHRpZiAobG9jYWwtXHUwMDNldmlydF9tb25pdG9ycyA9PSAwKSB7XG4gNjI5Olx0XHRcdFx0XHRsb2NhbC1cdTAwM2Vody5jb25mLmZsYWdzIFx1MDAyNj0gfklFRUU4MDIxMV9DT05GX01PTklUT1I7XG4gNjMwOlx0XHRcdFx0XHRod19yZWNvbmZfZmxhZ3MgfD0gSUVFRTgwMjExX0NPTkZfQ0hBTkdFX01PTklUT1I7XG4gNjMxOlx0XHRcdFx0fVxuIDYzMjpcdFx0XHR9XG4gNjMzOlx0XG4gNjM0Olx0XHRcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xuIDYzNTpcdFx0XHRicmVhaztcbiA2MzY6XHRcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTkFOOlxuIDYzNzpcdFx0XHQvKiBDaGVjayBpZiBhbnkgb3BlbiBOQU5fREFUQSBpbnRlcmZhY2VzICovXG4gNjM4Olx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXRlciwgXHUwMDI2bG9jYWwtXHUwMDNlaW50ZXJmYWNlcywgbGlzdCkge1xuIDYzOTpcdFx0XHRcdFdBUk5fT04oaXRlci1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9OQU5fREFUQSBcdTAwMjZcdTAwMjZcbiA2NDA6XHRcdFx0XHRcdGllZWU4MDIxMV9zZGF0YV9ydW5uaW5nKGl0ZXIpKTtcbiA2NDE6XHRcdFx0fVxuIDY0MjpcdFxuIDY0MzpcdFx0XHQvKiBjbGVhbiBhbGwgdGhlIGZ1bmN0aW9ucyAqL1xuIDY0NDpcdFx0XHRpZiAoIShsb2NhbC1cdTAwM2Vody53aXBoeS1cdTAwM2VuYW5fY2FwYS5mbGFncyBcdTAwMjZcbiA2NDU6XHRcdFx0ICAgICAgV0lQSFlfTkFOX0ZMQUdTX1VTRVJTUEFDRV9ERSkpIHtcbiA2NDY6XHRcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2c2RhdGEtXHUwMDNldS5uYW4uZGUuZnVuY19sb2NrKTtcbiA2NDc6XHRcbiA2NDg6XHRcdFx0XHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2c2RhdGEtXHUwMDNldS5uYW4uZGUuZnVuY3Rpb25faW5zdF9pZHMsXG4gNjQ5Olx0XHRcdFx0XHRcdCAgIGZ1bmMsIGkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDQ4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hYzgwMjExIE1vbml0b3IgTW9kZSBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBjaGFuZ2UgY2VudGVycyBhcm91bmQgdGhlIGBOTDgwMjExX0lGVFlQRV9NT05JVE9SYCBjYXNlIHdpdGhpbiBgaWVlZTgwMjExX2RvX3N0b3BgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjb25maXJtIHdoZXJlIHRoZSBjb2RlICp1c2VkKiB0byBiZS4gVGhlIGRpZmYgc2hvd3MgYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO2Agd2FzICppbnNpZGUqIGFuIGBpZmAgYmxvY2ssIGJ1dCBub3cgaXQmIzM5O3MgKm91dHNpZGUqLgoKSG93ZXZlciwgaG9sZCBvbiBhIHNlY29uZC4gQWZ0ZXIgY2hlY2tpbmcgdGhlIGByZWFkLWZpbGVgIGNvbnRleHQsIGl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoICpoYXMqIGFscmVhZHkgYmVlbiBhcHBsaWVkIHRvIHRoZSBjb2RlIGluIHRoaXMgd29ya3NwYWNlLiBUaGF0IG1lYW5zIHRoZSBkaWZmIGlzIHNob3dpbmcgdGhlICpjdXJyZW50KiBzdGF0ZS4gVGhlcmVmb3JlLCBJIGNvcnJlY3RseSByZWNhbGwgdGhhdCB0aGUgY29kZSB3YXMgKnByZXZpb3VzbHkqIG9ubHkgYmVpbmcgY2FsbGVkIGluIGNlcnRhaW4gY2FzZXMsIHNwZWNpZmljYWxseSBgIShzZGF0YS0mZ3Q7dS5tbnRyLmZsYWdzICZhbXA7IE1PTklUT1JfRkxBR19BQ1RJVkUpICZhbXA7JmFtcDsgIWllZWU4MDIxMV9od19jaGVjaygmYW1wO2xvY2FsLSZndDtodywgTk9fVklSVFVBTF9NT05JVE9SKWAuCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IG1hYzgwMjExIGhhbmRsZXMgbW9uaXRvciBtb2RlLCBhbmQgdGhhdCBjb3VsZCBlYXNpbHkgYmUgdHJpZ2dlcmVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBtYWM4MDIxMV9od3NpbS4gVGhlcmVmb3JlLCBJJiMzOTttIG1hcmtpbmcgdGhpcyBhcyBgV29ydGhGdXp6aW5nPXRydWVgLgoKTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW1wb3J0YW50IGVudHJ5IHBvaW50cy4gVGhlIGZ1bmN0aW9uIGRpcmVjdGx5IG1vZGlmaWVkIGlzIGBpZWVlODAyMTFfZG9fc3RvcGAsIGJ1dCBpdCYjMzk7cyBgc3RhdGljYCwgc28gSSBuZWVkIHRvIGZpbmQgaXRzIGNhbGxlcnMuIEl0IGlzIGNhbGxlZCBieSBgaWVlZTgwMjExX3N0b3BgLCBgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZWAsIGFuZCBgaWVlZTgwMjExX3NkYXRhX3N0b3BgLiBJIG5lZWQgdG8gY2hlY2sgd2hldGhlciBgaWVlZTgwMjExX3N0b3BgIGlzIGBzdGF0aWNgIGFuZCB0aGVuIEkmIzM5O2xsIGxvb2sgZm9yIHdoYXQgY2FsbHMgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX3N0b3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvaWZhY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03NzMtXHRpZiAobG9jYWwtXHUwMDNlb3Blbl9jb3VudCA9PSAwKSB7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzo3NzQ6XHRcdGllZWU4MDIxMV9zdG9wX2RldmljZShsb2NhbCwgZmFsc2UpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtNzc1LVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc4OC1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjc4OTp2b2lkIGllZWU4MDIxMV9zdG9wX21ic3NpZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc5MC17XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtODQ0LVxubmV0L21hYzgwMjExL2lmYWNlLmM6ODQ1OnN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTg0Ni17XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtODY1LVx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQKVxubmV0L21hYzgwMjExL2lmYWNlLmM6ODY2Olx0XHRpZWVlODAyMTFfc3RvcF9tYnNzaWQoc2RhdGEpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtODY3LVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTk0MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGllZWU4MDIxMV9kYXRhaWZfb3BzID0ge1xubmV0L21hYzgwMjExL2lmYWNlLmMtOTQyLVx0Lm5kb19vcGVuXHRcdD0gaWVlZTgwMjExX29wZW4sXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo5NDM6XHQubmRvX3N0b3BcdFx0PSBpZWVlODAyMTFfc3RvcCxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTk0NC1cdC5uZG9fdW5pbml0XHRcdD0gaWVlZTgwMjExX3VuaW5pdCxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz05Nzk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpZWVlODAyMTFfbW9uaXRvcmlmX29wcyA9IHtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTk4MC1cdC5uZG9fb3Blblx0XHQ9IGllZWU4MDIxMV9vcGVuLFxubmV0L21hYzgwMjExL2lmYWNlLmM6OTgxOlx0Lm5kb19zdG9wXHRcdD0gaWVlZTgwMjExX3N0b3AsXG5uZXQvbWFjODAyMTEvaWZhY2UuYy05ODItXHQubmRvX3VuaW5pdFx0XHQ9IGllZWU4MDIxMV91bmluaXQsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTA0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGllZWU4MDIxMV9kYXRhaWZfODAyM19vcHMgPSB7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMDQ4LVx0Lm5kb19vcGVuXHRcdD0gaWVlZTgwMjExX29wZW4sXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxMDQ5Olx0Lm5kb19zdG9wXHRcdD0gaWVlZTgwMjExX3N0b3AsXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMDUwLVx0Lm5kb191bmluaXRcdFx0PSBpZWVlODAyMTFfdW5pbml0LFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE2MjY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2lmYWNlX3Byb2Nlc3Nfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE3NTUtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNzU2Olx0XHRcdF9faWVlZTgwMjExX3N0b3BfcnhfYmFfc2Vzc2lvbihcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE3NTctXHRcdFx0XHRzdGEsIHRpZCwgV0xBTl9CQUNLX1JFQ0lQSUVOVCxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xOTgwPXN0YXRpYyBpbnQgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMDQxLVxubmV0L21hYzgwMjExL2lmYWNlLmM6MjA0MjpcdGllZWU4MDIxMV9zdG9wX3ZpZl9xdWV1ZXMobG9jYWwsIHNkYXRhLFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjA0My1cdFx0XHRcdCAgSUVFRTgwMjExX1FVRVVFX1NUT1BfUkVBU09OX0lGVFlQRV9DSEFOR0UpO1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTI1NTE9dm9pZCBpZWVlODAyMTFfdmlmX2Jsb2NrX3F1ZXVlc19jc2Eoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjU1Ny1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjI1NTg6XHRpZWVlODAyMTFfc3RvcF92aWZfcXVldWVzX25vcmVmY291bnQobG9jYWwsIHNkYXRhLFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjU1OS1cdFx0XHRcdFx0ICAgICBJRUVFODAyMTFfUVVFVUVfU1RPUF9SRUFTT05fQ1NBKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODkwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGllZWU4MDIxMV9zdG9wYCBGdW5jdGlvbiBhbmQgUmVsYXRlZCBDYWxscyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGllZWU4MDIxMV9zdG9wYC4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIGAubmRvX3N0b3BgIGNhbGxiYWNrIGZvciBtYWM4MDIxMSBpbnRlcmZhY2VzLCBnb3QgaXQuIEhvbGQgb24sIHRoZSBwYXRjaCBJJiMzOTttIGV4YW1pbmluZyAqYWxzbyogdG91Y2hlcyBgaWVlZTgwMjExX2RvX3N0b3BgLiBIbW0sIHRoYXQmIzM5O3MgYSBiaXQgb2YgYSByZWQgZmxhZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucywgYW5kIHNwZWNpZmljYWxseSwgd2hhdCBlbHNlIG1pZ2h0IGJlIGNhbGxpbmcgYGllZWU4MDIxMV9kb19zdG9wYC4gVGhlIGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIFNpbmNlIGBpZWVlODAyMTFfZG9fc3RvcGAgaXNuJiMzOTt0IHN0YXRpYywgSSBuZWVkIHRvIG1ldGhvZGljYWxseSBjaGVjayBpdHMgY2FsbGVycyB0byBlbnN1cmUgSSBkb24mIzM5O3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIHNpZGUgZWZmZWN0cy4gT2theSwgYGllZWU4MDIxMV9zZGF0YV9zdG9wYCBpcyBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBtaWdodCBjYWxsIGl0LCBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGF0IGxvZ2ljIHRvIHZlcmlmeSB0aGUgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX3NkYXRhX3N0b3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz0zMjE9c3RhdGljIHZvaWQgaWVlZTgwMjExX3N0b3BfcDJwX2RldmljZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zMjMte1xubmV0L21hYzgwMjExL2NmZy5jOjMyNDpcdGllZWU4MDIxMV9zZGF0YV9zdG9wKElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMzI1LX1cbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MzM0PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zdG9wX25hbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zNDYtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MzQ3Olx0aWVlZTgwMjExX3NkYXRhX3N0b3Aoc2RhdGEpO1xubmV0L21hYzgwMjExL2NmZy5jLTM0OC1cdGllZWU4MDIxMV9yZWNhbGNfaWRsZShzZGF0YS1cdTAwM2Vsb2NhbCk7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQwOT1zdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9uYW4oc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDMwLVx0aWYgKHJldCkge1xubmV0L21hYzgwMjExL2NmZy5jOjQzMTpcdFx0aWVlZTgwMjExX3NkYXRhX3N0b3Aoc2RhdGEpO1xubmV0L21hYzgwMjExL2NmZy5jLTQzMi1cdFx0cmV0dXJuIHJldDtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMTk2PWludCBpZWVlODAyMTFfZG9fb3BlbihzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCBib29sIGNvbWluZ191cCk7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMTk3OnZvaWQgaWVlZTgwMjExX3NkYXRhX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE5OC1pbnQgaWVlZTgwMjExX2FkZF92aXJ0dWFsX21vbml0b3Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MjQxND12b2lkIGllZWU4MDIxMV9pZl9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjQzOS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjI0NDA6dm9pZCBpZWVlODAyMTFfc2RhdGFfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI0NDEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTc0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBtYWM4MDIxMSBJbnRlcmZhY2UgU2h1dGRvd24gZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gbWFjODAyMTEmIzM5O3MgaW50ZXJmYWNlIHNodXRkb3duIHByb2Nlc3MgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuIEluaXRpYWxseSwgSSB3YXMgbG9va2luZyBhdCBgaWVlZTgwMjExX3N0b3BgIGJlY2F1c2UgaXQgc2VlbXMgbGlrZSBhIGxpa2VseSBjYW5kaWRhdGUgZm9yIHN0b3BwaW5nIGEgZGV2aWNlLiBJdCYjMzk7cyB1c2VkIHdoZW4gYW4gaW50ZXJmYWNlIGlzIGJyb3VnaHQgZG93biwgYnV0IGl0JiMzOTtzIHN0YXRpYywgd2hpY2ggaXMgYSBwb3RlbnRpYWwgcHJvYmxlbSBiZWNhdXNlIHRoZSBjb21waWxlciBjb3VsZCBpbmxpbmUgaXQsIGFuZCB0aGF0IHdvdWxkIHByZXZlbnQgbWUgZnJvbSB0YXJnZXRpbmcgaXQgZGlyZWN0bHkgd2l0aCBzeXprYWxsZXIuCgpJIGhhZCBjb25zaWRlcmVkIGBpZWVlODAyMTFfcnVudGltZV9jaGFuZ2VfaWZ0eXBlYCB3aGljaCBpcyBhbHNvIHN0YXRpYy4gSSBhbHNvIGxvb2tlZCBhdCBgaWVlZTgwMjExX3NkYXRhX3N0b3BgLCB3aGljaCBpcyBub24tc3RhdGljLCBidXQgaXQgYXBwZWFycyB0byBiZSBwcmltYXJpbHkgdXNlZCBmcm9tIHdpdGhpbiBgY2ZnLmNgIGZvciBzcGVjaWZpYyBjYXNlcy4gSSBzZWUgYGllZWU4MDIxMV9zdG9wYCBpcyBhY3R1YWxseSBhc3NpZ25lZCB0byBgLm5kb19zdG9wYCwgd2hpY2ggbWVhbnMgaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNvIGl0JiMzOTtzICpub3QqIGlubGluZWQsIGRlc3BpdGUgYmVpbmcgc3RhdGljLiBUaGUgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgc3RhdGUgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhhdCBtYWtlcyBgaWVlZTgwMjExX3N0b3BgIHNvbWV3aGF0IGF0dHJhY3RpdmUsIGFzIHN5emthbGxlciBjYW4gZGVhbCB3aXRoIHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSBhcmVuJiMzOTt0IGlubGluZWQsIGJ1dCBJIHdhbnQgdG8gYmUgc2FmZS4KCkhvd2V2ZXIsIEkgY29uZmlybWVkIHRoYXQgYGllZWU4MDIxMV9zdG9wYCBpc24mIzM5O3QgZXhwb3J0ZWQsIHdoaWNoIGlzIGxlc3MgaWRlYWwuIEkgYWxzbyBjaGVja2VkIGBpZWVlODAyMTFfaWZfcmVtb3ZlYCBidXQgaXQgZG9lc24mIzM5O3QgY2FsbCBgaWVlZTgwMjExX3NkYXRhX3N0b3BgLgoKTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGJyb2FkZXIgZW50cnkgcG9pbnRzLiBJZiBJJiMzOTttIGNvbnNpZGVyaW5nIGludGVyZmFjZSAqc2h1dGRvd24qLCB0aGUgY2FsbHMgaW4gYG5ldC9jb3JlL2Rldi5jYCBzdWNoIGFzIGBkZXZfY2xvc2VgIGFuZCBgX19kZXZfY2xvc2VfbWFueWAgc2VlbSByZWxldmFudCwgYXMgYXJlIGZ1bmN0aW9ucyB1c2VkIGluIG1hYzgwMjExIHRvIG1hbmFnZSBpbnRlcmZhY2VzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGZ1bmN0aW9ucyBsaWtlIGBtYWM4MDIxMV9kZWxfaW50ZXJmYWNlYCB0byBmaW5kIGEgbm9uLXN0YXRpYyBlbnRyeSBwb2ludCB0byB0aGUgbWFjODAyMTEgc3RvcCBzZXF1ZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWM4MDIxMV9kZWxfaW50ZXJmYWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxMzUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludGVyZmFjZSBEZWxldGlvbiBEZWVwIERpdmUqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyZmFjZSBkZWxldGlvbiBwcm9jZXNzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gYGNmZy5jYC4gVGhhdCYjMzk7cyB0eXBpY2FsbHkgd2hlcmUgdGhlc2Ugc29ydHMgb2YgaW50ZXJmYWNlIG1hbmFnZW1lbnQgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIG9yIGF0IGxlYXN0IHJlZmVyZW5jZWQuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGFjdHVhbCBsb2dpYyBvciBhdCBsZWFzdCBwb2ludGVycyB0byBpdCB3aXRoaW4gdGhhdCBmaWxlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBmdW5jdGlvbiBjYWxscyByZWxhdGVkIHRvIGludGVyZmFjZSB0ZWFyZG93biwgcmVtb3ZhbCBmcm9tIGNvbmZpZ3VyYXRpb24sIGFuZCBsaWtlbHkgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGtlcm5lbCBuZXR3b3JraW5nIHN0YWNrLiBMZXQmIzM5O3Mgc2VlIHdoYXQgYGNmZy5jYCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWxfdmlydHVhbF9pbnRmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9NTk3Nj1jb25zdCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIG1hYzgwMjExX2NvbmZpZ19vcHMgPSB7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNTk3Ny1cdC5hZGRfdmlydHVhbF9pbnRmID0gaWVlZTgwMjExX2FkZF9pZmFjZSxcbm5ldC9tYWM4MDIxMS9jZmcuYzo1OTc4Olx0LmRlbF92aXJ0dWFsX2ludGYgPSBpZWVlODAyMTFfZGVsX2lmYWNlLFxubmV0L21hYzgwMjExL2NmZy5jLTU5NzktXHQuY2hhbmdlX3ZpcnR1YWxfaW50ZiA9IGllZWU4MDIxMV9jaGFuZ2VfaWZhY2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0ODQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91JiMzOTt2ZSBkZXNjcmliZWQ6CgoqKkRlbHZpbmcgaW50byBgaWVlZTgwMjExX2RlbF9pZmFjZWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBpZWVlODAyMTFfZGVsX2lmYWNlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IGhhcHBlbnMgaGVyZSB3aGVuIGEgd2lyZWxlc3MgaW50ZXJmYWNlIGdldHMgZGVsZXRlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQmIzM5O3MgdGhlIHNlcXVlbmNlPyBXaGF0IGFyZSB0aGUgY3JpdGljYWwgcmVzb3VyY2VzIGJlaW5nIGZyZWVkPyBXZeKAmXJlIHRhbGtpbmcgYWJvdXQgZnJlZWluZyB1cCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGEgd2lyZWxlc3MgaW50ZXJmYWNlLCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBhc3NvY2lhdGVkIG1lbW9yeSwgbmV0d29yayBxdWV1ZXMsIHBvdGVudGlhbCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgYW5kIGFueSByZWdpc3RlcmVkIGhhbmRsZXJzIG9yIGNhbGxiYWNrcy4KCkkmIzM5O20gbWVudGFsbHkgc3RlcHBpbmcgdGhyb3VnaCBhIGxpa2VseSBzY2VuYXJpbzogdGhlIGludGVyZmFjZSBpcyBiZWluZyBzaHV0IGRvd24gb3IgcmVtb3ZlZCBlbnRpcmVseS4gVGhlcmVmb3JlLCBJIGV4cGVjdCB0aGVyZeKAmWxsIGJlIGEgY2xlYW4tdXAgb2YgdGhlIGRhdGEgc3RydWN0dXJlcyBJIGtub3cgYXJlIGxpbmtlZCB0byBpdCwgbGlrZSB0aGUgYGllZWU4MDIxMV92aWZgIHN0cnVjdHVyZSwgYW55IGFzc29jaWF0ZWQgdmlydHVhbCBpbnRlcmZhY2VzIChWTEFOcyBvciB2aXJ0dWFsIEFQcyksIGFuZCBwcm9iYWJseSBhbnl0aGluZyBpbiB0aGUgZHJpdmVyJiMzOTtzIHByaXZhdGUgZGF0YSB0aGF0IGl0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGludGVyZmFjZS4gSSBoYXZlIHRvIHRoaW5rIGFib3V0IHRoZSBkaWZmZXJlbnQgc2NlbmFyaW9z4oCUIHdoYXQgaGFwcGVucyBpZiBpdCYjMzk7cyBhIHN0YXRpb24gaW50ZXJmYWNlLCBhbiBBUCBpbnRlcmZhY2UsIGEgbW9uaXRvciBpbnRlcmZhY2U/IFRob3NlIHNob3VsZCBhbGwgYmUgaGFuZGxlZCBjbGVhbmx5LgoKSSYjMzk7bSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgZm9yIHJhY2UgY29uZGl0aW9ucy4gSWYgdGhlcmUgYXJlIGFueSB0aHJlYWRzIG9yIHByb2Nlc3NlcyBzdGlsbCBhY2Nlc3NpbmcgdGhpcyBpbnRlcmZhY2UsIGhvdyBpcyB0aGF0IHN5bmNocm9uaXplZD8gQXJlIG11dGV4ZXMgb3IgcmVmZXJlbmNlIGNvdW50cyBjb3JyZWN0bHkgdXNlZCB0byBwcmV2ZW50IGRvdWJsZS1mcmVlcyBvciB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb25zPyBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgdHJpY2t5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgcm9jayBzb2xpZC4KCkFuZCB3aGF0IGFib3V0IGhhcmR3YXJlPyBUaGlzIGZ1bmN0aW9uIHByb2JhYmx5IGFsc28gbmVlZHMgdG8gdGVsbCB0aGUgaGFyZHdhcmUgdG8gc3RvcCB0cmFuc21pdHRpbmcgYW5kIHJlY2VpdmluZyBvbiB0aGF0IGludGVyZmFjZS4gSSYjMzk7bSBleHBlY3Rpbmcgc29tZSByZWdpc3RlciB3cml0ZXMsIG1heWJlIHNvbWUgRE1BIHNldHVwIHRvIGJlIGNsZWFyZWQsIGFuZCBsaWtlbHkgc29tZSBpbnRlcnJ1cHQgZGlzYWJsZSBsb2dpYyB0byBhdm9pZCBhbnkgZnVydGhlciBpbnRlcmZlcmVuY2UuIEZpbmFsbHksIHRoZSBmdW5jdGlvbiBtdXN0IHVwZGF0ZSBhbnkgbWFzdGVyIHN0cnVjdHVyZXMgKGUuZy4gdGhlIGxpc3Qgb2YgYWxsIGNvbmZpZ3VyZWQgd2lyZWxlc3MgaW50ZXJmYWNlcyksIHRvIGVuc3VyZSB0aGUgc3lzdGVtIGlzIGluIGEgY29uc2lzdGVudCBzdGF0ZSBhbmQgbm8gc3RyYXkgcG9pbnRlcnMgYXJlIGxlZnQgZGFuZ2xpbmcuCgpJIGFsc28gaGF2ZSB0byBzZWUgaG93IGl0IGhhbmRsZXMgZXJyb3JzLiBJZiBhbnkgc3RlcCBvZiB0aGUgZGVsZXRpb24gcHJvY2VzcyBmYWlscywgd2hhdCYjMzk7cyB0aGUgcmVjb3ZlcnkgcGF0aD8gRG9lcyBpdCBhdHRlbXB0IHRvIHJvbGwgYmFjayBhbnkgY2hhbmdlcz8gRG9lcyBpdCBsb2cgZXJyb3JzIHByb3Blcmx5PyBBbmQgZG9lcyBpdCBoYXZlIGFueSBpbXBhY3Qgb24gdGhlIG9wZXJhdGlvbiBvZiBhbnkgb3RoZXIgd2lyZWxlc3MgaW50ZXJmYWNlcz8KCkVzc2VudGlhbGx5LCBJIG5lZWQgdG8gc2VlIGhvdyByb2J1c3QgYW5kIHJlbGlhYmxlIHRoaXMgcm91dGluZSBpcy4gSSYjMzk7bSBsb29raW5nIGZvciBhIGdyYWNlZnVsIGFuZCB0aG9yb3VnaCBjbGVhbnVwLCBwcmV2ZW50aW5nIG1lbW9yeSBsZWFrcywgYW5kIHByZXNlcnZpbmcgdGhlIGludGVncml0eSBvZiB0aGUgd2lyZWxlc3Mgc3RhY2suIExldCYjMzk7cyBzZWUgaG93IHdlbGwgaXQmIzM5O3MgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9kZWxfaWZhY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz0yMDY9c3RhdGljIHN0cnVjdCB3aXJlbGVzc19kZXYgKmllZWU4MDIxMV9hZGRfaWZhY2Uoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjUxLVxubmV0L21hYzgwMjExL2NmZy5jOjI1MjpzdGF0aWMgaW50IGllZWU4MDIxMV9kZWxfaWZhY2Uoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldilcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNTMte1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01OTc2PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcbm5ldC9tYWM4MDIxMS9jZmcuYy01OTc3LVx0LmFkZF92aXJ0dWFsX2ludGYgPSBpZWVlODAyMTFfYWRkX2lmYWNlLFxubmV0L21hYzgwMjExL2NmZy5jOjU5Nzg6XHQuZGVsX3ZpcnR1YWxfaW50ZiA9IGllZWU4MDIxMV9kZWxfaWZhY2UsXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTk3OS1cdC5jaGFuZ2VfdmlydHVhbF9pbnRmID0gaWVlZTgwMjExX2NoYW5nZV9pZmFjZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzNzUKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBGdW5jdGlvbiBTY29wZSBpbiB0aGUgSUVFRSA4MDIuMTEgU3Vic3lzdGVtKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgSUVFRSA4MDIuMTEgY29kZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgaG93IHdlJiMzOTtyZSBtYW5hZ2luZyBpbnRlcmZhY2VzIGFuZCB0aGVpciBsaWZlY3ljbGUuIEkgbm90aWNlZCBgaWVlZTgwMjExX2RlbF9pZmFjZWAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBzY29wZSBhbmQgcG90ZW50aWFsIHZpc2liaWxpdHkgaXNzdWVzIGZvciBleHRlcm5hbCBjYWxscyBvciBleHRlbnNpb25zLiBCdXQgdGhlbiwgaGFuZyBvbi4uLiBgaWVlZTgwMjExX3NkYXRhX3N0b3BgICppc24mIzM5O3QqIGBzdGF0aWNgLiBUaGF0JiMzOTtzIGEgcG9pbnQgb2YgY29udHJhc3QgYW5kIG1ha2VzIG1lIHRoaW5rIHRoZXJlIG1pZ2h0IGJlIGEgZGVzaWduIHByaW5jaXBsZSBhdCBwbGF5IGhlcmUuCgpOb3csIG15IG1pbmQgc2hpZnRzIHRvIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQgbWUgcXVpY2tseSBjaGVjayBgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZWAuIEFoLCBhbm90aGVyIGBzdGF0aWNgIG9uZS4gVGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IGJlY29tZXM6IGFyZSB0aGVyZSAqYW55KiBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBtb2R1bGUgdGhhdCBjb3VsZCBiZSB1dGlsaXplZCBpbiBhbHRlcm5hdGl2ZSBjb2RlIHBhdGhzLCBvciBpbiBleHRlbmRpbmcgY3VycmVudCBiZWhhdmlvcj8gVGhpcyBzZWVtcyBsaWtlIGFuIGludGVyZXN0aW5nIHBvaW50IGZvciByZWZhY3RvcmluZywgb3IgYSByZXZpZXcuIExldCYjMzk7cyBzZWUuLi4gd2hhdCBhYm91dCBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYD8gVGhpcyBuZWVkcyBhIG1vcmUgY2FyZWZ1bCBsb29rLCBtaWdodCBiZSBhIGdvb2QgY2FuZGlkYXRlIGlmIHdlJiMzOTtyZSBsb29raW5nIHRvIG1vZGlmeSBtb25pdG9yIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NmZy5jPTk2PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9tb25fb3B0aW9ucyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTQyLVx0XHRpZiAoaWVlZTgwMjExX3NkYXRhX3J1bm5pbmcoc2RhdGEpKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MTQzOlx0XHRcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xubmV0L21hYzgwMjExL2NmZy5jLTE0NC1cdFx0XHRzZGF0YS1cdTAwM2V1Lm1udHIuZmxhZ3MgPSBwYXJhbXMtXHUwMDNlZmxhZ3M7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MTQ1Olx0XHRcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgMSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMTQ2LVxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTIxOTM9dm9pZCBpZWVlODAyMTFfcmVjYWxjX2lkbGUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjE5NDp2b2lkIGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxOTUtXHRcdFx0XHQgICAgY29uc3QgaW50IG9mZnNldCk7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9NDc5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNjMzLVxubmV0L21hYzgwMjExL2lmYWNlLmM6NjM0Olx0XHRpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKTtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYzNS1cdFx0YnJlYWs7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTE1NT12b2lkIGllZWU4MDIxMV9yZWNhbGNfb2ZmbG9hZChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMTcxLVxubmV0L21hYzgwMjExL2lmYWNlLmM6MTE3Mjp2b2lkIGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTExNzMtXHRcdFx0XHQgICAgY29uc3QgaW50IG9mZnNldClcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xMzY1PWludCBpZWVlODAyMTFfZG9fb3BlbihzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCBib29sIGNvbWluZ191cClcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNTA1LVxubmV0L21hYzgwMjExL2lmYWNlLmM6MTUwNjpcdFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAxKTtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE1MDctXHRcdGllZWU4MDIxMV9jb25maWd1cmVfZmlsdGVyKGxvY2FsKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2MjIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXMgU3ltYm9sIENvbmZpcm1hdGlvbiBhbmQgS2NvbmZpZyBEZXBlbmRlbmN5IENoZWNrKioKCk9rYXksIHNvIEkmIzM5O3ZlIGp1c3QgY29uZmlybWVkIHNvbWV0aGluZyBpbXBvcnRhbnQgYWJvdXQgdGhpcyBzZXQgb2YgZnVuY3Rpb25zLiBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCwgYGllZWU4MDIxMV9kb19vcGVuYCwgYW5kIGBpZWVlODAyMTFfc2RhdGFfc3RvcGAgYXJlICpub3QqIGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0IG1lYW5zIHRoZXkmIzM5O3JlIGFjY2Vzc2libGUgb3V0c2lkZSBvZiB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0sIHRoaXMgbWFrZXMgdGhlbSBwZXJmZWN0IGNhbmRpZGF0ZXMgdG8gYmUgY29uc2lkZXJlZCBhcyBGb2N1c1N5bWJvbHMuIFRoaXMgYWNjZXNzaWJpbGl0eSBpcyBleGFjdGx5IHdoYXQgSSBuZWVkIHRvIGxldmVyYWdlIGluIG15IGFuYWx5c2lzLgoKTm93IHRoYXQgSSBoYXZlIGNvbmZpcm1lZCB0aGVpciBzdWl0YWJpbGl0eSBhcyBGb2N1c1N5bWJvbHMsIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIG1hYzgwMjExLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgZ292ZXJuIHRoZSBpbmNsdXNpb24gYW5kIGJlaGF2aW9yIG9mIHRoaXMgcGFydGljdWxhciBtb2R1bGUgdG8gY29udGludWUgd2l0aCBteSBhc3Nlc3NtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTQ5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgb3BlcmF0aW9uIHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgYE1BQzgwMjExYCBjb25maWd1cmF0aW9uLiBUaGF0JiMzOTtzIHRoZSBiaWcgcGljdHVyZSwgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjcnVjaWFsIGNvbmZpZyBwYXJhbWV0ZXJzIGx1cmtpbmcgYXJvdW5kIHRoYXQgSSYjMzk7bSBtaXNzaW5nLiBXZSYjMzk7cmUgdGFsa2luZyBsb3ctbGV2ZWwgaGVyZSwgc28gb3Zlcmxvb2tpbmcgYSBzZWVtaW5nbHkgbWlub3Igb3B0aW9uIGNvdWxkIGJlIGRpc2FzdHJvdXMuCgpOb3csIHRoZSBjb2RlIG1vZGlmaWNhdGlvbiBpcyBhcHBhcmVudGx5IGZvY3VzZWQgaW4gYG5ldC9tYWM4MDIxMS9pZmFjZS5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBJJiMzOTtsbCBuZWVkIHRvIG1ldGljdWxvdXNseSBzY2FuIHRoYXQgZmlsZSwgc3BlY2lmaWNhbGx5IGh1bnRpbmcgZm9yIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBibG9ja3MsIHRob3NlIGAjaWZkZWZgIGRpcmVjdGl2ZXMuIEkmIzM5O20gcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gdGhvc2Ugc3Vycm91bmRpbmcgdGhlIGBpZWVlODAyMTFfZG9fc3RvcGAgZnVuY3Rpb24gYW5kLCBjcnVjaWFsbHksIHRoZSBgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUmAgaW50ZXJmYWNlIHR5cGUuIFRob3NlIGFyZSBrZXkgaW5kaWNhdG9ycyB0aGF0IGNvbmRpdGlvbmFsIGxvZ2ljIGJhc2VkIG9uIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIGluIHBsYXkgYW5kIEkgbmVlZCB0byBiZSBhd2FyZSBvZiB3aGF0IGlzIGJlaW5nIGNvbnNpZGVyZWQuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCBpZiBzb21ldGhpbmcgaXMgbWlzc2luZy4gSSBuZWVkIHRvIGJlIHN1cmUgdGhlIGNvbmZpZyBpcyBjb3JyZWN0IGZvciB0aGUgaW50ZW5kZWQgb3BlcmF0aW9uLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBhdm9pZGluZyBzdWJ0bGUsIGhhcmQtdG8tZGVidWcgcHJvYmxlbXMgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05MODAyMTFfSUZUWVBFX01PTklUT1ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvaWZhY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvaWZhY2UuYz0xNjE9c3RhdGljIGludCBpZWVlODAyMTFfdmVyaWZ5X21hYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgdTggKmFkZHIsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTkxLVxubmV0L21hYzgwMjExL2lmYWNlLmM6MTkyOlx0XHRpZiAoaXRlci1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2lmYWNlLmMtMTkzLVx0XHQgICAgIShpdGVyLVx1MDAzZXUubW50ci5mbGFncyBcdTAwMjYgTU9OSVRPUl9GTEFHX0FDVElWRSkpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MjY4PXN0YXRpYyBpbnQgX2llZWU4MDIxMV9jaGFuZ2VfbWFjKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI4NC1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjI4NTpcdGlmIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2lmYWNlLmMtMjg2LVx0ICAgICEoc2RhdGEtXHUwMDNldS5tbnRyLmZsYWdzIFx1MDAyNiBNT05JVE9SX0ZMQUdfQUNUSVZFKSlcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0zMjk9c3RhdGljIGlubGluZSBpbnQgaWRlbnRpY2FsX21hY19hZGRyX2FsbG93ZWQoaW50IHR5cGUxLCBpbnQgdHlwZTIpXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0zMzAte1xubmV0L21hYzgwMjExL2lmYWNlLmM6MzMxOlx0cmV0dXJuIHR5cGUxID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IgfHxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjMzMjpcdFx0dHlwZTIgPT0gTkw4MDIxMV9JRlRZUEVfTU9OSVRPUiB8fFxubmV0L21hYzgwMjExL2lmYWNlLmMtMzMzLVx0XHR0eXBlMSA9PSBOTDgwMjExX0lGVFlQRV9QMlBfREVWSUNFIHx8XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MzQxPXN0YXRpYyBpbnQgaWVlZTgwMjExX2NoZWNrX2NvbmN1cnJlbnRfaWZhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMzU4LVx0XHRcdGlmICgoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfT0NCIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2lmYWNlLmM6MzU5Olx0XHRcdCAgICAgbnNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX01PTklUT1IpIHx8XG5uZXQvbWFjODAyMTEvaWZhY2UuYzozNjA6XHRcdFx0ICAgIChzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2lmYWNlLmMtMzYxLVx0XHRcdCAgICAgbnNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX09DQikpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9NDc5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNTEwLVx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjUxMTpcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUjpcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTUxMi1cdFx0bGlzdF9kZWxfcmN1KFx1MDAyNnNkYXRhLVx1MDAzZXUubW50ci5saXN0KTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02MjAtXHRcdGJyZWFrO1xubmV0L21hYzgwMjExL2lmYWNlLmM6NjIxOlx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NT05JVE9SOlxubmV0L21hYzgwMjExL2lmYWNlLmMtNjIyLVx0XHRsb2NhbC1cdTAwM2Vtb25pdG9ycy0tO1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc0NS1cdFx0YnJlYWs7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzo3NDY6XHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XG5uZXQvbWFjODAyMTEvaWZhY2UuYy03NDctXHRcdGlmIChsb2NhbC1cdTAwM2V2aXJ0X21vbml0b3JzID09IDApXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTIyOD1pbnQgaWVlZTgwMjExX2FkZF92aXJ0dWFsX21vbml0b3Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTI0OS1cdC8qIHNldCB1cCBkYXRhICovXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxMjUwOlx0c2RhdGEtXHUwMDNldmlmLnR5cGUgPSBOTDgwMjExX0lGVFlQRV9NT05JVE9SO1xubmV0L21hYzgwMjExL2lmYWNlLmMtMTI1MS1cdHNucHJpbnRmKHNkYXRhLVx1MDAzZW5hbWUsIElGTkFNU0laLCBcJiMzNDslcy1tb25pdG9yXCYjMzQ7LFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTI1Mi1cdFx0IHdpcGh5X25hbWUobG9jYWwtXHUwMDNlaHcud2lwaHkpKTtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjEyNTM6XHRzZGF0YS1cdTAwM2V3ZGV2LmlmdHlwZSA9IE5MODAyMTFfSUZUWVBFX01PTklUT1I7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMjU0LVx0c2RhdGEtXHUwMDNld2Rldi53aXBoeSA9IGxvY2FsLVx1MDAzZWh3LndpcGh5O1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEyNjgtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxMjY5Olx0cmV0ID0gaWVlZTgwMjExX2NoZWNrX3F1ZXVlcyhzZGF0YSwgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUik7XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMjcwLVx0aWYgKHJldCkge1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTEzNjU9aW50IGllZWU4MDIxMV9kb19vcGVuKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIGJvb2wgY29taW5nX3VwKVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE0MDktXHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNDEwOlx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NT05JVE9SOlxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQxMS1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfQURIT0M6XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQ2Mi1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE0NjM6XHRzZGF0YS1cdTAwM2V2aWYuYWRkcl92YWxpZCA9IHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX01PTklUT1IgfHxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE0NjQtXHRcdFx0XHQoc2RhdGEtXHUwMDNldS5tbnRyLmZsYWdzIFx1MDAyNiBNT05JVE9SX0ZMQUdfQUNUSVZFKTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNDgwLVx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE0ODE6XHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNDgyLVx0XHRpZiAoKHNkYXRhLVx1MDAzZXUubW50ci5mbGFncyBcdTAwMjYgTU9OSVRPUl9GTEFHX0FDVElWRSkgfHxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xODc4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXR1cF9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTQ1LVx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE5NDY6XHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTQ3LVx0XHRzZGF0YS1cdTAwM2VkZXYtXHUwMDNldHlwZSA9IEFSUEhSRF9JRUVFODAyMTFfUkFESU9UQVA7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MjA5OT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfYXNzaWduX3Blcm1fYWRkcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMTE3LVx0c3dpdGNoICh0eXBlKSB7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyMTE4Olx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NT05JVE9SOlxubmV0L21hYzgwMjExL2lmYWNlLmMtMjExOS1cdFx0LyogZG9lc24mIzM5O3QgbWF0dGVyICovXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjE4NS1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShzZGF0YSwgXHUwMDI2bG9jYWwtXHUwMDNlaW50ZXJmYWNlcywgbGlzdCkge1xubmV0L21hYzgwMjExL2lmYWNlLmM6MjE4NjpcdFx0XHRpZiAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfTU9OSVRPUilcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIxODctXHRcdFx0XHRjb250aW51ZTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0yMjI4PWludCBpZWVlODAyMTFfaWZfYWRkKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIyODEtXHRcdGlmICh0eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyMjgyOlx0XHQgICAgKHR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfTU9OSVRPUiB8fFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjI4My1cdFx0ICAgICAocGFyYW1zLVx1MDAzZWZsYWdzIFx1MDAyNiBNT05JVE9SX0ZMQUdfQUNUSVZFKSkpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMjM5MS1cdFx0bmRldi1cdTAwM2VtaW5fbXR1ID0gMjU2O1xubmV0L21hYzgwMjExL2lmYWNlLmM6MjM5MjpcdFx0aWYgKHR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfTU9OSVRPUilcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIzOTMtXHRcdFx0bmRldi1cdTAwM2VtYXhfbXR1ID0gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcwMjEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBNaXNzaW5nIE1vbml0b3IgTW9kZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIEkgc2VlIG5vIGAjaWZkZWZgIGd1YXJkaW5nIHRoZSBgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUmAgZGVmaW5pdGlvbi4gVGhhdCYjMzk7cyBhIGxpdHRsZSB1bnVzdWFsLCBnaXZlbiB0aGUgY29udGV4dC4gVGhlIGNvbmZpZ3VyYXRpb24sIGFzIGZhciBhcyBJIGNhbiBzZWUgZnJvbSB0aGlzIHNuaXBwZXQsIHNlZW1zIHRvIGJlIGBNQUM4MDIxMWAuIEJ1dCB3YWl0IGEgc2Vjb25kLCBpc24mIzM5O3QgYE1BQzgwMjExYCBhIHRyaXN0YXRlIG9wdGlvbj8gVGhhdCBtZWFucyBpdCBjYW4gYmUgYnVpbHQgaW4sIGFzIGEgbW9kdWxlLCBvciBkaXNhYmxlZC4gU28gdGhlIHF1ZXN0aW9uIGlzLCAqd2h5KiBpc24mIzM5O3QgdGhpcyBkZWZpbmVkIGF0IGFsbD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW5vdGhlciByZWxldmFudCBjb25maWcgaW52b2x2ZWQgaGVyZS4gVGltZSB0byBkaWcgaW50byBgbmV0L21hYzgwMjExL01ha2VmaWxlYCBhbmQgc2VlIGlmIHRoZSBidWlsZCBwcm9jZXNzIGlzIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBzb21ldGhpbmcgb3Igbm90LiBJJiMzOTttIGd1ZXNzaW5nIHRoZXJlJiMzOTtzIGEgZGVwZW5kZW5jeSBJIGhhdmVuJiMzOTt0IHNwb3R0ZWQgeWV0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZmFjZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvTWFrZWZpbGU9NT1tYWM4MDIxMS15IDo9IFxcXG4tLVxubmV0L21hYzgwMjExL01ha2VmaWxlLTE3LVx0aWJzcy5vIFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGU6MTg6XHRpZmFjZS5vIFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtMTktXHRsaW5rLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc0MTgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENvbXBpbGF0aW9uIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBgaWZhY2Uub2AgaXMgZGVmaW5pdGVseSBidWlsdCB3aGVuIHRoZSBgTUFDODAyMTFgIHdpcmVsZXNzIHN0YWNrIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBuZXh0IG1vdmUgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE1BQzgwMjExYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgaXRzIGluY2x1c2lvbiBhbmQgd2hhdCBvdGhlciBtb2R1bGVzIG9yIGZlYXR1cmVzIGl0IHJlbGllcyBvbi4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBzdGFydCB3aXRoIHRoZSBidWlsZCBzeXN0ZW0gY29uZmlndXJhdGlvbiBhbmQgcG9zc2libHkgdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIGZpbGVzLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmN5IHRyZWUgZm9yIGBNQUM4MDIxMWAgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCB3aHkgYGlmYWNlLm9gIGlzIGJlaW5nIGluY2x1ZGVkIGluIHRoZSBidWlsZCBwcm9jZXNzLiBPbmNlIEkgaGF2ZSB0aGF0IG5haWxlZCBkb3duLCBJIGNhbiBkZXRlcm1pbmUgdGhlIGxpa2VseSByZWFzb25zIGZvciBgaWZhY2Uub2AgYmVpbmcgYnVpbHQgd2hlbiBgTUFDODAyMTFgIGlzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMsIGFuZCBzZWUgd2hhdCBjb2RlIHBhdGhzIGdldCBleGVyY2lzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctOTgtXHRib29sIFwmIzM0O1RyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjEwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O1ZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cdGludCBcJiMzNDtTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXCYjMzQ7IGlmIE1BQzgwMjExX0RFQlVHX01FTlVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4NzcKCQkJCQkJCW91dHB1dDogMTc4CgkJCQkJCQl0aG91Z2h0czogNzE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIG1hYzgwMjExIEJ1ZyBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggcmVsYXRlZCB0byB0aGUgYE1BQzgwMjExYCBjb3JlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgaWZhY2UuY2AgZmlsZS4gVG8gcHJvcGVybHkgdGVzdCB0aGlzLCBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIG5lZWQgYm90aCBgTUFDODAyMTFgIGFuZCBhIGRyaXZlciBsaWtlIGBNQUM4MDIxMV9IV1NJTWAgZW5hYmxlZC4gQWRkaW5nIHRob3NlIHRvIG15IGBFbmFibGVDb25maWdzYCBsaXN0IHNlZW1zIGxpa2UgdGhlIHJpZ2h0IG1vdmUuCgpOb3csIGRpZ2dpbmcgaW50byB0aGUgY29kZSBjaGFuZ2UsIGl0IGxvb2tzIGxpa2UgYSBzdWJ0bGUgYnVnIGhhcyBiZWVuIGFkZHJlc3NlZCBpbiB0aGUgaW50ZXJmYWNlIHRlYXJkb3duIGxvZ2ljLiBUaGUgY3JpdGljYWwgZnVuY3Rpb24gaGVyZSBpcyBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYC4gSSBhbHNvIHdhbnQgdG8ga2VlcCBpbiBtaW5kLCBmb3IgY29tcGxldGVuZXNzLCBgaWVlZTgwMjExX2RvX29wZW5gIGFuZCBgaWVlZTgwMjExX3NkYXRhX3N0b3BgLiBHb29kLCB0aGVzZSBhcmUgYWxsIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCBzbyB0aGV5IGFyZSBnb29kIGNhbmRpZGF0ZXMgdG8gY29uc2lkZXIgZHVyaW5nIGZ1enppbmcuCgpUaGUgb3JpZ2luYWwgY29kZSB3YXMgc2tpcHBpbmcgYSBjYWxsIHRvIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKWAgdW5kZXIgc3BlY2lmaWMgY29uZGl0aW9ucyByZWxhdGVkIHRvIG1vbml0b3IgaW50ZXJmYWNlcyDigJMgc3BlY2lmaWNhbGx5IGlmIHRoZSBgTU9OSVRPUl9GTEFHX0FDVElWRWAgb3IgYE5PX1ZJUlRVQUxfTU9OSVRPUmAgZmxhZ3Mgd2VyZSBzZXQuIFRoaXMgY29uZGl0aW9uYWwgb21pc3Npb24gY291bGQgbGVhZCB0byBtb25pdG9yIGZsYWcgbGVha3MgYW5kIHBvdGVudGlhbCBpbWJhbGFuY2VzLCB3aGljaCBpcyBkZWZpbml0ZWx5IGJhZCBuZXdzLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyBpbiB0aGUgaGVhcnQgb2YgdGhlIG1hYzgwMjExIGludGVyZmFjZSBsb2dpYywgYW5kIHNpbmNlIGl0JiMzOTtzIHJlbGV2YW50IHRvIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBgbWFjODAyMTFfaHdzaW1gLCBmdXp6aW5nIHRoaXMgYXJlYSBpcyBhYnNvbHV0ZWx5IHdvcnRoIHRoZSBlZmZvcnQuIEl0JiMzOTtzIGFuIGFyZWEgSSYjMzk7ZCBkZWZpbml0ZWx5IHdhbnQgdG8gZXhwbG9yZSB3aXRoIGZ1enppbmcuIExldCYjMzk7cyBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz10cnVlYC4KCkxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfZG9fb3BlbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfc2RhdGFfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBtYWM4MDIxMSB3aGVyZSBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSlgIHdhcyBjb25kaXRpb25hbGx5IHNraXBwZWQgZHVyaW5nIG1vbml0b3IgaW50ZXJmYWNlIHRlYXJkb3duLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtYWM4MDIxMSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfZG9fb3BlbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfc2RhdGFfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBtYWM4MDIxMSB3aGVyZSBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSlgIHdhcyBjb25kaXRpb25hbGx5IHNraXBwZWQgZHVyaW5nIG1vbml0b3IgaW50ZXJmYWNlIHRlYXJkb3duLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtYWM4MDIxMSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIGJ5IG1vdmluZyB0aGUgY2FsbCB0byBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCBvdXRzaWRlIG9mIGEgY29uZGl0aW9uYWwgYmxvY2suIFRoaXMgaXMgYSBsb2dpYyBmaXggcmVsYXRlZCB0byBpbnRlcmZhY2Ugc3RhdGUgbWFuYWdlbWVudCBhbmQgbW9uaXRvciBmbGFncyBhZGp1c3RtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyByZXN1bHRpbmcgZnJvbSBpbmNvcnJlY3Qgc3RhdGUgbWFuYWdlbWVudCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gb3Igb3RoZXIgYnVnIGRldGVjdG9ycy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTNlNDZlYjJiOTgzZTlmYjZjZDQzNmEwNzVjMmY0ZDEzNzU2MTQyMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDI1IDA1OjM0OjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2lmYWNlLmMgYi9uZXQvbWFjODAyMTEvaWZhY2UuYwppbmRleCA0MzQ2MGE3MDVhNmJkLi42ZmMwMWQ4NWVlYTliIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvaWZhY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvaWZhY2UuYwpAQCAtNjI5LDkgJiM0Mzs2MjksOSBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfZG9fc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgYm9vbCBnb2luZ19kbwogCQkJCWxvY2FsLSZndDtody5jb25mLmZsYWdzICZhbXA7PSB+SUVFRTgwMjExX0NPTkZfTU9OSVRPUjsKIAkJCQlod19yZWNvbmZfZmxhZ3MgfD0gSUVFRTgwMjExX0NPTkZfQ0hBTkdFX01PTklUT1I7CiAJCQl9Ci0KLQkJCWllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpOwogCQl9CiYjNDM7CiYjNDM7CQlpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKTsKIAkJYnJlYWs7CiAJY2FzZSBOTDgwMjExX0lGVFlQRV9OQU46CiAJCS8qIENoZWNrIGlmIGFueSBvcGVuIE5BTl9EQVRBIGludGVyZmFjZXMgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTUFDODAyMTEgSW50ZXJmYWNlIFN0b3AgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbiBgbmV0L21hYzgwMjExL2lmYWNlLmNgLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBzdG9wcGluZyBhbiBpbnRlcmZhY2UuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIG1vdmluZyB0aGUgY2FsbCB0byBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7YCBvdXQgb2YgdGhlIGNvbmRpdGlvbmFsIGJsb2NrIHdpdGhpbiBgaWVlZTgwMjExX2RvX3N0b3BgLiBMZXQmIzM5O3MgY2xhcmlmeSB0aGUgaW50ZW50LgoKTG9va2luZyBhdCB0aGUgZGlmZiwgaXQgYXBwZWFycyB0aGV5JiMzOTt2ZSB0YWtlbiB0aGUgY2FsbCB0byBhZGp1c3QgdGhlIG1vbml0b3IgZmxhZ3MsIHdoaWNoIHdhcyBwcmV2aW91c2x5IGNvbmRpdGlvbmFsIG9uIHRoZSBgSUVFRTgwMjExX0NPTkZfTU9OSVRPUmAgZmxhZywgYW5kIGFyZSBub3cgYXBwbHlpbmcgaXQgdW5jb25kaXRpb25hbGx5IHdoZW4gYW4gaW50ZXJmYWNlIGlzIHN0b3BwZWQuIFRoaXMgbGlrZWx5IGZpeGVzIGEgbG9naWMgYnVnLiBUaGUgY29tbWVudCBzdWdnZXN0cyB0aGV5IHdlcmUgbm90IHVwZGF0aW5nIHRoZSBtb25pdG9yIGZsYWdzIGNvcnJlY3RseSBmb3IgYWxsIGNhc2VzLgoKVGhlIHF1ZXN0aW9uIG5vdyBpcywgd2hhdCYjMzk7cyB0aGUgcG90ZW50aWFsIGltcGFjdD8gQ291bGQgdGhpcyBpbnRyb2R1Y2Ugc29tZSBzdWJ0bGUgYmVoYXZpb3IgY2hhbmdlPyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUgY291bGQgYmUgc29tZSB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MgcmlzayBkdWUgdG8gdGhlIGNoYW5nZS4gTm8sIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MganVzdCBhZGp1c3Rpbmcgc29tZSBmbGFncy9jb3VudGVycyBiYXNlZCBvbiB0aGUgc3RhdGUuIEl0IHNlZW1zIHRoYXQgaXQgbWFrZXMgc2Vuc2UgdG8gdXBkYXRlIHRoZSBtb25pdG9yIGZsYWdzIGluIGFsbCBjYXNlcyB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgc3RvcHBlZCBhbmQgaXQgbWFrZXMgc2Vuc2UgdG8gZG8gaXQgb3V0c2lkZSBvZiB0aGlzIGNvbmRpdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NgIGp1c3QgdG8gYmUgc3VyZSwgYnV0IG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgYnVnIGZpeC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9OTY9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X21vbl9vcHRpb25zKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0xNDItXHRcdGlmIChpZWVlODAyMTFfc2RhdGFfcnVubmluZyhzZGF0YSkpIHtcbm5ldC9tYWM4MDIxMS9jZmcuYzoxNDM6XHRcdFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMTQ0LVx0XHRcdHNkYXRhLVx1MDAzZXUubW50ci5mbGFncyA9IHBhcmFtcy1cdTAwM2VmbGFncztcbm5ldC9tYWM4MDIxMS9jZmcuYzoxNDU6XHRcdFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAxKTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNDYtXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjE5Mz12b2lkIGllZWU4MDIxMV9yZWNhbGNfaWRsZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCk7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMTk0OnZvaWQgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE5NS1cdFx0XHRcdCAgICBjb25zdCBpbnQgb2Zmc2V0KTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02MzMtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo2MzQ6XHRcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtNjM1LVx0XHRicmVhaztcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xMTU1PXZvaWQgaWVlZTgwMjExX3JlY2FsY19vZmZsb2FkKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTExNzEtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxMTcyOnZvaWQgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTE3My1cdFx0XHRcdCAgICBjb25zdCBpbnQgb2Zmc2V0KVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTEzNjU9aW50IGllZWU4MDIxMV9kb19vcGVuKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIGJvb2wgY29taW5nX3VwKVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE1MDUtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNTA2Olx0XHRpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIDEpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtMTUwNy1cdFx0aWVlZTgwMjExX2NvbmZpZ3VyZV9maWx0ZXIobG9jYWwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjA5CgkJCQkJCQlvdXRwdXQ6IDE2OAoJCQkJCQkJdGhvdWdodHM6IDE2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBjb2RlIGFuZCwgZnJhbmtseSwgSSBkb24mIzM5O3Qgc2VlIGFueXRoaW5nIGhlcmUgdGhhdCBzY3JlYW1zICYjMzQ7S01TQU4gYWxlcnQuJiMzNDsgVGhlIGZ1bmN0aW9uIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NgIGlzIGVzc2VudGlhbGx5IGp1c3QgdHdlYWtpbmcgZmxhZ3MgYW5kIGNvdW50ZXJzLiBObyBldmlkZW5jZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB0b3VjaGVkLCBubyBvYnZpb3VzIGluZm8gbGVha3MsIGFuZCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBiZWluZyBleHBvc2VkLgoKVGhlIGNoYW5nZSBpdHNlbGYg4oCTIG1vdmluZyB0aGUgZnVuY3Rpb24gY2FsbCBvdXQgb2YgdGhhdCBpbm5lciBibG9jayBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIOKAkyBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGxvZ2ljIGZpeC4gSXTigJlzIGFib3V0IGludGVyZmFjZSBzdGF0ZSBtYW5hZ2VtZW50LCBnZXR0aW5nIHRoZSBzZXF1ZW5jaW5nIHJpZ2h0LiBXaGlsZSB0aGVvcmV0aWNhbGx5LCBhbnkgY29kZSBjaGFuZ2UgY2FuICpwb3RlbnRpYWxseSogbGVhZCB0byBhIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgaXNzdWUgaWYgdGhlIHN0YXRlIGlzIG1lc3NlZCB1cCwgdGhhdCYjMzk7cyBub3Qgc3BlY2lmaWNhbGx5IGEgS01TQU4gY29uY2Vybi4gS0FTQU4gYW5kIExPQ0tERVAgbWlnaHQgYmUgcmVsZXZhbnQgKmlmKiB0aGlzIGludHJvZHVjZWQgYSBtb3JlIGNvbXBsZXggYnVnLCBidXQgZm9yIG5vdywgdGhpcyBjaGFuZ2UgaXNuJiMzOTt0IEtNU0FOLXNwZWNpZmljLiBNeSBjb25jbHVzaW9uOiBLTVNBTiBpc24mIzM5O3QgbmVlZGVkIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIGJ5IG1vdmluZyB0aGUgY2FsbCB0byBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCBvdXRzaWRlIG9mIGEgY29uZGl0aW9uYWwgYmxvY2suIFRoaXMgaXMgYSBsb2dpYyBmaXggcmVsYXRlZCB0byBpbnRlcmZhY2Ugc3RhdGUgbWFuYWdlbWVudCBhbmQgbW9uaXRvciBmbGFncyBhZGp1c3RtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyByZXN1bHRpbmcgZnJvbSBpbmNvcnJlY3Qgc3RhdGUgbWFuYWdlbWVudCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gb3Igb3RoZXIgYnVnIGRldGVjdG9ycy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIGJ5IG1vdmluZyB0aGUgY2FsbCB0byBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCBvdXRzaWRlIG9mIGEgY29uZGl0aW9uYWwgYmxvY2suIFRoaXMgaXMgYSBsb2dpYyBmaXggcmVsYXRlZCB0byBpbnRlcmZhY2Ugc3RhdGUgbWFuYWdlbWVudCBhbmQgbW9uaXRvciBmbGFncyBhZGp1c3RtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyByZXN1bHRpbmcgZnJvbSBpbmNvcnJlY3Qgc3RhdGUgbWFuYWdlbWVudCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gb3Igb3RoZXIgYnVnIGRldGVjdG9ycy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzQ6NTAuNTc5NTU1NjI0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NTE2NTcxMzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFnc1wiLFxuICAgIFwiaWVlZTgwMjExX2RvX29wZW5cIixcbiAgICBcImllZWU4MDIxMV9zZGF0YV9zdG9wXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgaW4gYGllZWU4MDIxMV9kb19zdG9wYCBieSBtb3ZpbmcgdGhlIGNhbGwgdG8gYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFnc2Agb3V0c2lkZSBvZiBhIGNvbmRpdGlvbmFsIGJsb2NrLiBUaGlzIGlzIGEgbG9naWMgZml4IHJlbGF0ZWQgdG8gaW50ZXJmYWNlIHN0YXRlIG1hbmFnZW1lbnQgYW5kIG1vbml0b3IgZmxhZ3MgYWRqdXN0bWVudC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBjcmVhdGluZyBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVzdWx0aW5nIGZyb20gaW5jb3JyZWN0IHN0YXRlIG1hbmFnZW1lbnQgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIG9yIG90aGVyIGJ1ZyBkZXRlY3RvcnMuIEEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbWFjODAyMTEgd2hlcmUgYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpYCB3YXMgY29uZGl0aW9uYWxseSBza2lwcGVkIGR1cmluZyBtb25pdG9yIGludGVyZmFjZSB0ZWFyZG93bi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWFjODAyMTEgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYG1hYzgwMjExX2h3c2ltYC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzQ6NTAuNTc5NTYwNDI0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY3ODkwNDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTNlNDZlYjJiOTgzZTlmYjZjZDQzNmEwNzVjMmY0ZDEzNzU2MTQyMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAyNSAwNTozNDo0OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWZhY2UuYyBiL25ldC9tYWM4MDIxMS9pZmFjZS5jXFxuaW5kZXggNDM0NjBhNzA1YTZiZC4uNmZjMDFkODVlZWE5YiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvaWZhY2UuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9pZmFjZS5jXFxuQEAgLTYyOSw5ICs2MjksOSBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfZG9fc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgYm9vbCBnb2luZ19kb1xcbiBcXHRcXHRcXHRcXHRsb2NhbC1cXHUwMDNlaHcuY29uZi5mbGFncyBcXHUwMDI2PSB+SUVFRTgwMjExX0NPTkZfTU9OSVRPUjtcXG4gXFx0XFx0XFx0XFx0aHdfcmVjb25mX2ZsYWdzIHw9IElFRUU4MDIxMV9DT05GX0NIQU5HRV9NT05JVE9SO1xcbiBcXHRcXHRcXHR9XFxuLVxcbi1cXHRcXHRcXHRpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKTtcXG4gXFx0XFx0fVxcbitcXG4rXFx0XFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIE5MODAyMTFfSUZUWVBFX05BTjpcXG4gXFx0XFx0LyogQ2hlY2sgaWYgYW55IG9wZW4gTkFOX0RBVEEgaW50ZXJmYWNlcyAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNDo1MS44NDgwMzQxNTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5NDE3NjkyNzM4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NcIixcbiAgICBcImllZWU4MDIxMV9kb19vcGVuXCIsXG4gICAgXCJpZWVlODAyMTFfc2RhdGFfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG1hYzgwMjExIHdoZXJlIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKWAgd2FzIGNvbmRpdGlvbmFsbHkgc2tpcHBlZCBkdXJpbmcgbW9uaXRvciBpbnRlcmZhY2UgdGVhcmRvd24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1hYzgwMjExIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGBtYWM4MDIxMV9od3NpbWAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEzZTQ2ZWIyYjk4M2U5ZmI2Y2Q0MzZhMDc1YzJmNGQxMzc1NjE0MjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAyNSAwNTozNDo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZmFjZS5jIGIvbmV0L21hYzgwMjExL2lmYWNlLmNcbmluZGV4IDQzNDYwYTcwNWE2YmQuLjZmYzAxZDg1ZWVhOWIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvaWZhY2UuY1xuKysrIGIvbmV0L21hYzgwMjExL2lmYWNlLmNcbkBAIC02MjksOSArNjI5LDkgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG9cbiBcdFx0XHRcdGxvY2FsLVx1MDAzZWh3LmNvbmYuZmxhZ3MgXHUwMDI2PSB+SUVFRTgwMjExX0NPTkZfTU9OSVRPUjtcbiBcdFx0XHRcdGh3X3JlY29uZl9mbGFncyB8PSBJRUVFODAyMTFfQ09ORl9DSEFOR0VfTU9OSVRPUjtcbiBcdFx0XHR9XG4tXG4tXHRcdFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7XG4gXHRcdH1cbitcbitcdFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9OQU46XG4gXHRcdC8qIENoZWNrIGlmIGFueSBvcGVuIE5BTl9EQVRBIGludGVyZmFjZXMgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM0OjUxLjg0ODAzNTY5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDAwNzcxMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgbmV0L21hYzgwMjExL2lmYWNlLmNgIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L21hYzgwMjExL2lmYWNlLmNgLCBhbmQgc3BlY2lmaWNhbGx5IGBpZWVlODAyMTFfZG9fc3RvcGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGF0IHN1Z2dlc3RzIHNvbWV0aGluZyByZWxhdGVkIHRvIGludGVyZmFjZSBzdG9wcGluZywgd2hpY2ggaXMgcHJldHR5IGZ1bmRhbWVudGFsLiBUaGUgbW9kaWZpY2F0aW9uIGlzIGZvY3VzZWQgb24gbW92aW5nIHRoZSBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCBjYWxsLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGF0IGl0J3MgKm1vdmVkIG91dCogb2YgdGhlIGlubmVyIGBpZmAgYmxvY2suIExldCBtZSBwdWxsIHVwIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24gd2l0aGluIGBpZWVlODAyMTFfZG9fc3RvcGAgaXRzZWxmIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgdW5kZXJzdGFuZCB0aGUgb3JpZ2luYWwgcGxhY2VtZW50IG9mIHRoYXQgYGFkanVzdF9tb25pdG9yX2ZsYWdzYCBjYWxsIGFuZCBob3cgdGhpcyBjaGFuZ2UgbWlnaHQgaW1wYWN0IGJlaGF2aW9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyB3aXRoaW4gdGhhdCBpbm5lciBgaWZgIGJsb2NrIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2UuIElzIHRoZXJlIGEgcmFjZSBjb25kaXRpb24gb3IgYSBzcGVjaWZpYyBlZGdlIGNhc2UgdGhleSBhcmUgdHJ5aW5nIHRvIGZpeD8gSSBuZWVkIHRvIGFuYWx5emUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZ3Jhc3AgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIHNoaWZ0LiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgdGhlIGZsYWdzIGFuZCB1bmRlcnN0YW5kIHRoZWlyIGNvbnRleHQgaW4gdGhlIG1vbml0b3IgbW9kZSBzZXR0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDcyLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzQ6NTUuOTQ4MTE1NDYyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjI1MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9kb19zdG9wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9pZmFjZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9pZmFjZS5jPTQ2MT1zdGF0aWMgaW50IGllZWU4MDIxMV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00NzgtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6NDc5OnN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNDgwLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTg0NT1zdGF0aWMgaW50IGllZWU4MDIxMV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NjctXFxubmV0L21hYzgwMjExL2lmYWNlLmM6ODY4OlxcdGllZWU4MDIxMV9kb19zdG9wKHNkYXRhLCB0cnVlKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NjktXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xOTgwPXN0YXRpYyBpbnQgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIwNDQtXFx0LyogZG9fc3RvcCB3aWxsIHN5bmNocm9uaXplX3JjdSgpIGZpcnN0IHRoaW5nICovXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MjA0NTpcXHRpZWVlODAyMTFfZG9fc3RvcChzZGF0YSwgZmFsc2UpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIwNDYtXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0yNDQwPXZvaWQgaWVlZTgwMjExX3NkYXRhX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yNDQzLVxcdFxcdHJldHVybjtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyNDQ0OlxcdGllZWU4MDIxMV9kb19zdG9wKHNkYXRhLCB0cnVlKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yNDQ1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzQ6NTUuOTkxNzQzMDYxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzMDQ5OTM0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgaWVlZTgwMjExX2RvX3N0b3BgIE1vZGlmaWNhdGlvbioqXG5cbkFscmlnaHQsIHNvIGEgcGF0Y2ggaGFzIGxhbmRlZCB0aGF0J3MgdHdlYWtpbmcgdGhlIGhhbmRsaW5nIG9mIGBOTDgwMjExX0lGVFlQRV9NT05JVE9SYCAob3Igc29tZXRoaW5nIGFuYWxvZ291cykgd2l0aGluIHRoZSBgaWVlZTgwMjExX2RvX3N0b3BgIGZ1bmN0aW9uLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBcIk9rYXksIGludGVyZXN0aW5nLiBMZXQncyBkaWcgaW50byB0aGlzLlwiIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgY2hhbmdlIHdhcyBtYWRlLiBXaGF0IHdhcyB0aGUgcmF0aW9uYWxlPyBXaGF0IHNwZWNpZmljIHByb2JsZW0gb3IgbGltaXRhdGlvbiBpbiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24gcHJvbXB0ZWQgdGhpcyBtb2RpZmljYXRpb24/IEJlZm9yZSBJIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhlIGNvZGUgaXRzZWxmLCBJIHdhbnQgdG8gZXN0YWJsaXNoIHRoZSAqY29udGV4dCouIFRoaXMgbWVhbnMgSSdsbCBiZSBsb29raW5nIGZvciB0aGUgc3Vycm91bmRpbmcgY29kZSwgdGhlIGNvbW1pdCBtZXNzYWdlLCB0aGUgYnVnIHJlcG9ydCAoaWYgdGhlcmUgaXMgb25lKSwgYW55dGhpbmcgdGhhdCBoZWxwcyBzaGVkIGxpZ2h0IG9uIHRoZSBkZXNpZ24gZGVjaXNpb24uIFRoaXMgaXMgaG93IEknbGwgZW5zdXJlIHRoaXMgY2hhbmdlIGlzIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjMsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNDo1OS41MjIyNDU1OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvaWZhY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2MTA6XFx0XFx0aWYgKGdvaW5nX2Rvd24pXFxuIDYxMTpcXHRcXHRcXHRsb2NhbC1cXHUwMDNlb3Blbl9jb3VudC0tO1xcbiA2MTI6XFx0XFxuIDYxMzpcXHRcXHRzd2l0Y2ggKHNkYXRhLVxcdTAwM2V2aWYudHlwZSkge1xcbiA2MTQ6XFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOlxcbiA2MTU6XFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNnNkYXRhLVxcdTAwM2V1LnZsYW4ubGlzdCk7XFxuIDYxNjpcXHRcXHRcXHRSQ1VfSU5JVF9QT0lOVEVSKHNkYXRhLVxcdTAwM2V2aWYuYnNzX2NvbmYuY2hhbmN0eF9jb25mLCBOVUxMKTtcXG4gNjE3OlxcdFxcdFxcdC8qIHNlZSBjb21tZW50IGluIHRoZSBkZWZhdWx0IGNhc2UgYmVsb3cgKi9cXG4gNjE4OlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX2tleXMoc2RhdGEsIHRydWUpO1xcbiA2MTk6XFx0XFx0XFx0Lyogbm8gbmVlZCB0byB0ZWxsIGRyaXZlciAqL1xcbiA2MjA6XFx0XFx0XFx0YnJlYWs7XFxuIDYyMTpcXHRcXHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XFxuIDYyMjpcXHRcXHRcXHRsb2NhbC1cXHUwMDNlbW9uaXRvcnMtLTtcXG4gNjIzOlxcdFxcbiA2MjQ6XFx0XFx0XFx0aWYgKCEoc2RhdGEtXFx1MDAzZXUubW50ci5mbGFncyBcXHUwMDI2IE1PTklUT1JfRkxBR19BQ1RJVkUpIFxcdTAwMjZcXHUwMDI2XFxuIDYyNTpcXHRcXHRcXHQgICAgIWllZWU4MDIxMV9od19jaGVjayhcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBOT19WSVJUVUFMX01PTklUT1IpKSB7XFxuIDYyNjpcXHRcXG4gNjI3OlxcdFxcdFxcdFxcdGxvY2FsLVxcdTAwM2V2aXJ0X21vbml0b3JzLS07XFxuIDYyODpcXHRcXHRcXHRcXHRpZiAobG9jYWwtXFx1MDAzZXZpcnRfbW9uaXRvcnMgPT0gMCkge1xcbiA2Mjk6XFx0XFx0XFx0XFx0XFx0bG9jYWwtXFx1MDAzZWh3LmNvbmYuZmxhZ3MgXFx1MDAyNj0gfklFRUU4MDIxMV9DT05GX01PTklUT1I7XFxuIDYzMDpcXHRcXHRcXHRcXHRcXHRod19yZWNvbmZfZmxhZ3MgfD0gSUVFRTgwMjExX0NPTkZfQ0hBTkdFX01PTklUT1I7XFxuIDYzMTpcXHRcXHRcXHRcXHR9XFxuIDYzMjpcXHRcXHRcXHR9XFxuIDYzMzpcXHRcXG4gNjM0OlxcdFxcdFxcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xcbiA2MzU6XFx0XFx0XFx0YnJlYWs7XFxuIDYzNjpcXHRcXHRjYXNlIE5MODAyMTFfSUZUWVBFX05BTjpcXG4gNjM3OlxcdFxcdFxcdC8qIENoZWNrIGlmIGFueSBvcGVuIE5BTl9EQVRBIGludGVyZmFjZXMgKi9cXG4gNjM4OlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXRlciwgXFx1MDAyNmxvY2FsLVxcdTAwM2VpbnRlcmZhY2VzLCBsaXN0KSB7XFxuIDYzOTpcXHRcXHRcXHRcXHRXQVJOX09OKGl0ZXItXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX05BTl9EQVRBIFxcdTAwMjZcXHUwMDI2XFxuIDY0MDpcXHRcXHRcXHRcXHRcXHRpZWVlODAyMTFfc2RhdGFfcnVubmluZyhpdGVyKSk7XFxuIDY0MTpcXHRcXHRcXHR9XFxuIDY0MjpcXHRcXG4gNjQzOlxcdFxcdFxcdC8qIGNsZWFuIGFsbCB0aGUgZnVuY3Rpb25zICovXFxuIDY0NDpcXHRcXHRcXHRpZiAoIShsb2NhbC1cXHUwMDNlaHcud2lwaHktXFx1MDAzZW5hbl9jYXBhLmZsYWdzIFxcdTAwMjZcXG4gNjQ1OlxcdFxcdFxcdCAgICAgIFdJUEhZX05BTl9GTEFHU19VU0VSU1BBQ0VfREUpKSB7XFxuIDY0NjpcXHRcXHRcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnNkYXRhLVxcdTAwM2V1Lm5hbi5kZS5mdW5jX2xvY2spO1xcbiA2NDc6XFx0XFxuIDY0ODpcXHRcXHRcXHRcXHRpZHJfZm9yX2VhY2hfZW50cnkoXFx1MDAyNnNkYXRhLVxcdTAwM2V1Lm5hbi5kZS5mdW5jdGlvbl9pbnN0X2lkcyxcXG4gNjQ5OlxcdFxcdFxcdFxcdFxcdFxcdCAgIGZ1bmMsIGkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzQ6NTkuNTIyNDUwMzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTAxNDYyODg0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1hYzgwMjExIE1vbml0b3IgTW9kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgY2hhbmdlIGNlbnRlcnMgYXJvdW5kIHRoZSBgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUmAgY2FzZSB3aXRoaW4gYGllZWU4MDIxMV9kb19zdG9wYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY29uZmlybSB3aGVyZSB0aGUgY29kZSAqdXNlZCogdG8gYmUuIFRoZSBkaWZmIHNob3dzIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKTtgIHdhcyAqaW5zaWRlKiBhbiBgaWZgIGJsb2NrLCBidXQgbm93IGl0J3MgKm91dHNpZGUqLlxuXG5Ib3dldmVyLCBob2xkIG9uIGEgc2Vjb25kLiBBZnRlciBjaGVja2luZyB0aGUgYHJlYWQtZmlsZWAgY29udGV4dCwgaXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggKmhhcyogYWxyZWFkeSBiZWVuIGFwcGxpZWQgdG8gdGhlIGNvZGUgaW4gdGhpcyB3b3Jrc3BhY2UuIFRoYXQgbWVhbnMgdGhlIGRpZmYgaXMgc2hvd2luZyB0aGUgKmN1cnJlbnQqIHN0YXRlLiBUaGVyZWZvcmUsIEkgY29ycmVjdGx5IHJlY2FsbCB0aGF0IHRoZSBjb2RlIHdhcyAqcHJldmlvdXNseSogb25seSBiZWluZyBjYWxsZWQgaW4gY2VydGFpbiBjYXNlcywgc3BlY2lmaWNhbGx5IGAhKHNkYXRhLVx1MDAzZXUubW50ci5mbGFncyBcdTAwMjYgTU9OSVRPUl9GTEFHX0FDVElWRSkgXHUwMDI2XHUwMDI2ICFpZWVlODAyMTFfaHdfY2hlY2soXHUwMDI2bG9jYWwtXHUwMDNlaHcsIE5PX1ZJUlRVQUxfTU9OSVRPUilgLlxuXG5UaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IG1hYzgwMjExIGhhbmRsZXMgbW9uaXRvciBtb2RlLCBhbmQgdGhhdCBjb3VsZCBlYXNpbHkgYmUgdHJpZ2dlcmVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBtYWM4MDIxMV9od3NpbS4gVGhlcmVmb3JlLCBJJ20gbWFya2luZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcG9ydGFudCBlbnRyeSBwb2ludHMuIFRoZSBmdW5jdGlvbiBkaXJlY3RseSBtb2RpZmllZCBpcyBgaWVlZTgwMjExX2RvX3N0b3BgLCBidXQgaXQncyBgc3RhdGljYCwgc28gSSBuZWVkIHRvIGZpbmQgaXRzIGNhbGxlcnMuIEl0IGlzIGNhbGxlZCBieSBgaWVlZTgwMjExX3N0b3BgLCBgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZWAsIGFuZCBgaWVlZTgwMjExX3NkYXRhX3N0b3BgLiBJIG5lZWQgdG8gY2hlY2sgd2hldGhlciBgaWVlZTgwMjExX3N0b3BgIGlzIGBzdGF0aWNgIGFuZCB0aGVuIEknbGwgbG9vayBmb3Igd2hhdCBjYWxscyBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA0OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNToxMC41MzcxMDQyNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzM1Nzk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfc3RvcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvaWZhY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc3My1cXHRpZiAobG9jYWwtXFx1MDAzZW9wZW5fY291bnQgPT0gMCkge1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjc3NDpcXHRcXHRpZWVlODAyMTFfc3RvcF9kZXZpY2UobG9jYWwsIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03NzUtXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03ODgtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6Nzg5OnZvaWQgaWVlZTgwMjExX3N0b3BfbWJzc2lkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc5MC17XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NDQtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6ODQ1OnN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy04NDYte1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtODY1LVxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApXFxubmV0L21hYzgwMjExL2lmYWNlLmM6ODY2OlxcdFxcdGllZWU4MDIxMV9zdG9wX21ic3NpZChzZGF0YSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtODY3LVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9OTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWVlZTgwMjExX2RhdGFpZl9vcHMgPSB7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTQyLVxcdC5uZG9fb3BlblxcdFxcdD0gaWVlZTgwMjExX29wZW4sXFxubmV0L21hYzgwMjExL2lmYWNlLmM6OTQzOlxcdC5uZG9fc3RvcFxcdFxcdD0gaWVlZTgwMjExX3N0b3AsXFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTQ0LVxcdC5uZG9fdW5pbml0XFx0XFx0PSBpZWVlODAyMTFfdW5pbml0LFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9OTc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWVlZTgwMjExX21vbml0b3JpZl9vcHMgPSB7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTgwLVxcdC5uZG9fb3BlblxcdFxcdD0gaWVlZTgwMjExX29wZW4sXFxubmV0L21hYzgwMjExL2lmYWNlLmM6OTgxOlxcdC5uZG9fc3RvcFxcdFxcdD0gaWVlZTgwMjExX3N0b3AsXFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTgyLVxcdC5uZG9fdW5pbml0XFx0XFx0PSBpZWVlODAyMTFfdW5pbml0LFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MTA0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGllZWU4MDIxMV9kYXRhaWZfODAyM19vcHMgPSB7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTA0OC1cXHQubmRvX29wZW5cXHRcXHQ9IGllZWU4MDIxMV9vcGVuLFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjEwNDk6XFx0Lm5kb19zdG9wXFx0XFx0PSBpZWVlODAyMTFfc3RvcCxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMDUwLVxcdC5uZG9fdW5pbml0XFx0XFx0PSBpZWVlODAyMTFfdW5pbml0LFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MTYyNj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfaWZhY2VfcHJvY2Vzc19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNzU1LVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE3NTY6XFx0XFx0XFx0X19pZWVlODAyMTFfc3RvcF9yeF9iYV9zZXNzaW9uKFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE3NTctXFx0XFx0XFx0XFx0c3RhLCB0aWQsIFdMQU5fQkFDS19SRUNJUElFTlQsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xOTgwPXN0YXRpYyBpbnQgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIwNDEtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MjA0MjpcXHRpZWVlODAyMTFfc3RvcF92aWZfcXVldWVzKGxvY2FsLCBzZGF0YSxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMDQzLVxcdFxcdFxcdFxcdCAgSUVFRTgwMjExX1FVRVVFX1NUT1BfUkVBU09OX0lGVFlQRV9DSEFOR0UpO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MjU1MT12b2lkIGllZWU4MDIxMV92aWZfYmxvY2tfcXVldWVzX2NzYShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI1NTctXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MjU1ODpcXHRpZWVlODAyMTFfc3RvcF92aWZfcXVldWVzX25vcmVmY291bnQobG9jYWwsIHNkYXRhLFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTI1NTktXFx0XFx0XFx0XFx0XFx0ICAgICBJRUVFODAyMTFfUVVFVUVfU1RPUF9SRUFTT05fQ1NBKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzU6MTAuNTgwNDY1NzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTA1ODgzMTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGllZWU4MDIxMV9zdG9wYCBGdW5jdGlvbiBhbmQgUmVsYXRlZCBDYWxscyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBpZWVlODAyMTFfc3RvcGAuIFJpZ2h0LCB0aGF0J3MgdGhlIGAubmRvX3N0b3BgIGNhbGxiYWNrIGZvciBtYWM4MDIxMSBpbnRlcmZhY2VzLCBnb3QgaXQuIEhvbGQgb24sIHRoZSBwYXRjaCBJJ20gZXhhbWluaW5nICphbHNvKiB0b3VjaGVzIGBpZWVlODAyMTFfZG9fc3RvcGAuIEhtbSwgdGhhdCdzIGEgYml0IG9mIGEgcmVkIGZsYWcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBmdW5jdGlvbnMsIGFuZCBzcGVjaWZpY2FsbHksIHdoYXQgZWxzZSBtaWdodCBiZSBjYWxsaW5nIGBpZWVlODAyMTFfZG9fc3RvcGAuIFRoZSBnb2FsIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLiBTaW5jZSBgaWVlZTgwMjExX2RvX3N0b3BgIGlzbid0IHN0YXRpYywgSSBuZWVkIHRvIG1ldGhvZGljYWxseSBjaGVjayBpdHMgY2FsbGVycyB0byBlbnN1cmUgSSBkb24ndCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gc2lkZSBlZmZlY3RzLiBPa2F5LCBgaWVlZTgwMjExX3NkYXRhX3N0b3BgIGlzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IG1pZ2h0IGNhbGwgaXQsIEknbGwgbmVlZCB0byBmb2xsb3cgdGhhdCBsb2dpYyB0byB2ZXJpZnkgdGhlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4OTAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzU6MTQuNDg2MzUwNzkyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzIyNjM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfc2RhdGFfc3RvcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz0zMjE9c3RhdGljIHZvaWQgaWVlZTgwMjExX3N0b3BfcDJwX2RldmljZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTMyMy17XFxubmV0L21hYzgwMjExL2NmZy5jOjMyNDpcXHRpZWVlODAyMTFfc2RhdGFfc3RvcChJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2RldikpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zMjUtfVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTMzND1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc3RvcF9uYW4oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNDYtXFxubmV0L21hYzgwMjExL2NmZy5jOjM0NzpcXHRpZWVlODAyMTFfc2RhdGFfc3RvcChzZGF0YSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTM0OC1cXHRpZWVlODAyMTFfcmVjYWxjX2lkbGUoc2RhdGEtXFx1MDAzZWxvY2FsKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz00MDk9c3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfbmFuKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDMwLVxcdGlmIChyZXQpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDMxOlxcdFxcdGllZWU4MDIxMV9zZGF0YV9zdG9wKHNkYXRhKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDMyLVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMTk2PWludCBpZWVlODAyMTFfZG9fb3BlbihzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCBib29sIGNvbWluZ191cCk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjE5Nzp2b2lkIGllZWU4MDIxMV9zZGF0YV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMTk4LWludCBpZWVlODAyMTFfYWRkX3ZpcnR1YWxfbW9uaXRvcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTI0MTQ9dm9pZCBpZWVlODAyMTFfaWZfcmVtb3ZlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjQzOS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyNDQwOnZvaWQgaWVlZTgwMjExX3NkYXRhX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjQ0MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM1OjE0LjUyOTU4MTUxMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDM1MjkzMTE3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgbWFjODAyMTEgSW50ZXJmYWNlIFNodXRkb3duIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBtYWM4MDIxMSdzIGludGVyZmFjZSBzaHV0ZG93biBwcm9jZXNzIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLiBJbml0aWFsbHksIEkgd2FzIGxvb2tpbmcgYXQgYGllZWU4MDIxMV9zdG9wYCBiZWNhdXNlIGl0IHNlZW1zIGxpa2UgYSBsaWtlbHkgY2FuZGlkYXRlIGZvciBzdG9wcGluZyBhIGRldmljZS4gSXQncyB1c2VkIHdoZW4gYW4gaW50ZXJmYWNlIGlzIGJyb3VnaHQgZG93biwgYnV0IGl0J3Mgc3RhdGljLCB3aGljaCBpcyBhIHBvdGVudGlhbCBwcm9ibGVtIGJlY2F1c2UgdGhlIGNvbXBpbGVyIGNvdWxkIGlubGluZSBpdCwgYW5kIHRoYXQgd291bGQgcHJldmVudCBtZSBmcm9tIHRhcmdldGluZyBpdCBkaXJlY3RseSB3aXRoIHN5emthbGxlci5cblxuSSBoYWQgY29uc2lkZXJlZCBgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZWAgd2hpY2ggaXMgYWxzbyBzdGF0aWMuIEkgYWxzbyBsb29rZWQgYXQgYGllZWU4MDIxMV9zZGF0YV9zdG9wYCwgd2hpY2ggaXMgbm9uLXN0YXRpYywgYnV0IGl0IGFwcGVhcnMgdG8gYmUgcHJpbWFyaWx5IHVzZWQgZnJvbSB3aXRoaW4gYGNmZy5jYCBmb3Igc3BlY2lmaWMgY2FzZXMuIEkgc2VlIGBpZWVlODAyMTFfc3RvcGAgaXMgYWN0dWFsbHkgYXNzaWduZWQgdG8gYC5uZG9fc3RvcGAsIHdoaWNoIG1lYW5zIGl0cyBhZGRyZXNzIGlzIHRha2VuLCBzbyBpdCdzICpub3QqIGlubGluZWQsIGRlc3BpdGUgYmVpbmcgc3RhdGljLiBUaGUgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgc3RhdGUgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhhdCBtYWtlcyBgaWVlZTgwMjExX3N0b3BgIHNvbWV3aGF0IGF0dHJhY3RpdmUsIGFzIHN5emthbGxlciBjYW4gZGVhbCB3aXRoIHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSBhcmVuJ3QgaW5saW5lZCwgYnV0IEkgd2FudCB0byBiZSBzYWZlLlxuXG5Ib3dldmVyLCBJIGNvbmZpcm1lZCB0aGF0IGBpZWVlODAyMTFfc3RvcGAgaXNuJ3QgZXhwb3J0ZWQsIHdoaWNoIGlzIGxlc3MgaWRlYWwuIEkgYWxzbyBjaGVja2VkIGBpZWVlODAyMTFfaWZfcmVtb3ZlYCBidXQgaXQgZG9lc24ndCBjYWxsIGBpZWVlODAyMTFfc2RhdGFfc3RvcGAuXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IGJyb2FkZXIgZW50cnkgcG9pbnRzLiBJZiBJJ20gY29uc2lkZXJpbmcgaW50ZXJmYWNlICpzaHV0ZG93biosIHRoZSBjYWxscyBpbiBgbmV0L2NvcmUvZGV2LmNgIHN1Y2ggYXMgYGRldl9jbG9zZWAgYW5kIGBfX2Rldl9jbG9zZV9tYW55YCBzZWVtIHJlbGV2YW50LCBhcyBhcmUgZnVuY3Rpb25zIHVzZWQgaW4gbWFjODAyMTEgdG8gbWFuYWdlIGludGVyZmFjZXMuIEknbGwgbmVlZCB0byBjaGVjayBmdW5jdGlvbnMgbGlrZSBgbWFjODAyMTFfZGVsX2ludGVyZmFjZWAgdG8gZmluZCBhIG5vbi1zdGF0aWMgZW50cnkgcG9pbnQgdG8gdGhlIG1hYzgwMjExIHN0b3Agc2VxdWVuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NzQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzU6MjQuODgyNTE1MzIzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTA0NzA0NDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hYzgwMjExX2RlbF9pbnRlcmZhY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzU6MjUuMDMyOTkyNjIxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Nzg0OTA5NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW50ZXJmYWNlIERlbGV0aW9uIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmZhY2UgZGVsZXRpb24gcHJvY2Vzcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIGBjZmcuY2AuIFRoYXQncyB0eXBpY2FsbHkgd2hlcmUgdGhlc2Ugc29ydHMgb2YgaW50ZXJmYWNlIG1hbmFnZW1lbnQgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIG9yIGF0IGxlYXN0IHJlZmVyZW5jZWQuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGFjdHVhbCBsb2dpYyBvciBhdCBsZWFzdCBwb2ludGVycyB0byBpdCB3aXRoaW4gdGhhdCBmaWxlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGZ1bmN0aW9uIGNhbGxzIHJlbGF0ZWQgdG8gaW50ZXJmYWNlIHRlYXJkb3duLCByZW1vdmFsIGZyb20gY29uZmlndXJhdGlvbiwgYW5kIGxpa2VseSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUga2VybmVsIG5ldHdvcmtpbmcgc3RhY2suIExldCdzIHNlZSB3aGF0IGBjZmcuY2AgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTEzNSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM1OjI4LjkxMTQ4NTYxNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUzOTU0MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVsX3ZpcnR1YWxfaW50ZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz01OTc2PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTk3Ny1cXHQuYWRkX3ZpcnR1YWxfaW50ZiA9IGllZWU4MDIxMV9hZGRfaWZhY2UsXFxubmV0L21hYzgwMjExL2NmZy5jOjU5Nzg6XFx0LmRlbF92aXJ0dWFsX2ludGYgPSBpZWVlODAyMTFfZGVsX2lmYWNlLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy01OTc5LVxcdC5jaGFuZ2VfdmlydHVhbF9pbnRmID0gaWVlZTgwMjExX2NoYW5nZV9pZmFjZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzU6MjguOTU2ODg0NzEzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NzY5NDkwNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91J3ZlIGRlc2NyaWJlZDpcblxuKipEZWx2aW5nIGludG8gYGllZWU4MDIxMV9kZWxfaWZhY2VgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGllZWU4MDIxMV9kZWxfaWZhY2VgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgaGFwcGVucyBoZXJlIHdoZW4gYSB3aXJlbGVzcyBpbnRlcmZhY2UgZ2V0cyBkZWxldGVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCdzIHRoZSBzZXF1ZW5jZT8gV2hhdCBhcmUgdGhlIGNyaXRpY2FsIHJlc291cmNlcyBiZWluZyBmcmVlZD8gV2XigJlyZSB0YWxraW5nIGFib3V0IGZyZWVpbmcgdXAgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBhIHdpcmVsZXNzIGludGVyZmFjZSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBhc3NvY2lhdGVkIG1lbW9yeSwgbmV0d29yayBxdWV1ZXMsIHBvdGVudGlhbCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgYW5kIGFueSByZWdpc3RlcmVkIGhhbmRsZXJzIG9yIGNhbGxiYWNrcy5cblxuSSdtIG1lbnRhbGx5IHN0ZXBwaW5nIHRocm91Z2ggYSBsaWtlbHkgc2NlbmFyaW86IHRoZSBpbnRlcmZhY2UgaXMgYmVpbmcgc2h1dCBkb3duIG9yIHJlbW92ZWQgZW50aXJlbHkuIFRoZXJlZm9yZSwgSSBleHBlY3QgdGhlcmXigJlsbCBiZSBhIGNsZWFuLXVwIG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMgSSBrbm93IGFyZSBsaW5rZWQgdG8gaXQsIGxpa2UgdGhlIGBpZWVlODAyMTFfdmlmYCBzdHJ1Y3R1cmUsIGFueSBhc3NvY2lhdGVkIHZpcnR1YWwgaW50ZXJmYWNlcyAoVkxBTnMgb3IgdmlydHVhbCBBUHMpLCBhbmQgcHJvYmFibHkgYW55dGhpbmcgaW4gdGhlIGRyaXZlcidzIHByaXZhdGUgZGF0YSB0aGF0IGl0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGludGVyZmFjZS4gSSBoYXZlIHRvIHRoaW5rIGFib3V0IHRoZSBkaWZmZXJlbnQgc2NlbmFyaW9z4oCUIHdoYXQgaGFwcGVucyBpZiBpdCdzIGEgc3RhdGlvbiBpbnRlcmZhY2UsIGFuIEFQIGludGVyZmFjZSwgYSBtb25pdG9yIGludGVyZmFjZT8gVGhvc2Ugc2hvdWxkIGFsbCBiZSBoYW5kbGVkIGNsZWFubHkuXG5cbkknbSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgZm9yIHJhY2UgY29uZGl0aW9ucy4gSWYgdGhlcmUgYXJlIGFueSB0aHJlYWRzIG9yIHByb2Nlc3NlcyBzdGlsbCBhY2Nlc3NpbmcgdGhpcyBpbnRlcmZhY2UsIGhvdyBpcyB0aGF0IHN5bmNocm9uaXplZD8gQXJlIG11dGV4ZXMgb3IgcmVmZXJlbmNlIGNvdW50cyBjb3JyZWN0bHkgdXNlZCB0byBwcmV2ZW50IGRvdWJsZS1mcmVlcyBvciB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb25zPyBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgdHJpY2t5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgcm9jayBzb2xpZC5cblxuQW5kIHdoYXQgYWJvdXQgaGFyZHdhcmU/IFRoaXMgZnVuY3Rpb24gcHJvYmFibHkgYWxzbyBuZWVkcyB0byB0ZWxsIHRoZSBoYXJkd2FyZSB0byBzdG9wIHRyYW5zbWl0dGluZyBhbmQgcmVjZWl2aW5nIG9uIHRoYXQgaW50ZXJmYWNlLiBJJ20gZXhwZWN0aW5nIHNvbWUgcmVnaXN0ZXIgd3JpdGVzLCBtYXliZSBzb21lIERNQSBzZXR1cCB0byBiZSBjbGVhcmVkLCBhbmQgbGlrZWx5IHNvbWUgaW50ZXJydXB0IGRpc2FibGUgbG9naWMgdG8gYXZvaWQgYW55IGZ1cnRoZXIgaW50ZXJmZXJlbmNlLiBGaW5hbGx5LCB0aGUgZnVuY3Rpb24gbXVzdCB1cGRhdGUgYW55IG1hc3RlciBzdHJ1Y3R1cmVzIChlLmcuIHRoZSBsaXN0IG9mIGFsbCBjb25maWd1cmVkIHdpcmVsZXNzIGludGVyZmFjZXMpLCB0byBlbnN1cmUgdGhlIHN5c3RlbSBpcyBpbiBhIGNvbnNpc3RlbnQgc3RhdGUgYW5kIG5vIHN0cmF5IHBvaW50ZXJzIGFyZSBsZWZ0IGRhbmdsaW5nLlxuXG5JIGFsc28gaGF2ZSB0byBzZWUgaG93IGl0IGhhbmRsZXMgZXJyb3JzLiBJZiBhbnkgc3RlcCBvZiB0aGUgZGVsZXRpb24gcHJvY2VzcyBmYWlscywgd2hhdCdzIHRoZSByZWNvdmVyeSBwYXRoPyBEb2VzIGl0IGF0dGVtcHQgdG8gcm9sbCBiYWNrIGFueSBjaGFuZ2VzPyBEb2VzIGl0IGxvZyBlcnJvcnMgcHJvcGVybHk/IEFuZCBkb2VzIGl0IGhhdmUgYW55IGltcGFjdCBvbiB0aGUgb3BlcmF0aW9uIG9mIGFueSBvdGhlciB3aXJlbGVzcyBpbnRlcmZhY2VzP1xuXG5Fc3NlbnRpYWxseSwgSSBuZWVkIHRvIHNlZSBob3cgcm9idXN0IGFuZCByZWxpYWJsZSB0aGlzIHJvdXRpbmUgaXMuIEknbSBsb29raW5nIGZvciBhIGdyYWNlZnVsIGFuZCB0aG9yb3VnaCBjbGVhbnVwLCBwcmV2ZW50aW5nIG1lbW9yeSBsZWFrcywgYW5kIHByZXNlcnZpbmcgdGhlIGludGVncml0eSBvZiB0aGUgd2lyZWxlc3Mgc3RhY2suIExldCdzIHNlZSBob3cgd2VsbCBpdCdzIGltcGxlbWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDg0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzU6MzMuNjMzODM2MDYzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY4MzcxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfZGVsX2lmYWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTIwNj1zdGF0aWMgc3RydWN0IHdpcmVsZXNzX2RldiAqaWVlZTgwMjExX2FkZF9pZmFjZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI1MS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjUyOnN0YXRpYyBpbnQgaWVlZTgwMjExX2RlbF9pZmFjZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNTMte1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTU5NzY9Y29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyBtYWM4MDIxMV9jb25maWdfb3BzID0ge1xcbm5ldC9tYWM4MDIxMS9jZmcuYy01OTc3LVxcdC5hZGRfdmlydHVhbF9pbnRmID0gaWVlZTgwMjExX2FkZF9pZmFjZSxcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTk3ODpcXHQuZGVsX3ZpcnR1YWxfaW50ZiA9IGllZWU4MDIxMV9kZWxfaWZhY2UsXFxubmV0L21hYzgwMjExL2NmZy5jLTU5NzktXFx0LmNoYW5nZV92aXJ0dWFsX2ludGYgPSBpZWVlODAyMTFfY2hhbmdlX2lmYWNlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNTozMy42Nzg1MjIxOTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI0NDIzMzk4NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBGdW5jdGlvbiBTY29wZSBpbiB0aGUgSUVFRSA4MDIuMTEgU3Vic3lzdGVtKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIElFRUUgODAyLjExIGNvZGUsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGhvdyB3ZSdyZSBtYW5hZ2luZyBpbnRlcmZhY2VzIGFuZCB0aGVpciBsaWZlY3ljbGUuIEkgbm90aWNlZCBgaWVlZTgwMjExX2RlbF9pZmFjZWAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBzY29wZSBhbmQgcG90ZW50aWFsIHZpc2liaWxpdHkgaXNzdWVzIGZvciBleHRlcm5hbCBjYWxscyBvciBleHRlbnNpb25zLiBCdXQgdGhlbiwgaGFuZyBvbi4uLiBgaWVlZTgwMjExX3NkYXRhX3N0b3BgICppc24ndCogYHN0YXRpY2AuIFRoYXQncyBhIHBvaW50IG9mIGNvbnRyYXN0IGFuZCBtYWtlcyBtZSB0aGluayB0aGVyZSBtaWdodCBiZSBhIGRlc2lnbiBwcmluY2lwbGUgYXQgcGxheSBoZXJlLlxuXG5Ob3csIG15IG1pbmQgc2hpZnRzIHRvIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQgbWUgcXVpY2tseSBjaGVjayBgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZWAuIEFoLCBhbm90aGVyIGBzdGF0aWNgIG9uZS4gVGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IGJlY29tZXM6IGFyZSB0aGVyZSAqYW55KiBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBtb2R1bGUgdGhhdCBjb3VsZCBiZSB1dGlsaXplZCBpbiBhbHRlcm5hdGl2ZSBjb2RlIHBhdGhzLCBvciBpbiBleHRlbmRpbmcgY3VycmVudCBiZWhhdmlvcj8gVGhpcyBzZWVtcyBsaWtlIGFuIGludGVyZXN0aW5nIHBvaW50IGZvciByZWZhY3RvcmluZywgb3IgYSByZXZpZXcuIExldCdzIHNlZS4uLiB3aGF0IGFib3V0IGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NgPyBUaGlzIG5lZWRzIGEgbW9yZSBjYXJlZnVsIGxvb2ssIG1pZ2h0IGJlIGEgZ29vZCBjYW5kaWRhdGUgaWYgd2UncmUgbG9va2luZyB0byBtb2RpZnkgbW9uaXRvciBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM3NSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNTo1Ni4xMjA4NjQyNDZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTY3MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFnc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz05Nj1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfbW9uX29wdGlvbnMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTQyLVxcdFxcdGlmIChpZWVlODAyMTFfc2RhdGFfcnVubmluZyhzZGF0YSkpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MTQzOlxcdFxcdFxcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNDQtXFx0XFx0XFx0c2RhdGEtXFx1MDAzZXUubW50ci5mbGFncyA9IHBhcmFtcy1cXHUwMDNlZmxhZ3M7XFxubmV0L21hYzgwMjExL2NmZy5jOjE0NTpcXHRcXHRcXHRpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIDEpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNDYtXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMTkzPXZvaWQgaWVlZTgwMjExX3JlY2FsY19pZGxlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMTk0OnZvaWQgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxOTUtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IGludCBvZmZzZXQpO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9NDc5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02MzMtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6NjM0OlxcdFxcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYzNS1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTExNTU9dm9pZCBpZWVlODAyMTFfcmVjYWxjX29mZmxvYWQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMTcxLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjExNzI6dm9pZCBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTE3My1cXHRcXHRcXHRcXHQgICAgY29uc3QgaW50IG9mZnNldClcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTEzNjU9aW50IGllZWU4MDIxMV9kb19vcGVuKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIGJvb2wgY29taW5nX3VwKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTUwNS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNTA2OlxcdFxcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgMSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTUwNy1cXHRcXHRpZWVlODAyMTFfY29uZmlndXJlX2ZpbHRlcihsb2NhbCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM1OjU2LjE2NjgzMzk2NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTM2MzI1MDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzIFN5bWJvbCBDb25maXJtYXRpb24gYW5kIEtjb25maWcgRGVwZW5kZW5jeSBDaGVjayoqXG5cbk9rYXksIHNvIEkndmUganVzdCBjb25maXJtZWQgc29tZXRoaW5nIGltcG9ydGFudCBhYm91dCB0aGlzIHNldCBvZiBmdW5jdGlvbnMuIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NgLCBgaWVlZTgwMjExX2RvX29wZW5gLCBhbmQgYGllZWU4MDIxMV9zZGF0YV9zdG9wYCBhcmUgKm5vdCogZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgbWVhbnMgdGhleSdyZSBhY2Nlc3NpYmxlIG91dHNpZGUgb2YgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtLCB0aGlzIG1ha2VzIHRoZW0gcGVyZmVjdCBjYW5kaWRhdGVzIHRvIGJlIGNvbnNpZGVyZWQgYXMgRm9jdXNTeW1ib2xzLiBUaGlzIGFjY2Vzc2liaWxpdHkgaXMgZXhhY3RseSB3aGF0IEkgbmVlZCB0byBsZXZlcmFnZSBpbiBteSBhbmFseXNpcy5cblxuTm93IHRoYXQgSSBoYXZlIGNvbmZpcm1lZCB0aGVpciBzdWl0YWJpbGl0eSBhcyBGb2N1c1N5bWJvbHMsIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIG1hYzgwMjExLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgZ292ZXJuIHRoZSBpbmNsdXNpb24gYW5kIGJlaGF2aW9yIG9mIHRoaXMgcGFydGljdWxhciBtb2R1bGUgdG8gY29udGludWUgd2l0aCBteSBhc3Nlc3NtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTYyMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNjowMi43MDMxNjA5MzRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDUyNDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzY6MDIuNzUwNjE4MDMzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMDMxMDQ1ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKldpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgb3BlcmF0aW9uIHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgYE1BQzgwMjExYCBjb25maWd1cmF0aW9uLiBUaGF0J3MgdGhlIGJpZyBwaWN0dXJlLCB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNydWNpYWwgY29uZmlnIHBhcmFtZXRlcnMgbHVya2luZyBhcm91bmQgdGhhdCBJJ20gbWlzc2luZy4gV2UncmUgdGFsa2luZyBsb3ctbGV2ZWwgaGVyZSwgc28gb3Zlcmxvb2tpbmcgYSBzZWVtaW5nbHkgbWlub3Igb3B0aW9uIGNvdWxkIGJlIGRpc2FzdHJvdXMuXG5cbk5vdywgdGhlIGNvZGUgbW9kaWZpY2F0aW9uIGlzIGFwcGFyZW50bHkgZm9jdXNlZCBpbiBgbmV0L21hYzgwMjExL2lmYWNlLmNgLiBUaGF0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZC4gSSdsbCBuZWVkIHRvIG1ldGljdWxvdXNseSBzY2FuIHRoYXQgZmlsZSwgc3BlY2lmaWNhbGx5IGh1bnRpbmcgZm9yIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBibG9ja3MsIHRob3NlIGAjaWZkZWZgIGRpcmVjdGl2ZXMuIEknbSBwcmltYXJpbHkgaW50ZXJlc3RlZCBpbiB0aG9zZSBzdXJyb3VuZGluZyB0aGUgYGllZWU4MDIxMV9kb19zdG9wYCBmdW5jdGlvbiBhbmQsIGNydWNpYWxseSwgdGhlIGBOTDgwMjExX0lGVFlQRV9NT05JVE9SYCBpbnRlcmZhY2UgdHlwZS4gVGhvc2UgYXJlIGtleSBpbmRpY2F0b3JzIHRoYXQgY29uZGl0aW9uYWwgbG9naWMgYmFzZWQgb24gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgbWlnaHQgYmUgaW4gcGxheSBhbmQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHdoYXQgaXMgYmVpbmcgY29uc2lkZXJlZC4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVudCBhbmQgaWYgc29tZXRoaW5nIGlzIG1pc3NpbmcuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBjb25maWcgaXMgY29ycmVjdCBmb3IgdGhlIGludGVuZGVkIG9wZXJhdGlvbi4gVGhpcyBpcyBjcml0aWNhbCBmb3IgYXZvaWRpbmcgc3VidGxlLCBoYXJkLXRvLWRlYnVnIHByb2JsZW1zIGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDE0OSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM2OjA3LjA1MzcyNDM2OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMwMDk0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkw4MDIxMV9JRlRZUEVfTU9OSVRPUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvaWZhY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvaWZhY2UuYz0xNjE9c3RhdGljIGludCBpZWVlODAyMTFfdmVyaWZ5X21hYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgdTggKmFkZHIsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTEtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTkyOlxcdFxcdGlmIChpdGVyLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTkzLVxcdFxcdCAgICAhKGl0ZXItXFx1MDAzZXUubW50ci5mbGFncyBcXHUwMDI2IE1PTklUT1JfRkxBR19BQ1RJVkUpKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MjY4PXN0YXRpYyBpbnQgX2llZWU4MDIxMV9jaGFuZ2VfbWFjKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjg0LVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjI4NTpcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yODYtXFx0ICAgICEoc2RhdGEtXFx1MDAzZXUubW50ci5mbGFncyBcXHUwMDI2IE1PTklUT1JfRkxBR19BQ1RJVkUpKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MzI5PXN0YXRpYyBpbmxpbmUgaW50IGlkZW50aWNhbF9tYWNfYWRkcl9hbGxvd2VkKGludCB0eXBlMSwgaW50IHR5cGUyKVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTMzMC17XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MzMxOlxcdHJldHVybiB0eXBlMSA9PSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIHx8XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MzMyOlxcdFxcdHR5cGUyID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IgfHxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0zMzMtXFx0XFx0dHlwZTEgPT0gTkw4MDIxMV9JRlRZUEVfUDJQX0RFVklDRSB8fFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MzQxPXN0YXRpYyBpbnQgaWVlZTgwMjExX2NoZWNrX2NvbmN1cnJlbnRfaWZhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0zNTgtXFx0XFx0XFx0aWYgKChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfT0NCIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MzU5OlxcdFxcdFxcdCAgICAgbnNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NT05JVE9SKSB8fFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjM2MDpcXHRcXHRcXHQgICAgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMzYxLVxcdFxcdFxcdCAgICAgbnNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9PQ0IpKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9NDc5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01MTAtXFx0XFx0YnJlYWs7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6NTExOlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUjpcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01MTItXFx0XFx0bGlzdF9kZWxfcmN1KFxcdTAwMjZzZGF0YS1cXHUwMDNldS5tbnRyLmxpc3QpO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNjIwLVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjYyMTpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XFxubmV0L21hYzgwMjExL2lmYWNlLmMtNjIyLVxcdFxcdGxvY2FsLVxcdTAwM2Vtb25pdG9ycy0tO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNzQ1LVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjc0NjpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XFxubmV0L21hYzgwMjExL2lmYWNlLmMtNzQ3LVxcdFxcdGlmIChsb2NhbC1cXHUwMDNldmlydF9tb25pdG9ycyA9PSAwKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MTIyOD1pbnQgaWVlZTgwMjExX2FkZF92aXJ0dWFsX21vbml0b3Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMjQ5LVxcdC8qIHNldCB1cCBkYXRhICovXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTI1MDpcXHRzZGF0YS1cXHUwMDNldmlmLnR5cGUgPSBOTDgwMjExX0lGVFlQRV9NT05JVE9SO1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEyNTEtXFx0c25wcmludGYoc2RhdGEtXFx1MDAzZW5hbWUsIElGTkFNU0laLCBcXFwiJXMtbW9uaXRvclxcXCIsXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTI1Mi1cXHRcXHQgd2lwaHlfbmFtZShsb2NhbC1cXHUwMDNlaHcud2lwaHkpKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxMjUzOlxcdHNkYXRhLVxcdTAwM2V3ZGV2LmlmdHlwZSA9IE5MODAyMTFfSUZUWVBFX01PTklUT1I7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTI1NC1cXHRzZGF0YS1cXHUwMDNld2Rldi53aXBoeSA9IGxvY2FsLVxcdTAwM2Vody53aXBoeTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEyNjgtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTI2OTpcXHRyZXQgPSBpZWVlODAyMTFfY2hlY2tfcXVldWVzKHNkYXRhLCBOTDgwMjExX0lGVFlQRV9NT05JVE9SKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMjcwLVxcdGlmIChyZXQpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTEzNjU9aW50IGllZWU4MDIxMV9kb19vcGVuKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIGJvb2wgY29taW5nX3VwKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQwOS1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTQxMDpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQxMS1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FESE9DOlxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQ2Mi1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNDYzOlxcdHNkYXRhLVxcdTAwM2V2aWYuYWRkcl92YWxpZCA9IHNkYXRhLVxcdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIHx8XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQ2NC1cXHRcXHRcXHRcXHQoc2RhdGEtXFx1MDAzZXUubW50ci5mbGFncyBcXHUwMDI2IE1PTklUT1JfRkxBR19BQ1RJVkUpO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTQ4MC1cXHRcXHRicmVhaztcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxNDgxOlxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTU9OSVRPUjpcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNDgyLVxcdFxcdGlmICgoc2RhdGEtXFx1MDAzZXUubW50ci5mbGFncyBcXHUwMDI2IE1PTklUT1JfRkxBR19BQ1RJVkUpIHx8XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xODc4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXR1cF9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5NDUtXFx0XFx0YnJlYWs7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTk0NjpcXHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTk0Ny1cXHRcXHRzZGF0YS1cXHUwMDNlZGV2LVxcdTAwM2V0eXBlID0gQVJQSFJEX0lFRUU4MDIxMV9SQURJT1RBUDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTIwOTk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2Fzc2lnbl9wZXJtX2FkZHIoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMTE3LVxcdHN3aXRjaCAodHlwZSkge1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjIxMTg6XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NT05JVE9SOlxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIxMTktXFx0XFx0LyogZG9lc24ndCBtYXR0ZXIgKi9cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTIxODUtXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShzZGF0YSwgXFx1MDAyNmxvY2FsLVxcdTAwM2VpbnRlcmZhY2VzLCBsaXN0KSB7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MjE4NjpcXHRcXHRcXHRpZiAoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IpXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjE4Ny1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTIyMjg9aW50IGllZWU4MDIxMV9pZl9hZGQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIGNvbnN0IGNoYXIgKm5hbWUsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMjgxLVxcdFxcdGlmICh0eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvaWZhY2UuYzoyMjgyOlxcdFxcdCAgICAodHlwZSAhPSBOTDgwMjExX0lGVFlQRV9NT05JVE9SIHx8XFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjI4My1cXHRcXHQgICAgIChwYXJhbXMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTU9OSVRPUl9GTEFHX0FDVElWRSkpKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMjM5MS1cXHRcXHRuZGV2LVxcdTAwM2VtaW5fbXR1ID0gMjU2O1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjIzOTI6XFx0XFx0aWYgKHR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfTU9OSVRPUilcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0yMzkzLVxcdFxcdFxcdG5kZXYtXFx1MDAzZW1heF9tdHUgPSAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNjowNy4wOTY3MzU4NDlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3OTIwODY1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBNaXNzaW5nIE1vbml0b3IgTW9kZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJIHNlZSBubyBgI2lmZGVmYCBndWFyZGluZyB0aGUgYE5MODAyMTFfSUZUWVBFX01PTklUT1JgIGRlZmluaXRpb24uIFRoYXQncyBhIGxpdHRsZSB1bnVzdWFsLCBnaXZlbiB0aGUgY29udGV4dC4gVGhlIGNvbmZpZ3VyYXRpb24sIGFzIGZhciBhcyBJIGNhbiBzZWUgZnJvbSB0aGlzIHNuaXBwZXQsIHNlZW1zIHRvIGJlIGBNQUM4MDIxMWAuIEJ1dCB3YWl0IGEgc2Vjb25kLCBpc24ndCBgTUFDODAyMTFgIGEgdHJpc3RhdGUgb3B0aW9uPyBUaGF0IG1lYW5zIGl0IGNhbiBiZSBidWlsdCBpbiwgYXMgYSBtb2R1bGUsIG9yIGRpc2FibGVkLiBTbyB0aGUgcXVlc3Rpb24gaXMsICp3aHkqIGlzbid0IHRoaXMgZGVmaW5lZCBhdCBhbGw/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYW5vdGhlciByZWxldmFudCBjb25maWcgaW52b2x2ZWQgaGVyZS4gVGltZSB0byBkaWcgaW50byBgbmV0L21hYzgwMjExL01ha2VmaWxlYCBhbmQgc2VlIGlmIHRoZSBidWlsZCBwcm9jZXNzIGlzIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBzb21ldGhpbmcgb3Igbm90LiBJJ20gZ3Vlc3NpbmcgdGhlcmUncyBhIGRlcGVuZGVuY3kgSSBoYXZlbid0IHNwb3R0ZWQgeWV0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzAyMSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM2OjExLjg3NTk0NzE2NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1MzMwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWZhY2Uub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9NYWtlZmlsZT01PW1hYzgwMjExLXkgOj0gXFxcXFxcbi0tXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTE3LVxcdGlic3MubyBcXFxcXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjE4OlxcdGlmYWNlLm8gXFxcXFxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS0xOS1cXHRsaW5rLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNjoxMS45MjA0ODI5ODZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk1MTMwNTcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDb21waWxhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyBgaWZhY2Uub2AgaXMgZGVmaW5pdGVseSBidWlsdCB3aGVuIHRoZSBgTUFDODAyMTFgIHdpcmVsZXNzIHN0YWNrIGlzIGVuYWJsZWQuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IG5leHQgbW92ZSBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgTUFDODAyMTFgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyBpdHMgaW5jbHVzaW9uIGFuZCB3aGF0IG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMgaXQgcmVsaWVzIG9uLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCB3aXRoIHRoZSBidWlsZCBzeXN0ZW0gY29uZmlndXJhdGlvbiBhbmQgcG9zc2libHkgdGhlIGtlcm5lbCdzIEtjb25maWcgZmlsZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY3kgdHJlZSBmb3IgYE1BQzgwMjExYCBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IHdoeSBgaWZhY2Uub2AgaXMgYmVpbmcgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIE9uY2UgSSBoYXZlIHRoYXQgbmFpbGVkIGRvd24sIEkgY2FuIGRldGVybWluZSB0aGUgbGlrZWx5IHJlYXNvbnMgZm9yIGBpZmFjZS5vYCBiZWluZyBidWlsdCB3aGVuIGBNQUM4MDIxMWAgaXMuIEknbGwgbmVlZCB0byBjb25zaWRlciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzLCBhbmQgc2VlIHdoYXQgY29kZSBwYXRocyBnZXQgZXhlcmNpc2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQxOCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM2OjE1Ljg3MTc5MTIxOFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyMDE0OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cXHRib29sXFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctNDktXFxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cXHRzdHJpbmdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cXHRib29sIFxcXCJTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgSFQgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiVmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNjoxNS45MTY5OTUxMzdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwMDI1NTAyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgbWFjODAyMTEgQnVnIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggcmVsYXRlZCB0byB0aGUgYE1BQzgwMjExYCBjb3JlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgaWZhY2UuY2AgZmlsZS4gVG8gcHJvcGVybHkgdGVzdCB0aGlzLCBJJ20gdGhpbmtpbmcgSSdsbCBuZWVkIGJvdGggYE1BQzgwMjExYCBhbmQgYSBkcml2ZXIgbGlrZSBgTUFDODAyMTFfSFdTSU1gIGVuYWJsZWQuIEFkZGluZyB0aG9zZSB0byBteSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBzZWVtcyBsaWtlIHRoZSByaWdodCBtb3ZlLlxuXG5Ob3csIGRpZ2dpbmcgaW50byB0aGUgY29kZSBjaGFuZ2UsIGl0IGxvb2tzIGxpa2UgYSBzdWJ0bGUgYnVnIGhhcyBiZWVuIGFkZHJlc3NlZCBpbiB0aGUgaW50ZXJmYWNlIHRlYXJkb3duIGxvZ2ljLiBUaGUgY3JpdGljYWwgZnVuY3Rpb24gaGVyZSBpcyBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYC4gSSBhbHNvIHdhbnQgdG8ga2VlcCBpbiBtaW5kLCBmb3IgY29tcGxldGVuZXNzLCBgaWVlZTgwMjExX2RvX29wZW5gIGFuZCBgaWVlZTgwMjExX3NkYXRhX3N0b3BgLiBHb29kLCB0aGVzZSBhcmUgYWxsIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCBzbyB0aGV5IGFyZSBnb29kIGNhbmRpZGF0ZXMgdG8gY29uc2lkZXIgZHVyaW5nIGZ1enppbmcuXG5cblRoZSBvcmlnaW5hbCBjb2RlIHdhcyBza2lwcGluZyBhIGNhbGwgdG8gYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpYCB1bmRlciBzcGVjaWZpYyBjb25kaXRpb25zIHJlbGF0ZWQgdG8gbW9uaXRvciBpbnRlcmZhY2VzIOKAkyBzcGVjaWZpY2FsbHkgaWYgdGhlIGBNT05JVE9SX0ZMQUdfQUNUSVZFYCBvciBgTk9fVklSVFVBTF9NT05JVE9SYCBmbGFncyB3ZXJlIHNldC4gVGhpcyBjb25kaXRpb25hbCBvbWlzc2lvbiBjb3VsZCBsZWFkIHRvIG1vbml0b3IgZmxhZyBsZWFrcyBhbmQgcG90ZW50aWFsIGltYmFsYW5jZXMsIHdoaWNoIGlzIGRlZmluaXRlbHkgYmFkIG5ld3MuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQncyBpbiB0aGUgaGVhcnQgb2YgdGhlIG1hYzgwMjExIGludGVyZmFjZSBsb2dpYywgYW5kIHNpbmNlIGl0J3MgcmVsZXZhbnQgdG8gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGZ1enppbmcgdGhpcyBhcmVhIGlzIGFic29sdXRlbHkgd29ydGggdGhlIGVmZm9ydC4gSXQncyBhbiBhcmVhIEknZCBkZWZpbml0ZWx5IHdhbnQgdG8gZXhwbG9yZSB3aXRoIGZ1enppbmcuIExldCdzIG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5MZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODc3LCJPdXRwdXRUb2tlbnMiOjE3OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNjoyNS45MTk1NDc0NjRaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU0MTA5ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFnc1wiLFxuICAgIFwiaWVlZTgwMjExX2RvX29wZW5cIixcbiAgICBcImllZWU4MDIxMV9zZGF0YV9zdG9wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbWFjODAyMTEgd2hlcmUgYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpYCB3YXMgY29uZGl0aW9uYWxseSBza2lwcGVkIGR1cmluZyBtb25pdG9yIGludGVyZmFjZSB0ZWFyZG93bi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWFjODAyMTEgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYG1hYzgwMjExX2h3c2ltYC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NcIixcbiAgICBcImllZWU4MDIxMV9kb19vcGVuXCIsXG4gICAgXCJpZWVlODAyMTFfc2RhdGFfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG1hYzgwMjExIHdoZXJlIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc2RhdGEsIC0xKWAgd2FzIGNvbmRpdGlvbmFsbHkgc2tpcHBlZCBkdXJpbmcgbW9uaXRvciBpbnRlcmZhY2UgdGVhcmRvd24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1hYzgwMjExIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGBtYWM4MDIxMV9od3NpbWAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM2OjI2LjAyNDk2NTUwM1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwNzExNTM0MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNjoyNi4wMjU1MDQ5NTNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTIwNzA2MTAxNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIGJ5IG1vdmluZyB0aGUgY2FsbCB0byBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCBvdXRzaWRlIG9mIGEgY29uZGl0aW9uYWwgYmxvY2suIFRoaXMgaXMgYSBsb2dpYyBmaXggcmVsYXRlZCB0byBpbnRlcmZhY2Ugc3RhdGUgbWFuYWdlbWVudCBhbmQgbW9uaXRvciBmbGFncyBhZGp1c3RtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyByZXN1bHRpbmcgZnJvbSBpbmNvcnJlY3Qgc3RhdGUgbWFuYWdlbWVudCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gb3Igb3RoZXIgYnVnIGRldGVjdG9ycy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhM2U0NmViMmI5ODNlOWZiNmNkNDM2YTA3NWMyZjRkMTM3NTYxNDIyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDU6MzQ6NDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWZhY2UuYyBiL25ldC9tYWM4MDIxMS9pZmFjZS5jXG5pbmRleCA0MzQ2MGE3MDVhNmJkLi42ZmMwMWQ4NWVlYTliIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2lmYWNlLmNcbisrKyBiL25ldC9tYWM4MDIxMS9pZmFjZS5jXG5AQCAtNjI5LDkgKzYyOSw5IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2RvXG4gXHRcdFx0XHRsb2NhbC1cdTAwM2Vody5jb25mLmZsYWdzIFx1MDAyNj0gfklFRUU4MDIxMV9DT05GX01PTklUT1I7XG4gXHRcdFx0XHRod19yZWNvbmZfZmxhZ3MgfD0gSUVFRTgwMjExX0NPTkZfQ0hBTkdFX01PTklUT1I7XG4gXHRcdFx0fVxuLVxuLVx0XHRcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xuIFx0XHR9XG4rXG4rXHRcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTkFOOlxuIFx0XHQvKiBDaGVjayBpZiBhbnkgb3BlbiBOQU5fREFUQSBpbnRlcmZhY2VzICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwNTozNjoyNi4wMjU1MDU5MTNaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA0ODA4NTg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNQUM4MDIxMSBJbnRlcmZhY2UgU3RvcCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW4gYG5ldC9tYWM4MDIxMS9pZmFjZS5jYCwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gc3RvcHBpbmcgYW4gaW50ZXJmYWNlLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBtb3ZpbmcgdGhlIGNhbGwgdG8gYGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgLTEpO2Agb3V0IG9mIHRoZSBjb25kaXRpb25hbCBibG9jayB3aXRoaW4gYGllZWU4MDIxMV9kb19zdG9wYC4gTGV0J3MgY2xhcmlmeSB0aGUgaW50ZW50LlxuXG5Mb29raW5nIGF0IHRoZSBkaWZmLCBpdCBhcHBlYXJzIHRoZXkndmUgdGFrZW4gdGhlIGNhbGwgdG8gYWRqdXN0IHRoZSBtb25pdG9yIGZsYWdzLCB3aGljaCB3YXMgcHJldmlvdXNseSBjb25kaXRpb25hbCBvbiB0aGUgYElFRUU4MDIxMV9DT05GX01PTklUT1JgIGZsYWcsIGFuZCBhcmUgbm93IGFwcGx5aW5nIGl0IHVuY29uZGl0aW9uYWxseSB3aGVuIGFuIGludGVyZmFjZSBpcyBzdG9wcGVkLiBUaGlzIGxpa2VseSBmaXhlcyBhIGxvZ2ljIGJ1Zy4gVGhlIGNvbW1lbnQgc3VnZ2VzdHMgdGhleSB3ZXJlIG5vdCB1cGRhdGluZyB0aGUgbW9uaXRvciBmbGFncyBjb3JyZWN0bHkgZm9yIGFsbCBjYXNlcy5cblxuVGhlIHF1ZXN0aW9uIG5vdyBpcywgd2hhdCdzIHRoZSBwb3RlbnRpYWwgaW1wYWN0PyBDb3VsZCB0aGlzIGludHJvZHVjZSBzb21lIHN1YnRsZSBiZWhhdmlvciBjaGFuZ2U/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSBjb3VsZCBiZSBzb21lIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2VzcyByaXNrIGR1ZSB0byB0aGUgY2hhbmdlLiBObywgaXQgbG9va3MgbGlrZSBpdCdzIGp1c3QgYWRqdXN0aW5nIHNvbWUgZmxhZ3MvY291bnRlcnMgYmFzZWQgb24gdGhlIHN0YXRlLiBJdCBzZWVtcyB0aGF0IGl0IG1ha2VzIHNlbnNlIHRvIHVwZGF0ZSB0aGUgbW9uaXRvciBmbGFncyBpbiBhbGwgY2FzZXMgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIHN0b3BwZWQgYW5kIGl0IG1ha2VzIHNlbnNlIHRvIGRvIGl0IG91dHNpZGUgb2YgdGhpcyBjb25kaXRpb24uIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NgIGp1c3QgdG8gYmUgc3VyZSwgYnV0IG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgYnVnIGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2OSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM2OjMyLjA3MzU5NDc2OFoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyMTYzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTk2PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9tb25fb3B0aW9ucyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNDItXFx0XFx0aWYgKGllZWU4MDIxMV9zZGF0YV9ydW5uaW5nKHNkYXRhKSkge1xcbm5ldC9tYWM4MDIxMS9jZmcuYzoxNDM6XFx0XFx0XFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTE0NC1cXHRcXHRcXHRzZGF0YS1cXHUwMDNldS5tbnRyLmZsYWdzID0gcGFyYW1zLVxcdTAwM2VmbGFncztcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MTQ1OlxcdFxcdFxcdGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzZGF0YSwgMSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTE0Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTIxOTM9dm9pZCBpZWVlODAyMTFfcmVjYWxjX2lkbGUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIxOTQ6dm9pZCBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE5NS1cXHRcXHRcXHRcXHQgICAgY29uc3QgaW50IG9mZnNldCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTYzMy1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo2MzQ6XFx0XFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAtMSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtNjM1LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MTE1NT12b2lkIGllZWU4MDIxMV9yZWNhbGNfb2ZmbG9hZChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTExNzEtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTE3Mjp2b2lkIGllZWU4MDIxMV9hZGp1c3RfbW9uaXRvcl9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMTczLVxcdFxcdFxcdFxcdCAgICBjb25zdCBpbnQgb2Zmc2V0KVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9MTM2NT1pbnQgaWVlZTgwMjExX2RvX29wZW4oc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgYm9vbCBjb21pbmdfdXApXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNTA1LVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE1MDY6XFx0XFx0aWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzKHNkYXRhLCAxKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xNTA3LVxcdFxcdGllZWU4MDIxMV9jb25maWd1cmVfZmlsdGVyKGxvY2FsKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDU6MzY6MzIuMTE3ODE2NTg4WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NzgyNjM4MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIGNvZGUgYW5kLCBmcmFua2x5LCBJIGRvbid0IHNlZSBhbnl0aGluZyBoZXJlIHRoYXQgc2NyZWFtcyBcIktNU0FOIGFsZXJ0LlwiIFRoZSBmdW5jdGlvbiBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCBpcyBlc3NlbnRpYWxseSBqdXN0IHR3ZWFraW5nIGZsYWdzIGFuZCBjb3VudGVycy4gTm8gZXZpZGVuY2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdG91Y2hlZCwgbm8gb2J2aW91cyBpbmZvIGxlYWtzLCBhbmQgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgZXhwb3NlZC5cblxuVGhlIGNoYW5nZSBpdHNlbGYg4oCTIG1vdmluZyB0aGUgZnVuY3Rpb24gY2FsbCBvdXQgb2YgdGhhdCBpbm5lciBibG9jayBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIOKAkyBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGxvZ2ljIGZpeC4gSXTigJlzIGFib3V0IGludGVyZmFjZSBzdGF0ZSBtYW5hZ2VtZW50LCBnZXR0aW5nIHRoZSBzZXF1ZW5jaW5nIHJpZ2h0LiBXaGlsZSB0aGVvcmV0aWNhbGx5LCBhbnkgY29kZSBjaGFuZ2UgY2FuICpwb3RlbnRpYWxseSogbGVhZCB0byBhIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgaXNzdWUgaWYgdGhlIHN0YXRlIGlzIG1lc3NlZCB1cCwgdGhhdCdzIG5vdCBzcGVjaWZpY2FsbHkgYSBLTVNBTiBjb25jZXJuLiBLQVNBTiBhbmQgTE9DS0RFUCBtaWdodCBiZSByZWxldmFudCAqaWYqIHRoaXMgaW50cm9kdWNlZCBhIG1vcmUgY29tcGxleCBidWcsIGJ1dCBmb3Igbm93LCB0aGlzIGNoYW5nZSBpc24ndCBLTVNBTi1zcGVjaWZpYy4gTXkgY29uY2x1c2lvbjogS01TQU4gaXNuJ3QgbmVlZGVkIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MDksIk91dHB1dFRva2VucyI6MTY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA1OjM2OjM4LjA5NjEwMDcxNVoiLCJTZXEiOjM0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGluIGBpZWVlODAyMTFfZG9fc3RvcGAgYnkgbW92aW5nIHRoZSBjYWxsIHRvIGBpZWVlODAyMTFfYWRqdXN0X21vbml0b3JfZmxhZ3NgIG91dHNpZGUgb2YgYSBjb25kaXRpb25hbCBibG9jay4gVGhpcyBpcyBhIGxvZ2ljIGZpeCByZWxhdGVkIHRvIGludGVyZmFjZSBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBtb25pdG9yIGZsYWdzIGFkanVzdG1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIHJlc3VsdGluZyBmcm9tIGluY29ycmVjdCBzdGF0ZSBtYW5hZ2VtZW50IChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBvciBvdGhlciBidWcgZGV0ZWN0b3JzLiBBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2RvX3N0b3BgIGJ5IG1vdmluZyB0aGUgY2FsbCB0byBgaWVlZTgwMjExX2FkanVzdF9tb25pdG9yX2ZsYWdzYCBvdXRzaWRlIG9mIGEgY29uZGl0aW9uYWwgYmxvY2suIFRoaXMgaXMgYSBsb2dpYyBmaXggcmVsYXRlZCB0byBpbnRlcmZhY2Ugc3RhdGUgbWFuYWdlbWVudCBhbmQgbW9uaXRvciBmbGFncyBhZGp1c3RtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyByZXN1bHRpbmcgZnJvbSBpbmNvcnJlY3Qgc3RhdGUgbWFuYWdlbWVudCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gb3Igb3RoZXIgYnVnIGRldGVjdG9ycy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7rfz[1] Phase: Succeeded StartedAt: 2026-08-25 05:36:49 +0000 UTC FinishedAt: 2026-08-25 05:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-25 05:36:49 +0000 UTC FinishedAt: 2026-08-25 05:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2] Phase: Succeeded StartedAt: 2026-08-25 05:36:49 +0000 UTC FinishedAt: 2026-08-25 09:16:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-25 05:36:49 +0000 UTC FinishedAt: 2026-08-25 09:16:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-25 05:36:49 +0000 UTC FinishedAt: 2026-08-25 05:36:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-25 05:36:49 +0000 UTC FinishedAt: 2026-08-25 05:36:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl7rfz/series-workflowl7rfz-convert-artifact-465068950/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-25 05:36:59 +0000 UTC FinishedAt: 2026-08-25 05:52:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-25 05:36:59 +0000 UTC FinishedAt: 2026-08-25 05:52:54 +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:*658e742f-27e2-43b0-a40d-b942357228bd,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-workflowl7rfz/series-workflowl7rfz-convert-artifact-465068950/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": "8e81c464-f5f6-4ceb-8d9e-f7b9a083e358", "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-workflowl7rfz/series-workflowl7rfz-build-action-1150522156/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-25 05:36:59 +0000 UTC FinishedAt: 2026-08-25 05:52:44 +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:*658e742f-27e2-43b0-a40d-b942357228bd,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-workflowl7rfz/series-workflowl7rfz-convert-artifact-465068950/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": "8e81c464-f5f6-4ceb-8d9e-f7b9a083e358", "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-workflowl7rfz/series-workflowl7rfz-build-action-1150522156/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-25 05:52:54 +0000 UTC FinishedAt: 2026-08-25 05:52:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-25 05:52:54 +0000 UTC FinishedAt: 2026-08-25 05:52:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-25 05:52:54 +0000 UTC FinishedAt: 2026-08-25 05:53:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-25 05:52:54 +0000 UTC FinishedAt: 2026-08-25 05:52:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl7rfz/series-workflowl7rfz-convert-artifact-3111726121/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-25 05:53:04 +0000 UTC FinishedAt: 2026-08-25 05:55:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-25 05:53:04 +0000 UTC FinishedAt: 2026-08-25 05:55:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8e81c464-f5f6-4ceb-8d9e-f7b9a083e358,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-workflowl7rfz/series-workflowl7rfz-build-action-1150522156/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-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-25 05:55:15 +0000 UTC FinishedAt: 2026-08-25 05:55:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-25 05:55:15 +0000 UTC FinishedAt: 2026-08-25 05:55:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-25 05:55:15 +0000 UTC FinishedAt: 2026-08-25 06:11:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-25 05:55:15 +0000 UTC FinishedAt: 2026-08-25 06:11:00 +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:*658e742f-27e2-43b0-a40d-b942357228bd,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-workflowl7rfz/series-workflowl7rfz-convert-artifact-3111726121/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": "1b340dfd-6512-4c31-8a0a-5229e1fa28ac", "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-workflowl7rfz/series-workflowl7rfz-build-action-673214725/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-25 05:55:15 +0000 UTC FinishedAt: 2026-08-25 06:10:50 +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:*658e742f-27e2-43b0-a40d-b942357228bd,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-workflowl7rfz/series-workflowl7rfz-convert-artifact-3111726121/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": "1b340dfd-6512-4c31-8a0a-5229e1fa28ac", "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-workflowl7rfz/series-workflowl7rfz-build-action-673214725/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-25 06:11:00 +0000 UTC FinishedAt: 2026-08-25 06:11:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-25 06:11:00 +0000 UTC FinishedAt: 2026-08-25 06:11:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-25 06:11:00 +0000 UTC FinishedAt: 2026-08-25 06:13:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-25 06:11:00 +0000 UTC FinishedAt: 2026-08-25 06:13:02 +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:*1b340dfd-6512-4c31-8a0a-5229e1fa28ac,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-workflowl7rfz/series-workflowl7rfz-build-action-673214725/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-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-25 06:13:11 +0000 UTC FinishedAt: 2026-08-25 09:16:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-25 06:13:11 +0000 UTC FinishedAt: 2026-08-25 09:16:57 +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":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"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:*8e81c464-f5f6-4ceb-8d9e-f7b9a083e358,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1b340dfd-6512-4c31-8a0a-5229e1fa28ac,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-workflowl7rfz/series-workflowl7rfz-build-action-1150522156/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-workflowl7rfz/series-workflowl7rfz-build-action-673214725/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-25 06:13:11 +0000 UTC FinishedAt: 2026-08-25 06:13:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-25 06:13:11 +0000 UTC FinishedAt: 2026-08-25 06:13:16 +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":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"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-workflowl7rfz/series-workflowl7rfz-convert-artifact-3871006846/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-25 06:13:11 +0000 UTC FinishedAt: 2026-08-25 06:13:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-25 06:13:11 +0000 UTC FinishedAt: 2026-08-25 06:13:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-25 06:13:11 +0000 UTC FinishedAt: 2026-08-25 06:13:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-25 06:13:21 +0000 UTC FinishedAt: 2026-08-25 09:16:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7rfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_adjust_monitor_flags","ieee80211_do_open","ieee80211_sdata_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"77e03fde-c02b-4cc0-a1bb-2e617ea74803","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-25 06:13:21 +0000 UTC FinishedAt: 2026-08-25 09:16:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8e81c464-f5f6-4ceb-8d9e-f7b9a083e358,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1b340dfd-6512-4c31-8a0a-5229e1fa28ac,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-workflowl7rfz/series-workflowl7rfz-build-action-1150522156/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-workflowl7rfz/series-workflowl7rfz-build-action-673214725/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-workflowl7rfz/series-workflowl7rfz-convert-artifact-3871006846/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,}