Name: series-workflowp94ht Phase: Succeeded StartedAt: 2026-09-09 21:58:58 +0000 UTC FinishedAt: 2026-09-10 01:42:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[0] Phase: Succeeded StartedAt: 2026-09-09 21:58:58 +0000 UTC FinishedAt: 2026-09-09 22:01:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[0].run-triage Phase: Succeeded StartedAt: 2026-09-09 21:58:58 +0000 UTC FinishedAt: 2026-09-09 22:01:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_MD", "MD_RAID456", "MD_RAID10" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_MD", "MD_RAID456", "MD_RAID10" ], "series_id": "601948d0-5cb5-4e95-9dac-538b86534e9e" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__md_stop", "do_md_stop", "md_stop" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTUQmIzM0OywKICAgICYjMzQ7TURfUkFJRDQ1NiYjMzQ7LAogICAgJiMzNDtNRF9SQUlEMTAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX21kX3N0b3AmIzM0OywKICAgICYjMzQ7ZG9fbWRfc3RvcCYjMzQ7LAogICAgJiMzNDttZF9zdG9wJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWRfc3RvcCgpYCBpbiBgZHJpdmVycy9tZC9tZC5jYCB0byByZXNldCByZXNoYXBlIGNvbmZpZ3VyYXRpb24gZmllbGRzIChgZGVsdGFfZGlza3NgLCBgcmVzaGFwZV9iYWNrd2FyZHNgLCBgbmV3X2xldmVsYCwgYG5ld19sYXlvdXRgLCBgbmV3X2NodW5rX3NlY3RvcnNgKSBpbiBgc3RydWN0IG1kZGV2YCB3aGVuIHN0b3BwaW5nIGFuIG1kIGFycmF5IHdoZXJlIGByZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcmAuXG5cbkFsbCBhc3NpZ25lZCB2YWx1ZXMgYXJlIGVpdGhlciBjb25zdGFudCB6ZXJvZXMgb3IgZGVyaXZlZCBmcm9tIGV4aXN0aW5nLCBpbml0aWFsaXplZCBmaWVsZHMgb2YgYG1kZGV2YC4gVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBkYXRhLCBkb2VzIG5vdCBhbHRlciBjb3B5LXRvLXVzZXIgb3BlcmF0aW9ucywgYW5kIGRvZXMgbm90IGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCB3YXJyYW50IGEgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBfX21kX3N0b3AoKSBpbiB0aGUgTUQgKE11bHRpcGxlIERldmljZXMgLyBTb2Z0d2FyZSBSQUlEKSBkcml2ZXIgdG8gcmVzZXQgcmVzaGFwZSBzdGF0ZSAoZGVsdGFfZGlza3MsIHJlc2hhcGVfYmFja3dhcmRzLCBuZXdfbGV2ZWwsIG5ld19sYXlvdXQsIG5ld19jaHVua19zZWN0b3JzKSB3aGVuIHN0b3BwaW5nIGFuIGFycmF5IGFmdGVyIGEgcmVzaGFwZSBvcGVyYXRpb24gaGFzIGZpbmlzaGVkIChyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcikuIFRoaXMgY29kZSBpcyBmdWxseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtZCBpb2N0bCAoZS5nLiwgU1RPUF9BUlJBWSksIHN5c2ZzIGFycmF5X3N0YXRlIGF0dHJpYnV0ZXMsIG9yIGRtLXJhaWQgdGVhcmRvd24sIGFuZCB3YXJyYW50cyBmdXp6aW5nIGZvciBwb3RlbnRpYWwgc3RhdGUgbWFuYWdlbWVudCByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkYzZhZWMzNzRjMDQ3ZThhMjIwYWUxZGY3Y2VmZjkzMzg3ZGE5MjZkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAyMjowMDoxOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL21kLmMgYi9kcml2ZXJzL21kL21kLmNcbmluZGV4IDY4MGIzNGE2M2NiM2QuLjM4YWI0MWJiY2QwZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21kL21kLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWQvbWQuY1xuQEAgLTcwOTUsNiAmIzQzOzcwOTUsMTQgQEAgc3RhdGljIHZvaWQgX19tZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4gXHRtZGRldi1cdTAwM2Vwcml2YXRlID0gTlVMTDtcbiBcdHB1dF9wZXJzKHBlcnMpO1xuIFx0Y2xlYXJfYml0KE1EX1JFQ09WRVJZX0ZST1pFTiwgXHUwMDI2bWRkZXYtXHUwMDNlcmVjb3ZlcnkpO1xuJiM0MztcbiYjNDM7XHRpZiAobWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcbiYjNDM7XHRcdG1kZGV2LVx1MDAzZWRlbHRhX2Rpc2tzID0gMDtcbiYjNDM7XHRcdG1kZGV2LVx1MDAzZXJlc2hhcGVfYmFja3dhcmRzID0gMDtcbiYjNDM7XHRcdG1kZGV2LVx1MDAzZW5ld19sZXZlbCA9IG1kZGV2LVx1MDAzZWxldmVsO1xuJiM0MztcdFx0bWRkZXYtXHUwMDNlbmV3X2xheW91dCA9IG1kZGV2LVx1MDAzZWxheW91dDtcbiYjNDM7XHRcdG1kZGV2LVx1MDAzZW5ld19jaHVua19zZWN0b3JzID0gbWRkZXYtXHUwMDNlY2h1bmtfc2VjdG9ycztcbiYjNDM7XHR9XG4gfVxuIFxuIHZvaWQgbWRfc3RvcChzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTUQmIzM0OywKICAgICYjMzQ7TURfUkFJRDQ1NiYjMzQ7LAogICAgJiMzNDtNRF9SQUlEMTAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX21kX3N0b3AmIzM0OywKICAgICYjMzQ7ZG9fbWRfc3RvcCYjMzQ7LAogICAgJiMzNDttZF9zdG9wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIF9fbWRfc3RvcCgpIGluIHRoZSBNRCAoTXVsdGlwbGUgRGV2aWNlcyAvIFNvZnR3YXJlIFJBSUQpIGRyaXZlciB0byByZXNldCByZXNoYXBlIHN0YXRlIChkZWx0YV9kaXNrcywgcmVzaGFwZV9iYWNrd2FyZHMsIG5ld19sZXZlbCwgbmV3X2xheW91dCwgbmV3X2NodW5rX3NlY3RvcnMpIHdoZW4gc3RvcHBpbmcgYW4gYXJyYXkgYWZ0ZXIgYSByZXNoYXBlIG9wZXJhdGlvbiBoYXMgZmluaXNoZWQgKHJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKS4gVGhpcyBjb2RlIGlzIGZ1bGx5IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1kIGlvY3RsIChlLmcuLCBTVE9QX0FSUkFZKSwgc3lzZnMgYXJyYXlfc3RhdGUgYXR0cmlidXRlcywgb3IgZG0tcmFpZCB0ZWFyZG93biwgYW5kIHdhcnJhbnRzIGZ1enppbmcgZm9yIHBvdGVudGlhbCBzdGF0ZSBtYW5hZ2VtZW50IHJlZ3Jlc3Npb25zIG9yIHJhY2UgY29uZGl0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRjNmFlYzM3NGMwNDdlOGEyMjBhZTFkZjdjZWZmOTMzODdkYTkyNmQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDIyOjAwOjE5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9tZC5jIGIvZHJpdmVycy9tZC9tZC5jCmluZGV4IDY4MGIzNGE2M2NiM2QuLjM4YWI0MWJiY2QwZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21kL21kLmMKQEAgLTcwOTUsNiAmIzQzOzcwOTUsMTQgQEAgc3RhdGljIHZvaWQgX19tZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpCiAJbWRkZXYtJmd0O3ByaXZhdGUgPSBOVUxMOwogCXB1dF9wZXJzKHBlcnMpOwogCWNsZWFyX2JpdChNRF9SRUNPVkVSWV9GUk9aRU4sICZhbXA7bWRkZXYtJmd0O3JlY292ZXJ5KTsKJiM0MzsKJiM0MzsJaWYgKG1kZGV2LSZndDtyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcikgewomIzQzOwkJbWRkZXYtJmd0O2RlbHRhX2Rpc2tzID0gMDsKJiM0MzsJCW1kZGV2LSZndDtyZXNoYXBlX2JhY2t3YXJkcyA9IDA7CiYjNDM7CQltZGRldi0mZ3Q7bmV3X2xldmVsID0gbWRkZXYtJmd0O2xldmVsOwomIzQzOwkJbWRkZXYtJmd0O25ld19sYXlvdXQgPSBtZGRldi0mZ3Q7bGF5b3V0OwomIzQzOwkJbWRkZXYtJmd0O25ld19jaHVua19zZWN0b3JzID0gbWRkZXYtJmd0O2NodW5rX3NlY3RvcnM7CiYjNDM7CX0KIH0KIAogdm9pZCBtZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MjAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGFuZCBDb250ZXh0KioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBhbmQgdGhlIGFzc29jaWF0ZWQgdGFzay4gVGhlIGZhY3QgdGhhdCB0aGUgY2hhbmdlIHRhcmdldHMgYGRyaXZlcnMvbWQvbWQuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBfX21kX3N0b3AoKWAgZnVuY3Rpb24sIGltbWVkaWF0ZWx5IHNldHMgbXkgYW5hbHl0aWNhbCB3aGVlbHMgdHVybmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjb2RlJiMzOTtzIGZ1bmN0aW9uYWxpdHksIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLCBhbmQgYWNjZXNzaWJpbGl0eSBiZWZvcmUgZ2V0dGluZyBpbnRvIHRoZSBkZXRhaWxzLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpdGhpbiBgX19tZF9zdG9wKClgLiBJJiMzOTtsbCB1c2UgYSBgcmVhZC1maWxlYCBjb21tYW5kIHRvIGxvb2sgZGlyZWN0bHkgYXQgdGhlIGNvZGUgYXJvdW5kIGxpbmUgNzA5NSBpbiBgZHJpdmVycy9tZC9tZC5jYC4gVGhpcyB3aWxsIGFsbG93IG1lIHRvIHF1aWNrbHkgYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoZSBmdW5jdGlvbiYjMzk7cyBwdXJwb3NlLCB0aGUgdmFyaWFibGVzIGl0IG9wZXJhdGVzIG9uLCBhbmQgcG90ZW50aWFsIGNvbnRyb2wgZmxvdyBwYXRocy4gVW5kZXJzdGFuZGluZyB0aGUgbG9jYWwgY29udGV4dCwgcG90ZW50aWFsIHN5bWJvbHMsIGFuZCBjb25maWd1cmF0aW9ucyB3aWxsIGJlIGtleSB0byB0aG9yb3VnaGx5IHVuZGVyc3RhbmRpbmcgdGhpcyBwYXRjaCYjMzk7cyBpbXBhY3QuIEkgd2FudCB0byBidWlsZCBhIHNvbGlkIGZvdW5kYXRpb24gYmVmb3JlIGRpdmluZyBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21kL21kLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzcwODA6XHRcdGlmICghbWRkZXZfaXNfZG0obWRkZXYpKVxuNzA4MTpcdFx0XHRibGtfc3luY19xdWV1ZShtZGRldi1cdTAwM2VnZW5kaXNrLVx1MDAzZXF1ZXVlKTtcbjcwODI6XHR9XG43MDgzOlx0XG43MDg0Olx0c3RhdGljIHZvaWQgX19tZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpXG43MDg1Olx0e1xuNzA4NjpcdFx0c3RydWN0IG1kX3BlcnNvbmFsaXR5ICpwZXJzID0gbWRkZXYtXHUwMDNlcGVycztcbjcwODc6XHRcbjcwODg6XHRcdG1kZGV2X2RldGFjaChtZGRldik7XG43MDg5Olx0XHRtZF9iaXRtYXBfZGVzdHJveShtZGRldik7XG43MDkwOlx0XHRzcGluX2xvY2soXHUwMDI2bWRkZXYtXHUwMDNlbG9jayk7XG43MDkxOlx0XHRtZGRldi1cdTAwM2VwZXJzID0gTlVMTDtcbjcwOTI6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNm1kZGV2LVx1MDAzZWxvY2spO1xuNzA5MzpcdFx0aWYgKG1kZGV2LVx1MDAzZXByaXZhdGUpXG43MDk0Olx0XHRcdHBlcnMtXHUwMDNlZnJlZShtZGRldiwgbWRkZXYtXHUwMDNlcHJpdmF0ZSk7XG43MDk1Olx0XHRtZGRldi1cdTAwM2Vwcml2YXRlID0gTlVMTDtcbjcwOTY6XHRcdHB1dF9wZXJzKHBlcnMpO1xuNzA5NzpcdFx0Y2xlYXJfYml0KE1EX1JFQ09WRVJZX0ZST1pFTiwgXHUwMDI2bWRkZXYtXHUwMDNlcmVjb3ZlcnkpO1xuNzA5ODpcdFxuNzA5OTpcdFx0aWYgKG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKSB7XG43MTAwOlx0XHRcdG1kZGV2LVx1MDAzZWRlbHRhX2Rpc2tzID0gMDtcbjcxMDE6XHRcdFx0bWRkZXYtXHUwMDNlcmVzaGFwZV9iYWNrd2FyZHMgPSAwO1xuNzEwMjpcdFx0XHRtZGRldi1cdTAwM2VuZXdfbGV2ZWwgPSBtZGRldi1cdTAwM2VsZXZlbDtcbjcxMDM6XHRcdFx0bWRkZXYtXHUwMDNlbmV3X2xheW91dCA9IG1kZGV2LVx1MDAzZWxheW91dDtcbjcxMDQ6XHRcdFx0bWRkZXYtXHUwMDNlbmV3X2NodW5rX3NlY3RvcnMgPSBtZGRldi1cdTAwM2VjaHVua19zZWN0b3JzO1xuNzEwNTpcdFx0fVxuNzEwNjpcdH1cbjcxMDc6XHRcbjcxMDg6XHR2b2lkIG1kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcbjcxMDk6XHR7XG43MTEwOlx0XHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNm1kZGV2LVx1MDAzZXJlY29uZmlnX211dGV4KTtcbjcxMTE6XHRcbjcxMTI6XHRcdC8qIHN0b3AgdGhlIGFycmF5IGFuZCBmcmVlIGFuIGF0dGFjaGVkIGRhdGEgc3RydWN0dXJlcy5cbjcxMTM6XHRcdCAqIFRoaXMgaXMgY2FsbGVkIGZyb20gZG0tcmFpZFxuNzExNDpcdFx0ICovXG43MTE1Olx0XHRfX21kX3N0b3Bfd3JpdGVzKG1kZGV2KTtcbjcxMTY6XHRcdF9fbWRfc3RvcChtZGRldik7XG43MTE3Olx0fVxuNzExODpcdFxuNzExOTpcdEVYUE9SVF9TWU1CT0xfR1BMKG1kX3N0b3ApO1xuNzEyMDpcdFxuNzEyMTpcdC8qIGVuc3VyZSAmIzM5O21kZGV2LVx1MDAzZXBlcnMmIzM5OyBleGlzdCBiZWZvcmUgY2FsbGluZyBtZF9zZXRfcmVhZG9ubHkoKSAqL1xuNzEyMjpcdHN0YXRpYyBpbnQgbWRfc2V0X3JlYWRvbmx5KHN0cnVjdCBtZGRldiAqbWRkZXYpXG43MTIzOlx0e1xuNzEyNDpcdFx0aW50IGVyciA9IDA7XG43MTI1Olx0XHRpbnQgZGlkX2ZyZWV6ZSA9IDA7XG43MTI2Olx0XG43MTI3Olx0XHRpZiAobWRkZXYtXHUwMDNlZXh0ZXJuYWwgXHUwMDI2XHUwMDI2IHRlc3RfYml0KE1EX1NCX0NIQU5HRV9QRU5ESU5HLCBcdTAwMjZtZGRldi1cdTAwM2VzYl9mbGFncykpXG43MTI4Olx0XHRcdHJldHVybiAtRUJVU1k7XG43MTI5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5OQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBfX21kX3N0b3BgIEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdW5kZXJzdGFuZGluZyB0aGUgbGlmZWN5Y2xlIG9mIHRoaXMgYF9fbWRfc3RvcGAgZnVuY3Rpb24sIG9yIGFueSB2YXJpYXRpb24gb2YgaXQuIFdoZXJlIGlzIGl0IGJlaW5nIGNhbGxlZD8gTW9yZSBpbXBvcnRhbnRseSwgd2hhdCYjMzk7cyAqdXNpbmcqIGl0LCBwZXJoYXBzIGluZGlyZWN0bHk/IFRpbWUgdG8gZ2V0IHRvIHRoZSBzb3VyY2UgY29kZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBmb2N1c2VkIHNlYXJjaCB3aXRoaW4gdGhlIGBkcml2ZXJzL21kL21kLmNgIGZpbGUuIFRoaXMgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciBSQUlELXJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgc2VhcmNoIGZvciBpbnN0YW5jZXMgb2YgYF9fbWRfc3RvcGAgd2l0aGluIHRoYXQgZmlsZSB0byB0cmFjZSBpdHMgdXNlIGFuZCBmaWd1cmUgb3V0IGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19tZF9zdG9wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZC9tZC5jPTY5Njc9c3RhdGljIHZvaWQgbWRfY2xlYW4oc3RydWN0IG1kZGV2ICptZGRldilcbi0tXG5kcml2ZXJzL21kL21kLmMtNzAzMS1cbmRyaXZlcnMvbWQvbWQuYzo3MDMyOnN0YXRpYyB2b2lkIF9fbWRfc3RvcF93cml0ZXMoc3RydWN0IG1kZGV2ICptZGRldilcbmRyaXZlcnMvbWQvbWQuYy03MDMzLXtcbi0tXG5kcml2ZXJzL21kL21kLmM9NzA1OT12b2lkIG1kX3N0b3Bfd3JpdGVzKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9tZC5jLTcwNjMtXHRzdG9wX3N5bmNfdGhyZWFkKG1kZGV2LCB0cnVlKTtcbmRyaXZlcnMvbWQvbWQuYzo3MDY0Olx0X19tZF9zdG9wX3dyaXRlcyhtZGRldik7XG5kcml2ZXJzL21kL21kLmMtNzA2NS1cdG1kZGV2X3VubG9jayhtZGRldik7XG4tLVxuZHJpdmVycy9tZC9tZC5jPTcwNjk9c3RhdGljIHZvaWQgbWRkZXZfZGV0YWNoKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9tZC5jLTcwODMtXG5kcml2ZXJzL21kL21kLmM6NzA4NDpzdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcbmRyaXZlcnMvbWQvbWQuYy03MDg1LXtcbi0tXG5kcml2ZXJzL21kL21kLmM9NzEwOD12b2lkIG1kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcbi0tXG5kcml2ZXJzL21kL21kLmMtNzExNC1cdCAqL1xuZHJpdmVycy9tZC9tZC5jOjcxMTU6XHRfX21kX3N0b3Bfd3JpdGVzKG1kZGV2KTtcbmRyaXZlcnMvbWQvbWQuYzo3MTE2Olx0X19tZF9zdG9wKG1kZGV2KTtcbmRyaXZlcnMvbWQvbWQuYy03MTE3LX1cbi0tXG5kcml2ZXJzL21kL21kLmM9NzEyMj1zdGF0aWMgaW50IG1kX3NldF9yZWFkb25seShzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxuLS1cbmRyaXZlcnMvbWQvbWQuYy03MTQ1LVxuZHJpdmVycy9tZC9tZC5jOjcxNDY6XHRfX21kX3N0b3Bfd3JpdGVzKG1kZGV2KTtcbmRyaXZlcnMvbWQvbWQuYy03MTQ3LVxuLS1cbmRyaXZlcnMvbWQvbWQuYz03MTcwPXN0YXRpYyBpbnQgZG9fbWRfc3RvcChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBpbnQgbW9kZSlcbi0tXG5kcml2ZXJzL21kL21kLmMtNzE5OS1cbmRyaXZlcnMvbWQvbWQuYzo3MjAwOlx0XHRfX21kX3N0b3Bfd3JpdGVzKG1kZGV2KTtcbmRyaXZlcnMvbWQvbWQuYzo3MjAxOlx0XHRfX21kX3N0b3AobWRkZXYpO1xuZHJpdmVycy9tZC9tZC5jLTcyMDItXG4tLVxuZHJpdmVycy9tZC9tZC5jPTEwNzIyPXN0YXRpYyBpbnQgbWRfbm90aWZ5X3JlYm9vdChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsXG4tLVxuZHJpdmVycy9tZC9tZC5jLTEwNzMzLVx0XHRcdGlmIChtZGRldi1cdTAwM2VwZXJzKVxuZHJpdmVycy9tZC9tZC5jOjEwNzM0Olx0XHRcdFx0X19tZF9zdG9wX3dyaXRlcyhtZGRldik7XG5kcml2ZXJzL21kL21kLmMtMTA3MzUtXHRcdFx0aWYgKG1kZGV2LVx1MDAzZXBlcnNpc3RlbnQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkzMAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHdoYXQgSSYjMzk7bSBzZWVpbmc6CgoqKkFuYWx5emluZyB0aGUgYF9fbWRfc3RvcGAgQ2FsbCBDaGFpbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhlIGBfX21kX3N0b3BgIGZ1bmN0aW9uIGlzIGJlaW5nIHRyaWdnZXJlZC4gSXQmIzM5O3MgY2xlYXIgdGhhdCBpdCYjMzk7cyBiZWluZyBjYWxsZWQgaW5kaXJlY3RseSwgc3BlY2lmaWNhbGx5IHRocm91Z2ggYG1kX3N0b3BgIGFuZCBgZG9fbWRfc3RvcGAuIE15IG5leHQgc3RlcCBpcyB0byBwaW5wb2ludCB0aGUgZXhhY3QgbG9jYXRpb25zIHRoYXQgaW5pdGlhdGUgYSBzdG9wLiBJIGtub3cgdGhhdCBgZG9fbWRfc3RvcGAgaXMgYSBrZXkgZnVuY3Rpb24gdG8gZXhhbWluZSBhcyB0aGF0IHNlZW1zIHRvIGJlIHdoZXJlIHRoZSByZWFsIHdvcmsgb2Ygc3RvcHBpbmcgdGhlIGFycmF5IGlzIGNhcnJpZWQgb3V0LiAKCkZyb20gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoYXQgYGRvX21kX3N0b3BgIGFwcGVhcnMgdG8gYmUgbGlua2VkIHRvIHRoZSBkZXZpY2UgbWFwcGVyIGludGVyZmFjZSwgbWVhbmluZyB0aGF0IGl0IGlzIGxpbmtlZCB0byB0aGluZ3MgbGlrZSBgU1RPUF9BUlJBWWAgYW5kIGBTVE9QX0FSUkFZX1JPYCBpb2N0bHMuIEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCB3aGVuIEkgYW5hbHl6ZSBob3cgdGhlc2UgdHJpZ2dlcnMgYXJlIGFjdGl2YXRlZC4gSSBhbHNvIG5lZWQgdG8gY2hlY2sgdGhlIHN5c2ZzIGBhcnJheV9zdGF0ZWAgc3RvcmUgYXMgdGhhdCBhbHNvIGNvdWxkIHRyaWdnZXIgdGhlIGNhbGxzIHRoYXQgaW50ZXJlc3QgbWUuCgpMZXQmIzM5O3MgdHJhY2UgYWxsIGNhbGxzIHRvIGBkb19tZF9zdG9wYCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG9fbWRfc3RvcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWQvbWQuYz02Mzg9c3RhdGljIHZvaWQgX19tZGRldl9wdXQoc3RydWN0IG1kZGV2ICptZGRldilcbi0tXG5kcml2ZXJzL21kL21kLmMtNjQ1LVx0ICogSWYgYXJyYXkgaXMgZnJlZWQgYnkgc3RvcHBpbmcgYXJyYXksIE1EX0RFTEVURUQgaXMgc2V0IGJ5XG5kcml2ZXJzL21kL21kLmM6NjQ2Olx0ICogZG9fbWRfc3RvcCgpLCBNRF9ERUxFVEVEIGlzIHN0aWxsIHNldCBoZXJlIGluIGNhc2UgbWRkZXYgaXMgZnJlZWRcbmRyaXZlcnMvbWQvbWQuYy02NDctXHQgKiBkaXJlY3RseSBieSBjbG9zaW5nIGEgbWRkZXYgdGhhdCBpcyBjcmVhdGVkIGJ5IGNyZWF0ZV9vbl9vcGVuLlxuLS1cbmRyaXZlcnMvbWQvbWQuYz05MTU9dm9pZCBtZGRldl91bmxvY2soc3RydWN0IG1kZGV2ICptZGRldilcbi0tXG5kcml2ZXJzL21kL21kLmMtOTc3LVx0XHQgKiBBbmQgTURfREVMRVRFRCBpcyBvbmx5IHVzZWQgZm9yIG1kIHJhaWQgd2hpY2ggaXMgc2V0IGluXG5kcml2ZXJzL21kL21kLmM6OTc4Olx0XHQgKiBkb19tZF9zdG9wLiBkbSByYWlkIG9ubHkgdXNlcyBtZF9zdG9wIHRvIHN0b3AuIFNvIGRtIHJhaWRcbmRyaXZlcnMvbWQvbWQuYy05NzktXHRcdCAqIGRvZXNuJiMzOTt0IG5lZWQgdG8gY2hlY2sgTURfREVMRVRFRCB3aGVuIGdldHRpbmcgcmVjb25maWcgbG9ja1xuLS1cbmRyaXZlcnMvbWQvbWQuYz00NjEzPWFycmF5X3N0YXRlX3Nob3coc3RydWN0IG1kZGV2ICptZGRldiwgY2hhciAqcGFnZSlcbi0tXG5kcml2ZXJzL21kL21kLmMtNDY1MC1cbmRyaXZlcnMvbWQvbWQuYzo0NjUxOnN0YXRpYyBpbnQgZG9fbWRfc3RvcChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBpbnQgcm8pO1xuZHJpdmVycy9tZC9tZC5jLTQ2NTItc3RhdGljIGludCBtZF9zZXRfcmVhZG9ubHkoc3RydWN0IG1kZGV2ICptZGRldik7XG4tLVxuZHJpdmVycy9tZC9tZC5jPTQ2NTY9YXJyYXlfc3RhdGVfc3RvcmUoc3RydWN0IG1kZGV2ICptZGRldiwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbWQvbWQuYy00NzEyLVx0XHRpZiAobWRkZXYtXHUwMDNlcGVycylcbmRyaXZlcnMvbWQvbWQuYzo0NzEzOlx0XHRcdGVyciA9IGRvX21kX3N0b3AobWRkZXYsIDIpO1xuZHJpdmVycy9tZC9tZC5jLTQ3MTQtXHRcdGJyZWFrO1xuZHJpdmVycy9tZC9tZC5jLTQ3MTUtXHRjYXNlIGNsZWFyOlxuZHJpdmVycy9tZC9tZC5jOjQ3MTY6XHRcdGVyciA9IGRvX21kX3N0b3AobWRkZXYsIDApO1xuZHJpdmVycy9tZC9tZC5jLTQ3MTctXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbWQvbWQuYz03MTIyPXN0YXRpYyBpbnQgbWRfc2V0X3JlYWRvbmx5KHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9tZC5jLTcxNjktICovXG5kcml2ZXJzL21kL21kLmM6NzE3MDpzdGF0aWMgaW50IGRvX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldiwgaW50IG1vZGUpXG5kcml2ZXJzL21kL21kLmMtNzE3MS17XG4tLVxuZHJpdmVycy9tZC9tZC5jPTcyNDI9c3RhdGljIHZvaWQgYXV0b3J1bl9hcnJheShzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxuLS1cbmRyaXZlcnMvbWQvbWQuYy03MjU5LVx0XHRwcl93YXJuKFwmIzM0O21kOiBkb19tZF9ydW4oKSByZXR1cm5lZCAlZFxcblwmIzM0OywgZXJyKTtcbmRyaXZlcnMvbWQvbWQuYzo3MjYwOlx0XHRkb19tZF9zdG9wKG1kZGV2LCAwKTtcbmRyaXZlcnMvbWQvbWQuYy03MjYxLVx0fVxuLS1cbmRyaXZlcnMvbWQvbWQuYz04MzUwPXN0YXRpYyBpbnQgbWRfaW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuLS1cbmRyaXZlcnMvbWQvbWQuYy04NDQzLVx0Y2FzZSBTVE9QX0FSUkFZOlxuZHJpdmVycy9tZC9tZC5jOjg0NDQ6XHRcdGVyciA9IGRvX21kX3N0b3AobWRkZXYsIDApO1xuZHJpdmVycy9tZC9tZC5jLTg0NDUtXHRcdGdvdG8gdW5sb2NrO1xuLS1cbmRyaXZlcnMvbWQvbWQuaD00MDc9c3RydWN0IG1kZGV2IHtcbi0tXG5kcml2ZXJzL21kL21kLmgtNTE0LVx0aW50XHRcdFx0XHRpbl9zeW5jO1x0Lyoga25vdyB0byBub3QgbmVlZCByZXN5bmMgKi9cbmRyaXZlcnMvbWQvbWQuaDo1MTU6XHQvKiAmIzM5O29wZW5fbXV0ZXgmIzM5OyBhdm9pZHMgcmFjZXMgYmV0d2VlbiAmIzM5O21kX29wZW4mIzM5OyBhbmQgJiMzOTtkb19tZF9zdG9wJiMzOTssIHNvXG5kcml2ZXJzL21kL21kLmgtNTE2LVx0ICogdGhhdCB3ZSBhcmUgbmV2ZXIgc3RvcHBpbmcgYW4gYXJyYXkgd2hpbGUgaXQgaXMgb3Blbi5cbi0tXG5kcml2ZXJzL21kL21kLmg9NzA5PXN0YXRpYyBpbmxpbmUgaW50IF9fbXVzdF9jaGVjayBtZGRldl9sb2NrKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9tZC5oLTcxNC1cbmRyaXZlcnMvbWQvbWQuaDo3MTU6XHQvKiBNRF9ERUxFVEVEIGlzIHNldCBpbiBkb19tZF9zdG9wIHdpdGggcmVjb25maWdfbXV0ZXguXG5kcml2ZXJzL21kL21kLmgtNzE2LVx0ICogU28gY2hlY2sgaXQgaGVyZS5cbi0tXG5kcml2ZXJzL21kL21kLmgtNzI5LSAqIGhvbGRzIHRoZSBsb2NrIGhlcmUgY2FuJiMzOTt0IGJlIHN0b3BwZWQuIEFuZCBhbGwgcGF0aHMgY2FuJiMzOTt0XG5kcml2ZXJzL21kL21kLmg6NzMwOiAqIGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBkb19tZF9zdG9wLlxuZHJpdmVycy9tZC9tZC5oLTczMS0gKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDE2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipLY29uZmlnIERlZXAgRGl2ZSBmb3IgTUQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgS2NvbmZpZyBvcHRpb25zIHRoYXQgYXJlICphYnNvbHV0ZWx5KiBlc3NlbnRpYWwgZm9yIHRoZSBNRCAoTXVsdGlwbGUgRGV2aWNlKSBzdWJzeXN0ZW0uIEkga25vdyB0aGlzIHN0dWZmLCBidXQgSSBhbHdheXMgc3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZSEgTGV0JiMzOTtzIGdldCByaWdodCB0byB0aGUgc291cmNlIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LiBNeSBmaXJzdCBzdG9wIGlzIGRlZmluaXRlbHkgYGRyaXZlcnMvbWQvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBmdW5kYW1lbnRhbCBNRCBjb25maWd1cmF0aW9uIG9wdGlvbnMgc2hvdWxkIGxpdmUuIEkmIzM5O2xsIHBvcmUgb3ZlciB0aGF0IGZpbGUsIHRha2luZyBub3RlcyBhbmQgbWFraW5nIGNvbm5lY3Rpb25zIGluIG15IGhlYWQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzLCB0aGUgZnVuZGFtZW50YWwgb3B0aW9ucyB0aGF0IGVuYWJsZSBhbmQgY29uZmlndXJlIHRoZSBNRCBsYXllci4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIGJ1aWxkIG15IG1lbnRhbCBtb2RlbCwgdGhpcyBpcyBnb25uYSBiZSBhbiBpbnRlcmVzdGluZyByZXZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNRFxcYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWQvS2NvbmZpZy01LVxuZHJpdmVycy9tZC9LY29uZmlnOjY6bWVudWNvbmZpZyBNRFxuZHJpdmVycy9tZC9LY29uZmlnLTctXHRib29sIFwmIzM0O011bHRpcGxlIGRldmljZXMgZHJpdmVyIHN1cHBvcnQgKFJBSUQgYW5kIExWTSlcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY5OQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBCdWlsZCBQcm9jZXNzIGZvciBgZHJpdmVycy9tZC9tZC5jYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyBgZHJpdmVycy9tZC9tZC5jYCBnZXRzIGJ1aWx0LiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgZmlyc3QgcGxhY2UgSSYjMzk7ZCBsb29rIGlzIHVzdWFsbHkgdGhlIG9idmlvdXM6IHRoZSByZWxldmFudCBgTWFrZWZpbGVgIGFuZCBgS2NvbmZpZ2AgZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9tZGAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGNoZWNrIGBkcml2ZXJzL21kL01ha2VmaWxlYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYSBkaXJlY3QgcnVsZSB0aGF0IGV4cGxpY2l0bHkgbWVudGlvbnMgdGhlIGNvbXBpbGF0aW9uIG9mIGBtZC5jYC4gSWYgbm90LCBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBkZXBlbmRlbmNpZXMgb3IgaW1wbGljaXQgcnVsZXMgdGhhdCBtaWdodCB0cmlnZ2VyIGl0cyBidWlsZC4gSSB3b3VsZCBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgYXMgd2VsbC4gVGhpcyB3aWxsIHNob3cgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIGluZmx1ZW5jZSB3aGV0aGVyIGl0JiMzOTtzIGluY2x1ZGVkIGluIHRoZSBmaW5hbCBrZXJuZWwgaW1hZ2UsIGlmIGl0JiMzOTtzIGNvbmRpdGlvbmFsLiBUaGVzZSBhcmUgdXN1YWxseSB0aGUgcHJpbWFyeSBtZWNoYW5pc21zIHRoYXQgZGV0ZXJtaW5lIHdoaWNoIG1vZHVsZXMgb3Igc291cmNlIGZpbGVzIGFyZSBhY3R1YWxseSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQgYmFzZWQgb24gdGhlIGN1cnJlbnQga2VybmVsIGNvbmZpZ3VyYXRpb24uIFdpdGggYW55IGx1Y2ssIG9uZSBvZiB0aG9zZSB0d28gZmlsZXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZFxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21kLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21kL01ha2VmaWxlPTI4PWRtLXpvbmVkLXlcdCYjNDM7PSBkbS16b25lZC10YXJnZXQubyBkbS16b25lZC1tZXRhZGF0YS5vIGRtLXpvbmVkLXJlY2xhaW0ub1xuZHJpdmVycy9tZC9NYWtlZmlsZS0yOS1cbmRyaXZlcnMvbWQvTWFrZWZpbGU6MzA6bWQtbW9kLXlcdCYjNDM7PSBtZC5vXG5kcml2ZXJzL21kL01ha2VmaWxlLTMxLW1kLW1vZC0kKENPTkZJR19NRF9CSVRNQVApXHQmIzQzOz0gbWQtYml0bWFwLm9cbi0tXG5kcml2ZXJzL21kL01ha2VmaWxlPTM0PWxpbmVhci15ICAgICAgICYjNDM7PSBtZC1saW5lYXIub1xuLS1cbmRyaXZlcnMvbWQvTWFrZWZpbGUtMzYtIyBOb3RlOiBsaW5rIG9yZGVyIGlzIGltcG9ydGFudC4gIEFsbCByYWlkIHBlcnNvbmFsaXRpZXNcbmRyaXZlcnMvbWQvTWFrZWZpbGU6Mzc6IyBhbmQgbXVzdCBjb21lIGJlZm9yZSBtZC5vLCBhcyB0aGV5IGVhY2ggaW5pdGlhbGlzZVxuZHJpdmVycy9tZC9NYWtlZmlsZTozODojIHRoZW1zZWx2ZXMsIGFuZCBtZC5vIG1heSB1c2UgdGhlIHBlcnNvbmFsaXRpZXMgd2hlbiBpdFxuZHJpdmVycy9tZC9NYWtlZmlsZS0zOS0jIGF1dG8taW5pdGlhbGlzZWQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxOTgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIFJBSUQgRHJpdmVyIEJ1aWxkIFByb2Nlc3MqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBSQUlEIGRyaXZlciBpcyBiZWluZyBidWlsdCwgc3BlY2lmaWNhbGx5IHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIGBkcml2ZXJzL21kL01ha2VmaWxlYCBhcm91bmQgbGluZXMgMjAtNDAuIEkmIzM5O20gdGhpbmtpbmcgdGhhdCYjMzk7cyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBhbmQgb2JqZWN0IGZpbGUgaW5jbHVzaW9uIGZvciB0aGUgbW9kdWxlIHJlc2lkZS4gSSYjMzk7bGwgbmVlZCB0byBwaW5wb2ludCBhbnkgZGVwZW5kZW5jaWVzLCBjb25kaXRpb25hbCBjb21waWxhdGlvbnMsIG9yIHNwZWNpYWwgZmxhZ3MgZGVmaW5lZCB0aGVyZS4gVGhpcyBzZWN0aW9uIHByb2JhYmx5IGhhbmRsZXMgdGhlIGNvcmUgbW9kdWxlcyBhbmQgcGVyaGFwcyBhbnkgZGV2aWNlLXNwZWNpZmljIGRyaXZlcnMgdW5kZXIgdGhlIFJBSUQgc3Vic3lzdGVtLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjcml0aWNhbCBnbHVlIHRoYXQgdGllcyB0aGUgc291cmNlIGNvZGUgZmlsZXMgaW50byBhIGxvYWRhYmxlIG1vZHVsZS4gVGhhdCYjMzk7cyBsaWtlbHkgd2hlcmUgSSYjMzk7bGwgZmluZCBob3cgdGhpbmdzIGFyZSBiZWluZyBjb21waWxlZCBhbmQgbGlua2VkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHRvIHRyb3VibGVzaG9vdCBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIHRoZSBtb2R1bGUmIzM5O3MgbG9hZGluZywgb3IgYSBjb25maWd1cmF0aW9uIGNvbmZsaWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWQvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQ1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgTWFrZWZpbGUgZm9yIHRoZSBrZXJuZWwgc29mdHdhcmUgUkFJRCBhbmQgTFZNIGRyaXZlcnMuXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGRtLW1vZC15XHQmIzQzOz0gZG0ubyBkbS10YWJsZS5vIGRtLXRhcmdldC5vIGRtLWxpbmVhci5vIGRtLXN0cmlwZS5vIFxcXG4gICA3Olx0XHRcdCAgIGRtLWlvY3RsLm8gZG0taW8ubyBkbS1rY29weWQubyBkbS1zeXNmcy5vIGRtLXN0YXRzLm8gXFxcbiAgIDg6XHRcdFx0ICAgZG0tcnEubyBkbS1pby1yZXdpbmQub1xuICAgOTpcdGRtLW11bHRpcGF0aC15XHQmIzQzOz0gZG0tcGF0aC1zZWxlY3Rvci5vIGRtLW1wYXRoLm9cbiAgMTA6XHRkbS1oaXN0b3JpY2FsLXNlcnZpY2UtdGltZS15ICYjNDM7PSBkbS1wcy1oaXN0b3JpY2FsLXNlcnZpY2UtdGltZS5vXG4gIDExOlx0ZG0taW8tYWZmaW5pdHkteSAmIzQzOz0gZG0tcHMtaW8tYWZmaW5pdHkub1xuICAxMjpcdGRtLXF1ZXVlLWxlbmd0aC15ICYjNDM7PSBkbS1wcy1xdWV1ZS1sZW5ndGgub1xuICAxMzpcdGRtLXJvdW5kLXJvYmluLXkgJiM0Mzs9IGRtLXBzLXJvdW5kLXJvYmluLm9cbiAgMTQ6XHRkbS1zZXJ2aWNlLXRpbWUteSAmIzQzOz0gZG0tcHMtc2VydmljZS10aW1lLm9cbiAgMTU6XHRkbS1zbmFwc2hvdC15XHQmIzQzOz0gZG0tc25hcC5vIGRtLWV4Y2VwdGlvbi1zdG9yZS5vIGRtLXNuYXAtdHJhbnNpZW50Lm8gXFxcbiAgMTY6XHRcdFx0ICAgIGRtLXNuYXAtcGVyc2lzdGVudC5vXG4gIDE3Olx0ZG0tbWlycm9yLXlcdCYjNDM7PSBkbS1yYWlkMS5vXG4gIDE4Olx0ZG0tbG9nLXVzZXJzcGFjZS15ICYjNDM7PSBkbS1sb2ctdXNlcnNwYWNlLWJhc2UubyBkbS1sb2ctdXNlcnNwYWNlLXRyYW5zZmVyLm9cbiAgMTk6XHRkbS1iaW8tcHJpc29uLXkgJiM0Mzs9IGRtLWJpby1wcmlzb24tdjEubyBkbS1iaW8tcHJpc29uLXYyLm9cbiAgMjA6XHRkbS10aGluLXBvb2wteVx0JiM0Mzs9IGRtLXRoaW4ubyBkbS10aGluLW1ldGFkYXRhLm9cbiAgMjE6XHRkbS1jYWNoZS15XHQmIzQzOz0gZG0tY2FjaGUtdGFyZ2V0Lm8gZG0tY2FjaGUtbWV0YWRhdGEubyBkbS1jYWNoZS1wb2xpY3kubyBcXFxuICAyMjpcdFx0XHQgICAgZG0tY2FjaGUtYmFja2dyb3VuZC10cmFja2VyLm9cbiAgMjM6XHRkbS1jYWNoZS1zbXEteVx0JiM0Mzs9IGRtLWNhY2hlLXBvbGljeS1zbXEub1xuICAyNDpcdGRtLWVicy15XHQmIzQzOz0gZG0tZWJzLXRhcmdldC5vXG4gIDI1Olx0ZG0tZXJhLXlcdCYjNDM7PSBkbS1lcmEtdGFyZ2V0Lm9cbiAgMjY6XHRkbS1jbG9uZS15XHQmIzQzOz0gZG0tY2xvbmUtdGFyZ2V0Lm8gZG0tY2xvbmUtbWV0YWRhdGEub1xuICAyNzpcdGRtLXZlcml0eS15XHQmIzQzOz0gZG0tdmVyaXR5LXRhcmdldC5vXG4gIDI4Olx0ZG0tem9uZWQteVx0JiM0Mzs9IGRtLXpvbmVkLXRhcmdldC5vIGRtLXpvbmVkLW1ldGFkYXRhLm8gZG0tem9uZWQtcmVjbGFpbS5vXG4gIDI5Olx0XG4gIDMwOlx0bWQtbW9kLXlcdCYjNDM7PSBtZC5vXG4gIDMxOlx0bWQtbW9kLSQoQ09ORklHX01EX0JJVE1BUClcdCYjNDM7PSBtZC1iaXRtYXAub1xuICAzMjpcdG1kLW1vZC0kKENPTkZJR19NRF9MTEJJVE1BUClcdCYjNDM7PSBtZC1sbGJpdG1hcC5vXG4gIDMzOlx0cmFpZDQ1Ni15XHQmIzQzOz0gcmFpZDUubyByYWlkNS1jYWNoZS5vIHJhaWQ1LXBwbC5vXG4gIDM0Olx0bGluZWFyLXkgICAgICAgJiM0Mzs9IG1kLWxpbmVhci5vXG4gIDM1Olx0XG4gIDM2Olx0IyBOb3RlOiBsaW5rIG9yZGVyIGlzIGltcG9ydGFudC4gIEFsbCByYWlkIHBlcnNvbmFsaXRpZXNcbiAgMzc6XHQjIGFuZCBtdXN0IGNvbWUgYmVmb3JlIG1kLm8sIGFzIHRoZXkgZWFjaCBpbml0aWFsaXNlXG4gIDM4Olx0IyB0aGVtc2VsdmVzLCBhbmQgbWQubyBtYXkgdXNlIHRoZSBwZXJzb25hbGl0aWVzIHdoZW4gaXRcbiAgMzk6XHQjIGF1dG8taW5pdGlhbGlzZWQuXG4gIDQwOlx0XG4gIDQxOlx0b2JqLSQoQ09ORklHX01EX0xJTkVBUilcdFx0JiM0Mzs9IGxpbmVhci5vXG4gIDQyOlx0b2JqLSQoQ09ORklHX01EX1JBSUQwKVx0XHQmIzQzOz0gcmFpZDAub1xuICA0MzpcdG9iai0kKENPTkZJR19NRF9SQUlEMSlcdFx0JiM0Mzs9IHJhaWQxLm9cbiAgNDQ6XHRvYmotJChDT05GSUdfTURfUkFJRDEwKVx0XHQmIzQzOz0gcmFpZDEwLm9cbiAgNDU6XHRvYmotJChDT05GSUdfTURfUkFJRDQ1NilcdCYjNDM7PSByYWlkNDU2Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQwNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBCdWlsZCBQcm9jZXNzIGZvciBgbWQtbW9kYCoqCgpSaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIGBtZC1tb2RgLiBUaGlzIGlzIGEgY29yZSBjb21wb25lbnQsIGFuZCBJJiMzOTttIHN1cmUgaXQmIzM5O3MgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGVudGlyZSBSQUlEIHN5c3RlbSBpcyBwdXQgdG9nZXRoZXIuIFRvIGdldCB0byB0aGUgaGVhcnQgb2YgaXQsIEkmIzM5O2xsIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSBrbm93IHRoZSBgZHJpdmVycy9tZC9NYWtlZmlsZWAgaXMgdGhlIHBsYWNlIHRvIHN0YXJ0LCBhbmQgbGluZXMgNDYgdGhyb3VnaCA2MCBhcmUgbGlrZWx5IHdoZXJlIHRoZSByZWxldmFudCBidWlsZCBydWxlcyBhcmUgZGVmaW5lZC4gVGhhdCBzZWN0aW9uIHdpbGwgcHJvYmFibHkgcHJvdmlkZSB0aGUgY2xlYXJlc3QgcGljdHVyZSBvZiB3aGF0IGRlcGVuZGVuY2llcyBhcmUgbmVlZGVkLCBhbnkgcHJlLXByb2Nlc3Npbmcgc3RlcHMsIGFuZCB0aGUgZmluYWwgbGlua2luZyBwcm9jZWR1cmUgZm9yIHRoZSBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gaGF2ZSBhIHNvbGlkIGdyYXNwIG9mIGhvdyBpdCB3b3Jrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21kL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0NTpcdG9iai0kKENPTkZJR19NRF9SQUlENDU2KVx0JiM0Mzs9IHJhaWQ0NTYub1xuICA0NjpcdG9iai0kKENPTkZJR19NRF9DTFVTVEVSKVx0JiM0Mzs9IG1kLWNsdXN0ZXIub1xuICA0NzpcdG9iai0kKENPTkZJR19CQ0FDSEUpXHRcdCYjNDM7PSBiY2FjaGUvXG4gIDQ4Olx0b2JqLSQoQ09ORklHX0JMS19ERVZfTUQpXHQmIzQzOz0gbWQtbW9kLm9cbiAgNDk6XHRpZmVxICgkKENPTkZJR19CTEtfREVWX01EKSx5KVxuICA1MDpcdG9iai15XHRcdFx0XHQmIzQzOz0gbWQtYXV0b2RldGVjdC5vXG4gIDUxOlx0ZW5kaWZcbiAgNTI6XHRvYmotJChDT05GSUdfQkxLX0RFVl9ETSlcdCYjNDM7PSBkbS1tb2Qub1xuICA1MzpcdG9iai0kKENPTkZJR19CTEtfREVWX0RNX0JVSUxUSU4pICYjNDM7PSBkbS1idWlsdGluLm9cbiAgNTQ6XHRvYmotJChDT05GSUdfRE1fVU5TVFJJUEVEKVx0JiM0Mzs9IGRtLXVuc3RyaXBlLm9cbiAgNTU6XHRvYmotJChDT05GSUdfRE1fQlVGSU8pXHRcdCYjNDM7PSBkbS1idWZpby5vXG4gIDU2Olx0b2JqLSQoQ09ORklHX0RNX0JJT19QUklTT04pXHQmIzQzOz0gZG0tYmlvLXByaXNvbi5vXG4gIDU3Olx0b2JqLSQoQ09ORklHX0RNX0NSWVBUKVx0XHQmIzQzOz0gZG0tY3J5cHQub1xuICA1ODpcdG9iai0kKENPTkZJR19ETV9JTkxJTkVDUllQVClcdCYjNDM7PSBkbS1pbmxpbmVjcnlwdC5vXG4gIDU5Olx0b2JqLSQoQ09ORklHX0RNX0RFTEFZKVx0XHQmIzQzOz0gZG0tZGVsYXkub1xuICA2MDpcdG9iai0kKENPTkZJR19ETV9EVVNUKVx0XHQmIzQzOz0gZG0tZHVzdC5vXG4gIDYxOlx0b2JqLSQoQ09ORklHX0RNX0ZMQUtFWSlcdFx0JiM0Mzs9IGRtLWZsYWtleS5vXG4gIDYyOlx0b2JqLSQoQ09ORklHX0RNX01VTFRJUEFUSClcdCYjNDM7PSBkbS1tdWx0aXBhdGgubyBkbS1yb3VuZC1yb2Jpbi5vXG4gIDYzOlx0b2JqLSQoQ09ORklHX0RNX01VTFRJUEFUSF9RTClcdCYjNDM7PSBkbS1xdWV1ZS1sZW5ndGgub1xuICA2NDpcdG9iai0kKENPTkZJR19ETV9NVUxUSVBBVEhfU1QpXHQmIzQzOz0gZG0tc2VydmljZS10aW1lLm9cbiAgNjU6XHRvYmotJChDT05GSUdfRE1fTVVMVElQQVRIX0hTVClcdCYjNDM7PSBkbS1oaXN0b3JpY2FsLXNlcnZpY2UtdGltZS5vXG4gIDY2Olx0b2JqLSQoQ09ORklHX0RNX01VTFRJUEFUSF9JT0EpXHQmIzQzOz0gZG0taW8tYWZmaW5pdHkub1xuICA2NzpcdG9iai0kKENPTkZJR19ETV9TV0lUQ0gpXHRcdCYjNDM7PSBkbS1zd2l0Y2gub1xuICA2ODpcdG9iai0kKENPTkZJR19ETV9TTkFQU0hPVClcdCYjNDM7PSBkbS1zbmFwc2hvdC5vXG4gIDY5Olx0b2JqLSQoQ09ORklHX0RNX1BFUlNJU1RFTlRfREFUQSkgJiM0Mzs9IHBlcnNpc3RlbnQtZGF0YS9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI0MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkNoZWNraW5nIHRoZSBNZXRhZGF0YSBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgc3RhdHVzIG9mIGBCTEtfREVWX01EYC4gSSBpbW1lZGlhdGVseSB0aGluayB0byBjaGVjayB0aGUgYGRyaXZlcnMvbWQvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCDigJMgaXQmIzM5O3MgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGUgc3BlY2lmaWNhbGx5IGZvciB0aGUgTXVsdGlwbGUgRGV2aWNlIChNRCkgc3Vic3lzdGVtLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaWYgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHNldCwgaXQgd2lsbCBiZSBkZWZpbmVkIGFuZCBjb250cm9sbGVkIGluIHRoZSBLY29uZmlnIGZpbGUuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGlmIGl0JiMzOTtzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBwZXJoYXBzIHBhcnQgb2YgYSBtb3JlIGNvbXBsZXggY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgdGhhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19ERVZfTURcXGImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21kLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21kL0tjb25maWc9MTM9aWYgTURcbmRyaXZlcnMvbWQvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbWQvS2NvbmZpZzoxNTpjb25maWcgQkxLX0RFVl9NRFxuZHJpdmVycy9tZC9LY29uZmlnLTE2LVx0dHJpc3RhdGUgXCYjMzQ7UkFJRCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MTMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIExhYnlyaW50aCBvZiBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBSQUlEIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZW0gaXMsIG9mIGNvdXJzZSwgdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhcmUgZGVmaW5lZC4gSSBoYXZlIGEgaHVuY2ggdGhlIHJlbGV2YW50IG9wdGlvbnMgYXJlIGluIHRoZSBgZHJpdmVycy9tZC9gIGRpcmVjdG9yeSwgY29uc2lkZXJpbmcgaXQmIzM5O3MgdGhlIGhvbWUgb2YgdGhlIE11bHRpcGxlIERldmljZSBkcml2ZXIgY29kZS4gTGV0IG1lIHNwZWNpZmljYWxseSBjaGVjayBgZHJpdmVycy9tZC9LY29uZmlnYCBhbmQgem9vbSBpbiBvbiwgc2F5LCBsaW5lIDEzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCB0byBzZWUgaG93IGV2ZXJ5dGhpbmcgaXMgbGFpZCBvdXQgYW5kIGhvdyB0aGUgUkFJRCBvcHRpb25zIGFyZSBleHBvc2VkLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCBmaWd1cmluZyBvdXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gcGl0ZmFsbHMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGxpbmVzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIHNjb3Bpbmcgb2YgdGhlIG9wdGlvbnMgYmVpbmcgY29uc2lkZXJlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgQmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTURcbiAgIDc6XHRcdGJvb2wgXCYjMzQ7TXVsdGlwbGUgZGV2aWNlcyBkcml2ZXIgc3VwcG9ydCAoUkFJRCBhbmQgTFZNKVwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBCTE9DS1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBTdXBwb3J0IG11bHRpcGxlIHBoeXNpY2FsIHNwaW5kbGVzIHRocm91Z2ggYSBzaW5nbGUgbG9naWNhbCBkZXZpY2UuXG4gIDExOlx0XHQgIFJlcXVpcmVkIGZvciBSQUlEIGFuZCBsb2dpY2FsIHZvbHVtZSBtYW5hZ2VtZW50LlxuICAxMjpcdFxuICAxMzpcdGlmIE1EXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIEJMS19ERVZfTURcbiAgMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1JBSUQgc3VwcG9ydFwmIzM0O1xuICAxNzpcdFx0c2VsZWN0IEJMT0NLX0hPTERFUl9ERVBSRUNBVEVEIGlmIFNZU0ZTXG4gIDE4Olx0XHRzZWxlY3QgQlVGRkVSX0hFQURcbiAgMTk6XHRcdCMgQkxPQ0tfTEVHQUNZX0FVVE9MT0FEIHJlcXVpcmVtZW50IHNob3VsZCBiZSByZW1vdmVkXG4gIDIwOlx0XHQjIGFmdGVyIHJlbGV2YW50IG1kYWRtIGVuaGFuY2VtZW50cyAtIHRvIG1ha2UgXCYjMzQ7bmFtZXM9eWVzXCYjMzQ7XG4gIDIxOlx0XHQjIHRoZSBkZWZhdWx0IC0gYXJlIHdpZGVseSBhdmFpbGFibGUuXG4gIDIyOlx0XHRzZWxlY3QgQkxPQ0tfTEVHQUNZX0FVVE9MT0FEXG4gIDIzOlx0XHRoZWxwXG4gIDI0Olx0XHQgIFRoaXMgZHJpdmVyIGxldHMgeW91IGNvbWJpbmUgc2V2ZXJhbCBoYXJkIGRpc2sgcGFydGl0aW9ucyBpbnRvIG9uZVxuICAyNTpcdFx0ICBsb2dpY2FsIGJsb2NrIGRldmljZS4gVGhpcyBjYW4gYmUgdXNlZCB0byBzaW1wbHkgYXBwZW5kIG9uZVxuICAyNjpcdFx0ICBwYXJ0aXRpb24gdG8gYW5vdGhlciBvbmUgb3IgdG8gY29tYmluZSBzZXZlcmFsIHJlZHVuZGFudCBoYXJkIGRpc2tzXG4gIDI3Olx0XHQgIGludG8gYSBSQUlEMS80LzUgZGV2aWNlIHNvIGFzIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGhhcmRcbiAgMjg6XHRcdCAgZGlzayBmYWlsdXJlcy4gVGhpcyBpcyBjYWxsZWQgXCYjMzQ7U29mdHdhcmUgUkFJRFwmIzM0OyBzaW5jZSB0aGUgY29tYmluaW5nIG9mXG4gIDI5Olx0XHQgIHRoZSBwYXJ0aXRpb25zIGlzIGRvbmUgYnkgdGhlIGtlcm5lbC4gXCYjMzQ7SGFyZHdhcmUgUkFJRFwmIzM0OyBtZWFucyB0aGF0IHRoZVxuICAzMDpcdFx0ICBjb21iaW5pbmcgaXMgZG9uZSBieSBhIGRlZGljYXRlZCBjb250cm9sbGVyOyBpZiB5b3UgaGF2ZSBzdWNoIGFcbiAgMzE6XHRcdCAgY29udHJvbGxlciwgeW91IGRvIG5vdCBuZWVkIHRvIHNheSBZIGhlcmUuXG4gIDMyOlx0XG4gIDMzOlx0XHQgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgU29mdHdhcmUgUkFJRCBvbiBMaW51eCBpcyBjb250YWluZWQgaW4gdGhlXG4gIDM0Olx0XHQgIFNvZnR3YXJlIFJBSUQgbWluaS1IT1dUTywgYXZhaWxhYmxlIGZyb21cbiAgMzU6XHRcdCAgXHUwMDNjaHR0cHM6Ly93d3cudGxkcC5vcmcvZG9jcy5odG1sI2hvd3RvXHUwMDNlLiBUaGVyZSB5b3Ugd2lsbCBhbHNvIGxlYXJuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjcxCgkJCQkJCQlvdXRwdXQ6IDE5MwoJCQkJCQkJdGhvdWdodHM6IDEwNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIGBtZF9zdG9wYCBwYXRoIGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgdGhlIHZpYWJpbGl0eSBvZiBmdXp6aW5nIHRoZSBgbWRfc3RvcGAgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgcmVzZXQgb2YgcmVzaGFwZSBwYXJhbWV0ZXJzIHdpdGhpbiB0aGUgYF9fbWRfc3RvcGAgZnVuY3Rpb24uCgpGaXJzdCwgSSBzZWUgdGhhdCB0aGUgY29kZSBJJiMzOTttIGludGVyZXN0ZWQgaW4sIHRoZSBmdW5jdGlvbiBgX19tZF9zdG9wYCwgbGl2ZXMgd2l0aGluIGBkcml2ZXJzL21kL21kLmNgLCBhbmQgaXQmIzM5O3MgY2FsbGVkIGJ5IGBtZF9zdG9wYC4gYF9fbWRfc3RvcGAgaXMgc3RhdGljLCB3aGljaCBtZWFucyBpdCYjMzk7cyBub3QgZGlyZWN0bHkgZXhwb3J0ZWQsIGJ1dCBgbWRfc3RvcGAgaXMuIFdlIGFsc28gaGF2ZSBgZG9fbWRfc3RvcGAgdGhhdCBpcyBzdGF0aWMgYXMgd2VsbC4KClRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyB0aGUgcmVzZXQgb2YgcmVzaGFwZSBwYXJhbWV0ZXJzIChgZGVsdGFfZGlza3NgLCBgcmVzaGFwZV9iYWNrd2FyZHNgLCBldGMuKSB3aGVuIGEgcmVzaGFwZSBvcGVyYXRpb24gaGFzIGNvbXBsZXRlZCAoYXMgaW5kaWNhdGVkIGJ5IGBtZGRldi0mZ3Q7cmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3JgKSBhbmQgdGhlIGFycmF5IGlzIHN0b3BwZWQuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHRoaXMgcmVzZXQgbWlnaHQgYmUgYSBnb29kIGFyZWEgZm9yIGZ1enppbmcuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgX19tZF9zdG9wYCAoYW5kIGBtZF9zdG9wYCkgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgYC9kZXYvbWQqYCBkZXZpY2VzIGFyZSBhdmFpbGFibGUgaW4gUUVNVS9zeXprYWxsZXIgYW5kIHRoZSBNRCBzdGFjayBjYW4gYmUgbWFuaXB1bGF0ZWQgdmlhIGlvY3RsIGNhbGxzIChsaWtlIGBTVE9QX0FSUkFZYCBvciBgU1RPUF9BUlJBWV9ST2ApLCBzeXNmcyBpbnRlcmFjdGlvbnMgKGBhcnJheV9zdGF0ZWAgd3JpdGluZyAmIzM0O2NsZWFyJiMzNDsgb3IgJiMzNDtpbmFjdGl2ZSYjMzQ7IG9yICYjMzQ7c3RvcCYjMzQ7KSwgYW5kIGV2ZW4gZG0tcmFpZCB0ZWFyZG93bi4gU3l6a2FsbGVyJiMzOTtzIGNvdmVyYWdlIG9mIG1kIGlvY3RscyBhbmQgc3lzZnMgbWFrZXMgaXQgYSBncmVhdCB0ZXN0aW5nIHBsYXRmb3JtLgoKVG8gdmVyaWZ5IHJlYWNoYWJpbGl0eSwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBCTEtfREVWX01EYCBpcyBjcnVjaWFsLCBhcyBpdCBkaXJlY3RseSBlbmFibGVzIHRoZSBgbWQuY2AgbW9kdWxlLiBUaGVuLCB0byBtYWtlIHJlc2hhcGUgcmVsZXZhbnQsIEkgbmVlZCBlaXRoZXIgYE1EX1JBSUQ0NTZgIG9yIGBNRF9SQUlEMTBgLCBiZWNhdXNlIHRoZXNlIFJBSUQgcGVyc29uYWxpdGllcyBzdXBwb3J0IHJlc2hhcGluZy4gVGhlIG1vcmUgZ2VuZXJhbCBgQ09ORklHX01EYCB3b3VsZCBlbmFibGUgYG1kLmNgLCBidXQgdGhlIHNwZWNpZmljIFJBSUQgcGVyc29uYWxpdGllcyBlbmFibGUgdGhlIHJlc2hhcGluZyBjb2RlLiBJIGFsc28gbmVlZCB0byBjb25zaWRlciB0aGF0IGBCTEtfREVWX0RNYCBhbmQgYERNX1JBSURgIGFsc28gY2FsbCBgbWRfc3RvcGAuCgpUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBfX21kX3N0b3BgLCBgZG9fbWRfc3RvcGAsIGFuZCBgbWRfc3RvcGAgYXMgbXkgRm9jdXNTeW1ib2xzLiBUaGUgZW5hYmxpbmcgY29uZmlncyBhcmUgYEJMS19ERVZfTURgLCBgTURfUkFJRDQ1NmAsIGFuZCBgTURfUkFJRDEwYC4gV2l0aCB0aGVzZSBjb21wb25lbnRzIGluIHBsYWNlLCBhbmQgYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGFuZCBNRCBpcyBmdWxseSBzdXBwb3J0ZWQgaW4gdGhlc2UgZW52aXJvbm1lbnRzLCBJIGJlbGlldmUgdGhpcyBpcyBhIHZhbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTUQmIzM0OywKICAgICYjMzQ7TURfUkFJRDQ1NiYjMzQ7LAogICAgJiMzNDtNRF9SQUlEMTAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX21kX3N0b3AmIzM0OywKICAgICYjMzQ7ZG9fbWRfc3RvcCYjMzQ7LAogICAgJiMzNDttZF9zdG9wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIF9fbWRfc3RvcCgpIGluIHRoZSBNRCAoTXVsdGlwbGUgRGV2aWNlcyAvIFNvZnR3YXJlIFJBSUQpIGRyaXZlciB0byByZXNldCByZXNoYXBlIHN0YXRlIChkZWx0YV9kaXNrcywgcmVzaGFwZV9iYWNrd2FyZHMsIG5ld19sZXZlbCwgbmV3X2xheW91dCwgbmV3X2NodW5rX3NlY3RvcnMpIHdoZW4gc3RvcHBpbmcgYW4gYXJyYXkgYWZ0ZXIgYSByZXNoYXBlIG9wZXJhdGlvbiBoYXMgZmluaXNoZWQgKHJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKS4gVGhpcyBjb2RlIGlzIGZ1bGx5IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1kIGlvY3RsIChlLmcuLCBTVE9QX0FSUkFZKSwgc3lzZnMgYXJyYXlfc3RhdGUgYXR0cmlidXRlcywgb3IgZG0tcmFpZCB0ZWFyZG93biwgYW5kIHdhcnJhbnRzIGZ1enppbmcgZm9yIHBvdGVudGlhbCBzdGF0ZSBtYW5hZ2VtZW50IHJlZ3Jlc3Npb25zIG9yIHJhY2UgY29uZGl0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9NRCYjMzQ7LAogICAgJiMzNDtNRF9SQUlENDU2JiMzNDssCiAgICAmIzM0O01EX1JBSUQxMCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fbWRfc3RvcCYjMzQ7LAogICAgJiMzNDtkb19tZF9zdG9wJiMzNDssCiAgICAmIzM0O21kX3N0b3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgX19tZF9zdG9wKCkgaW4gdGhlIE1EIChNdWx0aXBsZSBEZXZpY2VzIC8gU29mdHdhcmUgUkFJRCkgZHJpdmVyIHRvIHJlc2V0IHJlc2hhcGUgc3RhdGUgKGRlbHRhX2Rpc2tzLCByZXNoYXBlX2JhY2t3YXJkcywgbmV3X2xldmVsLCBuZXdfbGF5b3V0LCBuZXdfY2h1bmtfc2VjdG9ycykgd2hlbiBzdG9wcGluZyBhbiBhcnJheSBhZnRlciBhIHJlc2hhcGUgb3BlcmF0aW9uIGhhcyBmaW5pc2hlZCAocmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpLiBUaGlzIGNvZGUgaXMgZnVsbHkgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWQgaW9jdGwgKGUuZy4sIFNUT1BfQVJSQVkpLCBzeXNmcyBhcnJheV9zdGF0ZSBhdHRyaWJ1dGVzLCBvciBkbS1yYWlkIHRlYXJkb3duLCBhbmQgd2FycmFudHMgZnV6emluZyBmb3IgcG90ZW50aWFsIHN0YXRlIG1hbmFnZW1lbnQgcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMjowMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWRfc3RvcCgpYCBpbiBgZHJpdmVycy9tZC9tZC5jYCB0byByZXNldCByZXNoYXBlIGNvbmZpZ3VyYXRpb24gZmllbGRzIChgZGVsdGFfZGlza3NgLCBgcmVzaGFwZV9iYWNrd2FyZHNgLCBgbmV3X2xldmVsYCwgYG5ld19sYXlvdXRgLCBgbmV3X2NodW5rX3NlY3RvcnNgKSBpbiBgc3RydWN0IG1kZGV2YCB3aGVuIHN0b3BwaW5nIGFuIG1kIGFycmF5IHdoZXJlIGByZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcmAuXG5cbkFsbCBhc3NpZ25lZCB2YWx1ZXMgYXJlIGVpdGhlciBjb25zdGFudCB6ZXJvZXMgb3IgZGVyaXZlZCBmcm9tIGV4aXN0aW5nLCBpbml0aWFsaXplZCBmaWVsZHMgb2YgYG1kZGV2YC4gVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBkYXRhLCBkb2VzIG5vdCBhbHRlciBjb3B5LXRvLXVzZXIgb3BlcmF0aW9ucywgYW5kIGRvZXMgbm90IGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCB3YXJyYW50IGEgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZGM2YWVjMzc0YzA0N2U4YTIyMGFlMWRmN2NlZmY5MzM4N2RhOTI2ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDkgMjI6MDA6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL21kLmMgYi9kcml2ZXJzL21kL21kLmMKaW5kZXggNjgwYjM0YTYzY2IzZC4uMzhhYjQxYmJjZDBlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9tZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWQvbWQuYwpAQCAtNzA5NSw2ICYjNDM7NzA5NSwxNCBAQCBzdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldikKIAltZGRldi0mZ3Q7cHJpdmF0ZSA9IE5VTEw7CiAJcHV0X3BlcnMocGVycyk7CiAJY2xlYXJfYml0KE1EX1JFQ09WRVJZX0ZST1pFTiwgJmFtcDttZGRldi0mZ3Q7cmVjb3ZlcnkpOwomIzQzOwomIzQzOwlpZiAobWRkZXYtJmd0O3Jlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKSB7CiYjNDM7CQltZGRldi0mZ3Q7ZGVsdGFfZGlza3MgPSAwOwomIzQzOwkJbWRkZXYtJmd0O3Jlc2hhcGVfYmFja3dhcmRzID0gMDsKJiM0MzsJCW1kZGV2LSZndDtuZXdfbGV2ZWwgPSBtZGRldi0mZ3Q7bGV2ZWw7CiYjNDM7CQltZGRldi0mZ3Q7bmV3X2xheW91dCA9IG1kZGV2LSZndDtsYXlvdXQ7CiYjNDM7CQltZGRldi0mZ3Q7bmV3X2NodW5rX3NlY3RvcnMgPSBtZGRldi0mZ3Q7Y2h1bmtfc2VjdG9yczsKJiM0MzsJfQogfQogCiB2b2lkIG1kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldikKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoKioKCk9rYXksIHRpbWUgdG8gZGlnIGluLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyBhbHdheXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjaGFuZ2VzIGRpcmVjdGx5LiBJJiMzOTttIGdvaW5nIHRvIGZpcmUgdXAgbXkgdXN1YWwgdG9vbHMgYW5kIHN0YXJ0IGJ5IGluc3BlY3RpbmcgdGhlIHBhdGNoIGl0c2VsZiwgc2VlaW5nIHdoYXQgaXQmIzM5O3MgdG91Y2hpbmcuIEFoLCBgZHJpdmVycy9tZC9tZC5jYCDigJMgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2UgaXMgd2l0aGluIHRoZSBgX19tZF9zdG9wYCBmdW5jdGlvbi4gTm93LCB0aGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcsIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyBgX19tZF9zdG9wYCB3b3JrcyBhbmQgaXRzIGltbWVkaWF0ZSBjb250ZXh0IHRvIGZ1bGx5IGdyYXNwIHRoZSBjaGFuZ2UuIExldCBtZSBnbyBkaXJlY3RseSB0byBhcm91bmQgbGluZSA3MDk1IGluIGBkcml2ZXJzL21kL21kLmNgIHRvIHJlYWQgdGhlIGNvbnRleHQgb2YgdGhlIGNoYW5nZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgbGF5IG9mIHRoZSBsYW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWQvbWQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NzA4MDpcdFx0aWYgKCFtZGRldl9pc19kbShtZGRldikpXG43MDgxOlx0XHRcdGJsa19zeW5jX3F1ZXVlKG1kZGV2LVx1MDAzZWdlbmRpc2stXHUwMDNlcXVldWUpO1xuNzA4MjpcdH1cbjcwODM6XHRcbjcwODQ6XHRzdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcbjcwODU6XHR7XG43MDg2Olx0XHRzdHJ1Y3QgbWRfcGVyc29uYWxpdHkgKnBlcnMgPSBtZGRldi1cdTAwM2VwZXJzO1xuNzA4NzpcdFxuNzA4ODpcdFx0bWRkZXZfZGV0YWNoKG1kZGV2KTtcbjcwODk6XHRcdG1kX2JpdG1hcF9kZXN0cm95KG1kZGV2KTtcbjcwOTA6XHRcdHNwaW5fbG9jayhcdTAwMjZtZGRldi1cdTAwM2Vsb2NrKTtcbjcwOTE6XHRcdG1kZGV2LVx1MDAzZXBlcnMgPSBOVUxMO1xuNzA5MjpcdFx0c3Bpbl91bmxvY2soXHUwMDI2bWRkZXYtXHUwMDNlbG9jayk7XG43MDkzOlx0XHRpZiAobWRkZXYtXHUwMDNlcHJpdmF0ZSlcbjcwOTQ6XHRcdFx0cGVycy1cdTAwM2VmcmVlKG1kZGV2LCBtZGRldi1cdTAwM2Vwcml2YXRlKTtcbjcwOTU6XHRcdG1kZGV2LVx1MDAzZXByaXZhdGUgPSBOVUxMO1xuNzA5NjpcdFx0cHV0X3BlcnMocGVycyk7XG43MDk3Olx0XHRjbGVhcl9iaXQoTURfUkVDT1ZFUllfRlJPWkVOLCBcdTAwMjZtZGRldi1cdTAwM2VyZWNvdmVyeSk7XG43MDk4Olx0XG43MDk5Olx0XHRpZiAobWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcbjcxMDA6XHRcdFx0bWRkZXYtXHUwMDNlZGVsdGFfZGlza3MgPSAwO1xuNzEwMTpcdFx0XHRtZGRldi1cdTAwM2VyZXNoYXBlX2JhY2t3YXJkcyA9IDA7XG43MTAyOlx0XHRcdG1kZGV2LVx1MDAzZW5ld19sZXZlbCA9IG1kZGV2LVx1MDAzZWxldmVsO1xuNzEwMzpcdFx0XHRtZGRldi1cdTAwM2VuZXdfbGF5b3V0ID0gbWRkZXYtXHUwMDNlbGF5b3V0O1xuNzEwNDpcdFx0XHRtZGRldi1cdTAwM2VuZXdfY2h1bmtfc2VjdG9ycyA9IG1kZGV2LVx1MDAzZWNodW5rX3NlY3RvcnM7XG43MTA1Olx0XHR9XG43MTA2Olx0fVxuNzEwNzpcdFxuNzEwODpcdHZvaWQgbWRfc3RvcChzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxuNzEwOTpcdHtcbjcxMTA6XHRcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2bWRkZXYtXHUwMDNlcmVjb25maWdfbXV0ZXgpO1xuNzExMTpcdFxuNzExMjpcdFx0Lyogc3RvcCB0aGUgYXJyYXkgYW5kIGZyZWUgYW4gYXR0YWNoZWQgZGF0YSBzdHJ1Y3R1cmVzLlxuNzExMzpcdFx0ICogVGhpcyBpcyBjYWxsZWQgZnJvbSBkbS1yYWlkXG43MTE0Olx0XHQgKi9cbjcxMTU6XHRcdF9fbWRfc3RvcF93cml0ZXMobWRkZXYpO1xuNzExNjpcdFx0X19tZF9zdG9wKG1kZGV2KTtcbjcxMTc6XHR9XG43MTE4Olx0XG43MTE5Olx0RVhQT1JUX1NZTUJPTF9HUEwobWRfc3RvcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5ODEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaHkgd2FzIHRoaXMgY2hhbmdlIGV2ZW4gbmVjZXNzYXJ5PyYjMzQ7LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBtb3RpdmF0aW9uIGFuZCB0aGUgcHJvYmxlbSBpdCYjMzk7cyB0cnlpbmcgdG8gc29sdmUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZ29pbmcgc3RyYWlnaHQgdG8gdGhlIGNvZGUuIEkmIzM5O2xsIHJlYWNoIGZvciBgZ3JlcGAsIGJlY2F1c2UgSSYjMzk7bSBsb29raW5nIGZvciBzcGVjaWZpYyBrZXl3b3JkcyB0aGF0IHdpbGwgaW1tZWRpYXRlbHkgaWxsdW1pbmF0ZSB0aGUgY29udGV4dC4gVGhpbmdzIGxpa2UgYHJlc2hhcGVfcG9zaXRpb25gIG9yIGBuZXdfbGV2ZWxgIGFyZSBsaWtlbHkgY2FuZGlkYXRlcy4gSWYgSSBjYW4gZ2V0IG15IGhhbmRzIG9uIHRoZSBnaXQgbG9nLCB0aGF0JiMzOTtzIGlkZWFsOyBjb21taXQgbWVzc2FnZXMgYXJlIHVzdWFsbHkgZ29sZC4gSWYgdGhvc2UgcXVpY2sgc2VhcmNoZXMgZmFpbCwgSSYjMzk7bGwgYnJvYWRlbiBteSBzY29wZSBhbmQgc3RhcnQgbG9va2luZyBhdCByZWxhdGVkIGNvbW1pdHMsIG9yIHN1cnJvdW5kaW5nIGZ1bmN0aW9ucy4gSSB3YW50IHRvIGJ1aWxkIGEgcXVpY2sgbWVudGFsIG1hcCBvZiB0aGUgY2hhbmdlJiMzOTtzIG9yaWdpbiBhbmQgcHVycG9zZS4gR290dGEgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21kJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWQvbWQuYz0xNjA0PXN0YXRpYyB2b2lkIHN1cGVyXzkwX3N5bmMoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IG1kX3JkZXYgKnJkZXYpXG4tLVxuZHJpdmVycy9tZC9tZC5jLTE2NDgtXG5kcml2ZXJzL21kL21kLmM6MTY0OTpcdGlmIChtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcilcbmRyaXZlcnMvbWQvbWQuYy0xNjUwLVx0XHRzYi1cdTAwM2VtaW5vcl92ZXJzaW9uID0gOTA7XG4tLVxuZHJpdmVycy9tZC9tZC5jPTQzNjg9bGF5b3V0X3N0b3JlKHN0cnVjdCBtZGRldiAqbWRkZXYsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcbi0tXG5kcml2ZXJzL21kL21kLmMtNDM5Mi1cdFx0bWRkZXYtXHUwMDNlbmV3X2xheW91dCA9IG47XG5kcml2ZXJzL21kL21kLmM6NDM5MzpcdFx0aWYgKG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKVxuZHJpdmVycy9tZC9tZC5jLTQzOTQtXHRcdFx0bWRkZXYtXHUwMDNlbGF5b3V0ID0gbjtcbi0tXG5kcml2ZXJzL21kL21kLmM9NDQ4MT1jaHVua19zaXplX3N0b3JlKHN0cnVjdCBtZGRldiAqbWRkZXYsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcbi0tXG5kcml2ZXJzL21kL21kLmMtNDUwNS1cdFx0bWRkZXYtXHUwMDNlbmV3X2NodW5rX3NlY3RvcnMgPSBuIFx1MDAzZVx1MDAzZSA5O1xuZHJpdmVycy9tZC9tZC5jOjQ1MDY6XHRcdGlmIChtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcilcbmRyaXZlcnMvbWQvbWQuYy00NTA3LVx0XHRcdG1kZGV2LVx1MDAzZWNodW5rX3NlY3RvcnMgPSBuIFx1MDAzZVx1MDAzZSA5O1xuLS1cbmRyaXZlcnMvbWQvbWQuYz01MjQyPXN0YXRpYyBpbnQgbWRkZXZfc3RhcnRfcmVzaGFwZShzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxuLS1cbmRyaXZlcnMvbWQvbWQuYy01MjQ4LVxuZHJpdmVycy9tZC9tZC5jOjUyNDk6XHRpZiAobWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IgfHxcbmRyaXZlcnMvbWQvbWQuYy01MjUwLVx0ICAgIG1kZGV2LVx1MDAzZXBlcnMtXHUwMDNlY2hlY2tfcmVzaGFwZSA9PSBOVUxMIHx8XG4tLVxuZHJpdmVycy9tZC9tZC5jPTcwODQ9c3RhdGljIHZvaWQgX19tZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9tZC5jLTcwOTgtXG5kcml2ZXJzL21kL21kLmM6NzA5OTpcdGlmIChtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3Rvcikge1xuZHJpdmVycy9tZC9tZC5jLTcxMDAtXHRcdG1kZGV2LVx1MDAzZWRlbHRhX2Rpc2tzID0gMDtcbi0tXG5kcml2ZXJzL21kL21kLmM9MTAyNjQ9c3RhdGljIHZvaWQgbWRfc3RhcnRfc3luYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKVxuLS1cbmRyaXZlcnMvbWQvbWQuYy0xMDI3NS1cdCAqL1xuZHJpdmVycy9tZC9tZC5jOjEwMjc2Olx0aWYgKChtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvciB8fCAhbWRfaXNfcmR3cihtZGRldikpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9tZC9tZC5jLTEwMjc3LVx0ICAgIG1kX3NwYXJlc19uZWVkX2NoYW5nZShtZGRldikpIHtcbi0tXG5kcml2ZXJzL21kL21kLmMtMTAyODgtXHQgKi9cbmRyaXZlcnMvbWQvbWQuYzoxMDI4OTpcdGlmICghc3VzcGVuZCBcdTAwMjZcdTAwMjYgKG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yIHx8ICFtZF9pc19yZHdyKG1kZGV2KSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL21kL21kLmMtMTAyOTAtXHQgICAgbWRfc3BhcmVzX25lZWRfY2hhbmdlKG1kZGV2KSkge1xuLS1cbmRyaXZlcnMvbWQvbWQuaD02OTA9c3RhdGljIGlubGluZSBib29sIHJlc2hhcGVfaW50ZXJydXB0ZWQoc3RydWN0IG1kZGV2ICptZGRldilcbi0tXG5kcml2ZXJzL21kL21kLmgtNjkyLVx0LyogcmVzaGFwZSBuZXZlciBzdGFydCAqL1xuZHJpdmVycy9tZC9tZC5oOjY5MzpcdGlmIChtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcilcbmRyaXZlcnMvbWQvbWQuaC02OTQtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL21kL3JhaWQxMC5jPTMxNDE9c3RhdGljIHNlY3Rvcl90IHJhaWQxMF9zeW5jX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLFxuLS1cbmRyaXZlcnMvbWQvcmFpZDEwLmMtMzE1OS1cdCAgICBtZGRldi1cdTAwM2VyZXN5bmNfb2Zmc2V0ID09IE1heFNlY3RvciBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbWQvcmFpZDEwLmM6MzE2MDpcdCAgICBtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvciBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbWQvcmFpZDEwLmMtMzE2MS1cdCAgICAhdGVzdF9iaXQoTURfUkVDT1ZFUllfU1lOQywgXHUwMDI2bWRkZXYtXHUwMDNlcmVjb3ZlcnkpIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvbWQvcmFpZDEwLmM9MzgyOD1zdGF0aWMgc3RydWN0IHIxMGNvbmYgKnNldHVwX2NvbmYoc3RydWN0IG1kZGV2ICptZGRldilcbi0tXG5kcml2ZXJzL21kL3JhaWQxMC5jLTM4NzQtXHRjYWxjX3NlY3RvcnMoY29uZiwgbWRkZXYtXHUwMDNlZGV2X3NlY3RvcnMpO1xuZHJpdmVycy9tZC9yYWlkMTAuYzozODc1Olx0aWYgKG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKSB7XG5kcml2ZXJzL21kL3JhaWQxMC5jLTM4NzYtXHRcdGNvbmYtXHUwMDNlcHJldiA9IGNvbmYtXHUwMDNlZ2VvO1xuLS1cbmRyaXZlcnMvbWQvcmFpZDEwLmM9NDkyOD1zdGF0aWMgdm9pZCByYWlkMTBfdXBkYXRlX3Jlc2hhcGVfcG9zKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9yYWlkMTAuYy00OTM0LVx0aWYgKCgobWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiBcdTAwM2M9IGhpKSBcdTAwMjZcdTAwMjYgKG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb24gXHUwMDNlPSBsbykpXG5kcml2ZXJzL21kL3JhaWQxMC5jOjQ5MzU6XHQgICAgfHwgbWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpXG5kcml2ZXJzL21kL3JhaWQxMC5jLTQ5MzYtXHRcdGNvbmYtXHUwMDNlcmVzaGFwZV9wcm9ncmVzcyA9IG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb247XG4tLVxuZHJpdmVycy9tZC9yYWlkNS5jPTYyMTg9c3RhdGljIGJvb2wgcmFpZDVfbWFrZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKiBiaSlcbi0tXG5kcml2ZXJzL21kL3JhaWQ1LmMtNjI0OS1cdGlmIChydyA9PSBSRUFEIFx1MDAyNlx1MDAyNiBtZGRldi1cdTAwM2VkZWdyYWRlZCA9PSAwIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9tZC9yYWlkNS5jOjYyNTA6XHQgICAgbWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcbmRyaXZlcnMvbWQvcmFpZDUuYy02MjUxLVx0XHRiaSA9IGNodW5rX2FsaWduZWRfcmVhZChtZGRldiwgYmkpO1xuLS1cbmRyaXZlcnMvbWQvcmFpZDUuYz03NjMzPXN0YXRpYyBzdHJ1Y3QgcjVjb25mICpzZXR1cF9jb25mKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9yYWlkNS5jLTc3MjUtXHRjb25mLVx1MDAzZXJhaWRfZGlza3MgPSBtZGRldi1cdTAwM2VyYWlkX2Rpc2tzO1xuZHJpdmVycy9tZC9yYWlkNS5jOjc3MjY6XHRpZiAobWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpXG5kcml2ZXJzL21kL3JhaWQ1LmMtNzcyNy1cdFx0Y29uZi1cdTAwM2VwcmV2aW91c19yYWlkX2Rpc2tzID0gbWRkZXYtXHUwMDNlcmFpZF9kaXNrcztcbi0tXG5kcml2ZXJzL21kL3JhaWQ1LmM9ODQ0ND1zdGF0aWMgaW50IHJhaWQ1X2FkZF9kaXNrKHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBtZF9yZGV2ICpyZGV2KVxuLS1cbmRyaXZlcnMvbWQvcmFpZDUuYy04NTA3LVx0XHRpZiAodGVzdF9iaXQoV2FudFJlcGxhY2VtZW50LCBcdTAwMjZ0bXAtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9tZC9yYWlkNS5jOjg1MDg6XHRcdCAgICBtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvciBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbWQvcmFpZDUuYy04NTA5LVx0XHQgICAgcC1cdTAwM2VyZXBsYWNlbWVudCA9PSBOVUxMKSB7XG4tLVxuZHJpdmVycy9tZC9yYWlkNS5jPTg1ODY9c3RhdGljIGludCBjaGVja19yZXNoYXBlKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9yYWlkNS5jLTg1OTktXHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9tZC9yYWlkNS5jOjg2MDA6XHRpZiAobWRkZXYtXHUwMDNlZGVsdGFfZGlza3MgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKSB7XG5kcml2ZXJzL21kL3JhaWQ1LmMtODYwMS1cdFx0LyogV2UgbWlnaHQgYmUgYWJsZSB0byBzaHJpbmssIGJ1dCB0aGUgZGV2aWNlcyBtdXN0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5NzcKCQkJCQkJCW91dHB1dDogMTc2CgkJCQkJCQl0aG91Z2h0czogNTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEFuYWx5c2lzIG9mIGBfX21kX3N0b3BgIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb2RlIGluIHF1ZXN0aW9uIGlzIGRlYWxpbmcgd2l0aCB0aGUgYF9fbWRfc3RvcGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBob3cgaXQgaGFuZGxlcyB0aGUgcmVzZXQgb2YgcmVzaGFwZS1yZWxhdGVkIHBhcmFtZXRlcnMgd2l0aGluIHRoZSBgbWRkZXZgIHN0cnVjdHVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gaG93IHRoaXMgaXMgd29ya2luZyBhbmQgaWYgdGhpcyBleHBvc2VzIGFueSByaXNrcy4KClRoZSBjcml0aWNhbCBjb25kaXRpb24gZm9yIHRoaXMgcmVzZXQgaXMgYG1kZGV2LSZndDtyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcmAsIHdoaWNoIGluZGljYXRlcyB0aGF0IGEgcmVzaGFwZSBvcGVyYXRpb24gaXNuJiMzOTt0IGFjdGl2ZSBvciB3YXNuJiMzOTt0IGV2ZW4gc3RhcnRlZC4gVW5kZXIgdGhpcyBjb25kaXRpb24sIHRoZSBwYXRjaCBpcyByZXNldHRpbmcgYGRlbHRhX2Rpc2tzYCwgYHJlc2hhcGVfYmFja3dhcmRzYCwgYG5ld19sZXZlbGAsIGBuZXdfbGF5b3V0YCwgYW5kIGBuZXdfY2h1bmtfc2VjdG9yc2AuCgpNeSBjb25jZXJuIGltbWVkaWF0ZWx5IHR1cm5zIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJcyB0aGVyZSBhbnkgcmlzayBoZXJlPyBBZnRlciBhIHF1aWNrIGNvZGUgcmV2aWV3LCBpdCBzZWVtcyBjbGVhciB0aGF0IGBtZGRldmAgaXMgYW4gZXhpc3RpbmcsIGhlYXAtYWxsb2NhdGVkIHN0cnVjdHVyZSwgbWVhbmluZyBpdHMgbWVtYmVycyBhcmUgbGlrZWx5IGFscmVhZHkgaW5pdGlhbGl6ZWQuIFRoZSBwYXRjaCBvdmVyd3JpdGVzIHNwZWNpZmljIGZpZWxkcyAqd2l0aGluKiB0aGF0IHN0cnVjdHVyZSB3aXRoIGVpdGhlciB6ZXJvIHZhbHVlcyBvciB2YWx1ZXMgdGFrZW4gZnJvbSBvdGhlciBhbHJlYWR5LWluaXRpYWxpemVkIGBtZGRldmAgZmllbGRzLiBObyBuZXcgbWVtb3J5IGlzIGJlaW5nIGFsbG9jYXRlZC4gSSYjMzk7bSBub3Qgc2VlaW5nIGFueSBzY2VuYXJpb3Mgd2hlcmUgdW5pbml0aWFsaXplZCBkYXRhIGlzIGJlaW5nIGNvcGllZCB0byB1c2Vyc3BhY2UsIG9yIHdoZXJlIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGFyZSBiZWluZyB1c2VkIGluIGFueSBicmFuY2hpbmcgbG9naWMuIFRoaXMgcHJpbWFyaWx5IHNlZW1zIHRvIGJlIGEgY2xlYW51cCBvcGVyYXRpb24gdG8gZW5zdXJlIHRoYXQgc3RhbGUgcmVzaGFwZSBwYXJhbWV0ZXJzIGFyZW4mIzM5O3QgY2FycmllZCBvdmVyIGFmdGVyIGFuIGFycmF5IHN0b3AgaWYgYSByZXNoYXBlIHdhcyBuZXZlciBhY3R1YWxseSBlbmdhZ2VkLgoKR2l2ZW4gdGhhdCwgSSBkb24mIzM5O3Qgc2VlIGFueSBvYnZpb3VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgdHJpZ2dlciBLTVNBTi4gV2UmIzM5O3JlIG5vdCBzZW5kaW5nIGtlcm5lbCBzdHJ1Y3R1cmVzIHRvIHVzZXJzcGFjZSwgd2UgYXJlbiYjMzk7dCB1c2luZyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBhbnkgZGVjaXNpb24gcG9pbnRzLCB0aGVyZSBhcmUgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyBnb2luZyBvbiB3aXRob3V0IGluaXRpYWxpemF0aW9uLCBhbmQgdGhlIHBhdGNoIGlzbiYjMzk7dCBtb2RpZnlpbmcgYm91bmRzIG9yIGxlbmd0aHMgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuCgpUbyBiZSBjb21wbGV0ZWx5IHRob3JvdWdoLCBsZXQmIzM5O3MgY29udHJhc3QgS0FTQU4gYW5kIEtNU0FOLiBUaGlzIHBhdGNoIGZvY3VzZXMgb24gcmVzZXR0aW5nIHJlc2hhcGUtcmVsYXRlZCBmaWVsZHMgd2l0aGluIGBtZGRldmAuIFRoZSBtb2RpZmljYXRpb25zIGFyZSBzb2xlbHkgd2l0aGluIHRoZSBgc3RydWN0IG1kZGV2YCwgYW5kIHRoZXNlIGZpZWxkcyBhcmUgYXNzaWduZWQgZWl0aGVyIGNvbnN0YW50IHplcm9lcyBvciB2YWx1ZXMgZGVyaXZlZCBmcm9tIGFscmVhZHkgaW5pdGlhbGl6ZWQgZmllbGRzIHdpdGhpbiBgbWRkZXZgLiBUaGVyZSBhcmUgbm8gbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlcnMsIGRhdGEgbGVha3MgdG8gdXNlcnNwYWNlLCB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgdmFyaWFibGVzLCBvciBhbnkgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBQb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIGFycmF5IGxpZmVjeWNsZSBtYW5hZ2VtZW50LCBzdGF0ZSB0cmFuc2l0aW9ucywgb3IgbWVtb3J5IHNhZmV0eSwgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIG9yIGxvY2tpbmcgaXNzdWVzLCB3b3VsZCBmYWxsIHVuZGVyIHRoZSBzY29wZSBvZiBLQVNBTi9MT0NLREVQLCBub3QgS01TQU4uIFRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgY2xlYXJseSBLTVNBTi1zYWZlLgoKQWxyaWdodCwgdGhhdCBjb3ZlcnMgaXQuIEkmIzM5O20gY29tZm9ydGFibGUgd2l0aCB0aGUgS01TQU4gYXNwZWN0cy4gTGV0JiMzOTtzIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBfX21kX3N0b3AoKWAgaW4gYGRyaXZlcnMvbWQvbWQuY2AgdG8gcmVzZXQgcmVzaGFwZSBjb25maWd1cmF0aW9uIGZpZWxkcyAoYGRlbHRhX2Rpc2tzYCwgYHJlc2hhcGVfYmFja3dhcmRzYCwgYG5ld19sZXZlbGAsIGBuZXdfbGF5b3V0YCwgYG5ld19jaHVua19zZWN0b3JzYCkgaW4gYHN0cnVjdCBtZGRldmAgd2hlbiBzdG9wcGluZyBhbiBtZCBhcnJheSB3aGVyZSBgcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3JgLlxuXG5BbGwgYXNzaWduZWQgdmFsdWVzIGFyZSBlaXRoZXIgY29uc3RhbnQgemVyb2VzIG9yIGRlcml2ZWQgZnJvbSBleGlzdGluZywgaW5pdGlhbGl6ZWQgZmllbGRzIG9mIGBtZGRldmAuIFRoZSBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgZG9lcyBub3QgYWx0ZXIgY29weS10by11c2VyIG9wZXJhdGlvbnMsIGFuZCBkb2VzIG5vdCBicmFuY2ggb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgd2FycmFudCBhIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBfX21kX3N0b3AoKWAgaW4gYGRyaXZlcnMvbWQvbWQuY2AgdG8gcmVzZXQgcmVzaGFwZSBjb25maWd1cmF0aW9uIGZpZWxkcyAoYGRlbHRhX2Rpc2tzYCwgYHJlc2hhcGVfYmFja3dhcmRzYCwgYG5ld19sZXZlbGAsIGBuZXdfbGF5b3V0YCwgYG5ld19jaHVua19zZWN0b3JzYCkgaW4gYHN0cnVjdCBtZGRldmAgd2hlbiBzdG9wcGluZyBhbiBtZCBhcnJheSB3aGVyZSBgcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3JgLlxuXG5BbGwgYXNzaWduZWQgdmFsdWVzIGFyZSBlaXRoZXIgY29uc3RhbnQgemVyb2VzIG9yIGRlcml2ZWQgZnJvbSBleGlzdGluZywgaW5pdGlhbGl6ZWQgZmllbGRzIG9mIGBtZGRldmAuIFRoZSBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgZG9lcyBub3QgYWx0ZXIgY29weS10by11c2VyIG9wZXJhdGlvbnMsIGFuZCBkb2VzIG5vdCBicmFuY2ggb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgd2FycmFudCBhIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6MjAuMzI0MjQ0NTQ5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMwODcxNzA4NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9NRFwiLFxuICAgIFwiTURfUkFJRDQ1NlwiLFxuICAgIFwiTURfUkFJRDEwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19tZF9zdG9wXCIsXG4gICAgXCJkb19tZF9zdG9wXCIsXG4gICAgXCJtZF9zdG9wXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX19tZF9zdG9wKClgIGluIGBkcml2ZXJzL21kL21kLmNgIHRvIHJlc2V0IHJlc2hhcGUgY29uZmlndXJhdGlvbiBmaWVsZHMgKGBkZWx0YV9kaXNrc2AsIGByZXNoYXBlX2JhY2t3YXJkc2AsIGBuZXdfbGV2ZWxgLCBgbmV3X2xheW91dGAsIGBuZXdfY2h1bmtfc2VjdG9yc2ApIGluIGBzdHJ1Y3QgbWRkZXZgIHdoZW4gc3RvcHBpbmcgYW4gbWQgYXJyYXkgd2hlcmUgYHJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yYC5cXG5cXG5BbGwgYXNzaWduZWQgdmFsdWVzIGFyZSBlaXRoZXIgY29uc3RhbnQgemVyb2VzIG9yIGRlcml2ZWQgZnJvbSBleGlzdGluZywgaW5pdGlhbGl6ZWQgZmllbGRzIG9mIGBtZGRldmAuIFRoZSBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgZG9lcyBub3QgYWx0ZXIgY29weS10by11c2VyIG9wZXJhdGlvbnMsIGFuZCBkb2VzIG5vdCBicmFuY2ggb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgd2FycmFudCBhIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBfX21kX3N0b3AoKSBpbiB0aGUgTUQgKE11bHRpcGxlIERldmljZXMgLyBTb2Z0d2FyZSBSQUlEKSBkcml2ZXIgdG8gcmVzZXQgcmVzaGFwZSBzdGF0ZSAoZGVsdGFfZGlza3MsIHJlc2hhcGVfYmFja3dhcmRzLCBuZXdfbGV2ZWwsIG5ld19sYXlvdXQsIG5ld19jaHVua19zZWN0b3JzKSB3aGVuIHN0b3BwaW5nIGFuIGFycmF5IGFmdGVyIGEgcmVzaGFwZSBvcGVyYXRpb24gaGFzIGZpbmlzaGVkIChyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcikuIFRoaXMgY29kZSBpcyBmdWxseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtZCBpb2N0bCAoZS5nLiwgU1RPUF9BUlJBWSksIHN5c2ZzIGFycmF5X3N0YXRlIGF0dHJpYnV0ZXMsIG9yIGRtLXJhaWQgdGVhcmRvd24sIGFuZCB3YXJyYW50cyBmdXp6aW5nIGZvciBwb3RlbnRpYWwgc3RhdGUgbWFuYWdlbWVudCByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjIwLjMyNDI1MDI0OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM1OTk0NDExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGM2YWVjMzc0YzA0N2U4YTIyMGFlMWRmN2NlZmY5MzM4N2RhOTI2ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCA5IDIyOjAwOjE5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvbWQuYyBiL2RyaXZlcnMvbWQvbWQuY1xcbmluZGV4IDY4MGIzNGE2M2NiM2QuLjM4YWI0MWJiY2QwZWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9tZC9tZC5jXFxuKysrIGIvZHJpdmVycy9tZC9tZC5jXFxuQEAgLTcwOTUsNiArNzA5NSwxNCBAQCBzdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcXG4gXFx0bWRkZXYtXFx1MDAzZXByaXZhdGUgPSBOVUxMO1xcbiBcXHRwdXRfcGVycyhwZXJzKTtcXG4gXFx0Y2xlYXJfYml0KE1EX1JFQ09WRVJZX0ZST1pFTiwgXFx1MDAyNm1kZGV2LVxcdTAwM2VyZWNvdmVyeSk7XFxuK1xcbitcXHRpZiAobWRkZXYtXFx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKSB7XFxuK1xcdFxcdG1kZGV2LVxcdTAwM2VkZWx0YV9kaXNrcyA9IDA7XFxuK1xcdFxcdG1kZGV2LVxcdTAwM2VyZXNoYXBlX2JhY2t3YXJkcyA9IDA7XFxuK1xcdFxcdG1kZGV2LVxcdTAwM2VuZXdfbGV2ZWwgPSBtZGRldi1cXHUwMDNlbGV2ZWw7XFxuK1xcdFxcdG1kZGV2LVxcdTAwM2VuZXdfbGF5b3V0ID0gbWRkZXYtXFx1MDAzZWxheW91dDtcXG4rXFx0XFx0bWRkZXYtXFx1MDAzZW5ld19jaHVua19zZWN0b3JzID0gbWRkZXYtXFx1MDAzZWNodW5rX3NlY3RvcnM7XFxuK1xcdH1cXG4gfVxcbiBcXG4gdm9pZCBtZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjIwLjg2MTA1NDg0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozOTcwOTg4MDY5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX01EXCIsXG4gICAgXCJNRF9SQUlENDU2XCIsXG4gICAgXCJNRF9SQUlEMTBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX21kX3N0b3BcIixcbiAgICBcImRvX21kX3N0b3BcIixcbiAgICBcIm1kX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBfX21kX3N0b3AoKSBpbiB0aGUgTUQgKE11bHRpcGxlIERldmljZXMgLyBTb2Z0d2FyZSBSQUlEKSBkcml2ZXIgdG8gcmVzZXQgcmVzaGFwZSBzdGF0ZSAoZGVsdGFfZGlza3MsIHJlc2hhcGVfYmFja3dhcmRzLCBuZXdfbGV2ZWwsIG5ld19sYXlvdXQsIG5ld19jaHVua19zZWN0b3JzKSB3aGVuIHN0b3BwaW5nIGFuIGFycmF5IGFmdGVyIGEgcmVzaGFwZSBvcGVyYXRpb24gaGFzIGZpbmlzaGVkIChyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcikuIFRoaXMgY29kZSBpcyBmdWxseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtZCBpb2N0bCAoZS5nLiwgU1RPUF9BUlJBWSksIHN5c2ZzIGFycmF5X3N0YXRlIGF0dHJpYnV0ZXMsIG9yIGRtLXJhaWQgdGVhcmRvd24sIGFuZCB3YXJyYW50cyBmdXp6aW5nIGZvciBwb3RlbnRpYWwgc3RhdGUgbWFuYWdlbWVudCByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGM2YWVjMzc0YzA0N2U4YTIyMGFlMWRmN2NlZmY5MzM4N2RhOTI2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMjI6MDA6MTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL21kLmMgYi9kcml2ZXJzL21kL21kLmNcbmluZGV4IDY4MGIzNGE2M2NiM2QuLjM4YWI0MWJiY2QwZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21kL21kLmNcbisrKyBiL2RyaXZlcnMvbWQvbWQuY1xuQEAgLTcwOTUsNiArNzA5NSwxNCBAQCBzdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcbiBcdG1kZGV2LVx1MDAzZXByaXZhdGUgPSBOVUxMO1xuIFx0cHV0X3BlcnMocGVycyk7XG4gXHRjbGVhcl9iaXQoTURfUkVDT1ZFUllfRlJPWkVOLCBcdTAwMjZtZGRldi1cdTAwM2VyZWNvdmVyeSk7XG4rXG4rXHRpZiAobWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcbitcdFx0bWRkZXYtXHUwMDNlZGVsdGFfZGlza3MgPSAwO1xuK1x0XHRtZGRldi1cdTAwM2VyZXNoYXBlX2JhY2t3YXJkcyA9IDA7XG4rXHRcdG1kZGV2LVx1MDAzZW5ld19sZXZlbCA9IG1kZGV2LVx1MDAzZWxldmVsO1xuK1x0XHRtZGRldi1cdTAwM2VuZXdfbGF5b3V0ID0gbWRkZXYtXHUwMDNlbGF5b3V0O1xuK1x0XHRtZGRldi1cdTAwM2VuZXdfY2h1bmtfc2VjdG9ycyA9IG1kZGV2LVx1MDAzZWNodW5rX3NlY3RvcnM7XG4rXHR9XG4gfVxuIFxuIHZvaWQgbWRfc3RvcChzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6MjAuODYxMDU3MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExMjIyMzQwMjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggYW5kIENvbnRleHQqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBhbmQgdGhlIGFzc29jaWF0ZWQgdGFzay4gVGhlIGZhY3QgdGhhdCB0aGUgY2hhbmdlIHRhcmdldHMgYGRyaXZlcnMvbWQvbWQuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBfX21kX3N0b3AoKWAgZnVuY3Rpb24sIGltbWVkaWF0ZWx5IHNldHMgbXkgYW5hbHl0aWNhbCB3aGVlbHMgdHVybmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjb2RlJ3MgZnVuY3Rpb25hbGl0eSwgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMsIGFuZCBhY2Nlc3NpYmlsaXR5IGJlZm9yZSBnZXR0aW5nIGludG8gdGhlIGRldGFpbHMuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSB3aXRoaW4gYF9fbWRfc3RvcCgpYC4gSSdsbCB1c2UgYSBgcmVhZC1maWxlYCBjb21tYW5kIHRvIGxvb2sgZGlyZWN0bHkgYXQgdGhlIGNvZGUgYXJvdW5kIGxpbmUgNzA5NSBpbiBgZHJpdmVycy9tZC9tZC5jYC4gVGhpcyB3aWxsIGFsbG93IG1lIHRvIHF1aWNrbHkgYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoZSBmdW5jdGlvbidzIHB1cnBvc2UsIHRoZSB2YXJpYWJsZXMgaXQgb3BlcmF0ZXMgb24sIGFuZCBwb3RlbnRpYWwgY29udHJvbCBmbG93IHBhdGhzLiBVbmRlcnN0YW5kaW5nIHRoZSBsb2NhbCBjb250ZXh0LCBwb3RlbnRpYWwgc3ltYm9scywgYW5kIGNvbmZpZ3VyYXRpb25zIHdpbGwgYmUga2V5IHRvIHRob3JvdWdobHkgdW5kZXJzdGFuZGluZyB0aGlzIHBhdGNoJ3MgaW1wYWN0LiBJIHdhbnQgdG8gYnVpbGQgYSBzb2xpZCBmb3VuZGF0aW9uIGJlZm9yZSBkaXZpbmcgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTIwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMjowMDozMi4wODMzOTk5MTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTc1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZC9tZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDcwODAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjcwODA6XFx0XFx0aWYgKCFtZGRldl9pc19kbShtZGRldikpXFxuNzA4MTpcXHRcXHRcXHRibGtfc3luY19xdWV1ZShtZGRldi1cXHUwMDNlZ2VuZGlzay1cXHUwMDNlcXVldWUpO1xcbjcwODI6XFx0fVxcbjcwODM6XFx0XFxuNzA4NDpcXHRzdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcXG43MDg1OlxcdHtcXG43MDg2OlxcdFxcdHN0cnVjdCBtZF9wZXJzb25hbGl0eSAqcGVycyA9IG1kZGV2LVxcdTAwM2VwZXJzO1xcbjcwODc6XFx0XFxuNzA4ODpcXHRcXHRtZGRldl9kZXRhY2gobWRkZXYpO1xcbjcwODk6XFx0XFx0bWRfYml0bWFwX2Rlc3Ryb3kobWRkZXYpO1xcbjcwOTA6XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZtZGRldi1cXHUwMDNlbG9jayk7XFxuNzA5MTpcXHRcXHRtZGRldi1cXHUwMDNlcGVycyA9IE5VTEw7XFxuNzA5MjpcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2bWRkZXYtXFx1MDAzZWxvY2spO1xcbjcwOTM6XFx0XFx0aWYgKG1kZGV2LVxcdTAwM2Vwcml2YXRlKVxcbjcwOTQ6XFx0XFx0XFx0cGVycy1cXHUwMDNlZnJlZShtZGRldiwgbWRkZXYtXFx1MDAzZXByaXZhdGUpO1xcbjcwOTU6XFx0XFx0bWRkZXYtXFx1MDAzZXByaXZhdGUgPSBOVUxMO1xcbjcwOTY6XFx0XFx0cHV0X3BlcnMocGVycyk7XFxuNzA5NzpcXHRcXHRjbGVhcl9iaXQoTURfUkVDT1ZFUllfRlJPWkVOLCBcXHUwMDI2bWRkZXYtXFx1MDAzZXJlY292ZXJ5KTtcXG43MDk4OlxcdFxcbjcwOTk6XFx0XFx0aWYgKG1kZGV2LVxcdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3Rvcikge1xcbjcxMDA6XFx0XFx0XFx0bWRkZXYtXFx1MDAzZWRlbHRhX2Rpc2tzID0gMDtcXG43MTAxOlxcdFxcdFxcdG1kZGV2LVxcdTAwM2VyZXNoYXBlX2JhY2t3YXJkcyA9IDA7XFxuNzEwMjpcXHRcXHRcXHRtZGRldi1cXHUwMDNlbmV3X2xldmVsID0gbWRkZXYtXFx1MDAzZWxldmVsO1xcbjcxMDM6XFx0XFx0XFx0bWRkZXYtXFx1MDAzZW5ld19sYXlvdXQgPSBtZGRldi1cXHUwMDNlbGF5b3V0O1xcbjcxMDQ6XFx0XFx0XFx0bWRkZXYtXFx1MDAzZW5ld19jaHVua19zZWN0b3JzID0gbWRkZXYtXFx1MDAzZWNodW5rX3NlY3RvcnM7XFxuNzEwNTpcXHRcXHR9XFxuNzEwNjpcXHR9XFxuNzEwNzpcXHRcXG43MTA4OlxcdHZvaWQgbWRfc3RvcChzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxcbjcxMDk6XFx0e1xcbjcxMTA6XFx0XFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2bWRkZXYtXFx1MDAzZXJlY29uZmlnX211dGV4KTtcXG43MTExOlxcdFxcbjcxMTI6XFx0XFx0Lyogc3RvcCB0aGUgYXJyYXkgYW5kIGZyZWUgYW4gYXR0YWNoZWQgZGF0YSBzdHJ1Y3R1cmVzLlxcbjcxMTM6XFx0XFx0ICogVGhpcyBpcyBjYWxsZWQgZnJvbSBkbS1yYWlkXFxuNzExNDpcXHRcXHQgKi9cXG43MTE1OlxcdFxcdF9fbWRfc3RvcF93cml0ZXMobWRkZXYpO1xcbjcxMTY6XFx0XFx0X19tZF9zdG9wKG1kZGV2KTtcXG43MTE3OlxcdH1cXG43MTE4OlxcdFxcbjcxMTk6XFx0RVhQT1JUX1NZTUJPTF9HUEwobWRfc3RvcCk7XFxuNzEyMDpcXHRcXG43MTIxOlxcdC8qIGVuc3VyZSAnbWRkZXYtXFx1MDAzZXBlcnMnIGV4aXN0IGJlZm9yZSBjYWxsaW5nIG1kX3NldF9yZWFkb25seSgpICovXFxuNzEyMjpcXHRzdGF0aWMgaW50IG1kX3NldF9yZWFkb25seShzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxcbjcxMjM6XFx0e1xcbjcxMjQ6XFx0XFx0aW50IGVyciA9IDA7XFxuNzEyNTpcXHRcXHRpbnQgZGlkX2ZyZWV6ZSA9IDA7XFxuNzEyNjpcXHRcXG43MTI3OlxcdFxcdGlmIChtZGRldi1cXHUwMDNlZXh0ZXJuYWwgXFx1MDAyNlxcdTAwMjYgdGVzdF9iaXQoTURfU0JfQ0hBTkdFX1BFTkRJTkcsIFxcdTAwMjZtZGRldi1cXHUwMDNlc2JfZmxhZ3MpKVxcbjcxMjg6XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG43MTI5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMjowMDozMi4wODM5NTkxMDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTkwMDAzOTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBfX21kX3N0b3BgIEZ1bmN0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGxpZmVjeWNsZSBvZiB0aGlzIGBfX21kX3N0b3BgIGZ1bmN0aW9uLCBvciBhbnkgdmFyaWF0aW9uIG9mIGl0LiBXaGVyZSBpcyBpdCBiZWluZyBjYWxsZWQ/IE1vcmUgaW1wb3J0YW50bHksIHdoYXQncyAqdXNpbmcqIGl0LCBwZXJoYXBzIGluZGlyZWN0bHk/IFRpbWUgdG8gZ2V0IHRvIHRoZSBzb3VyY2UgY29kZS4gTGV0J3Mgc3RhcnQgd2l0aCBhIGZvY3VzZWQgc2VhcmNoIHdpdGhpbiB0aGUgYGRyaXZlcnMvbWQvbWQuY2AgZmlsZS4gVGhpcyBzZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIFJBSUQtcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBJJ2xsIHNlYXJjaCBmb3IgaW5zdGFuY2VzIG9mIGBfX21kX3N0b3BgIHdpdGhpbiB0aGF0IGZpbGUgdG8gdHJhY2UgaXRzIHVzZSBhbmQgZmlndXJlIG91dCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGRyaXZlci4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5OTksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjM0LjY3Mzk2NTcwMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTgxNTk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX21kX3N0b3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZC9tZC5jPTY5Njc9c3RhdGljIHZvaWQgbWRfY2xlYW4oc3RydWN0IG1kZGV2ICptZGRldilcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy03MDMxLVxcbmRyaXZlcnMvbWQvbWQuYzo3MDMyOnN0YXRpYyB2b2lkIF9fbWRfc3RvcF93cml0ZXMoc3RydWN0IG1kZGV2ICptZGRldilcXG5kcml2ZXJzL21kL21kLmMtNzAzMy17XFxuLS1cXG5kcml2ZXJzL21kL21kLmM9NzA1OT12b2lkIG1kX3N0b3Bfd3JpdGVzKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuLS1cXG5kcml2ZXJzL21kL21kLmMtNzA2My1cXHRzdG9wX3N5bmNfdGhyZWFkKG1kZGV2LCB0cnVlKTtcXG5kcml2ZXJzL21kL21kLmM6NzA2NDpcXHRfX21kX3N0b3Bfd3JpdGVzKG1kZGV2KTtcXG5kcml2ZXJzL21kL21kLmMtNzA2NS1cXHRtZGRldl91bmxvY2sobWRkZXYpO1xcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTcwNjk9c3RhdGljIHZvaWQgbWRkZXZfZGV0YWNoKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuLS1cXG5kcml2ZXJzL21kL21kLmMtNzA4My1cXG5kcml2ZXJzL21kL21kLmM6NzA4NDpzdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcXG5kcml2ZXJzL21kL21kLmMtNzA4NS17XFxuLS1cXG5kcml2ZXJzL21kL21kLmM9NzEwOD12b2lkIG1kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy03MTE0LVxcdCAqL1xcbmRyaXZlcnMvbWQvbWQuYzo3MTE1OlxcdF9fbWRfc3RvcF93cml0ZXMobWRkZXYpO1xcbmRyaXZlcnMvbWQvbWQuYzo3MTE2OlxcdF9fbWRfc3RvcChtZGRldik7XFxuZHJpdmVycy9tZC9tZC5jLTcxMTctfVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTcxMjI9c3RhdGljIGludCBtZF9zZXRfcmVhZG9ubHkoc3RydWN0IG1kZGV2ICptZGRldilcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy03MTQ1LVxcbmRyaXZlcnMvbWQvbWQuYzo3MTQ2OlxcdF9fbWRfc3RvcF93cml0ZXMobWRkZXYpO1xcbmRyaXZlcnMvbWQvbWQuYy03MTQ3LVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTcxNzA9c3RhdGljIGludCBkb19tZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYsIGludCBtb2RlKVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jLTcxOTktXFxuZHJpdmVycy9tZC9tZC5jOjcyMDA6XFx0XFx0X19tZF9zdG9wX3dyaXRlcyhtZGRldik7XFxuZHJpdmVycy9tZC9tZC5jOjcyMDE6XFx0XFx0X19tZF9zdG9wKG1kZGV2KTtcXG5kcml2ZXJzL21kL21kLmMtNzIwMi1cXG4tLVxcbmRyaXZlcnMvbWQvbWQuYz0xMDcyMj1zdGF0aWMgaW50IG1kX25vdGlmeV9yZWJvb3Qoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLFxcbi0tXFxuZHJpdmVycy9tZC9tZC5jLTEwNzMzLVxcdFxcdFxcdGlmIChtZGRldi1cXHUwMDNlcGVycylcXG5kcml2ZXJzL21kL21kLmM6MTA3MzQ6XFx0XFx0XFx0XFx0X19tZF9zdG9wX3dyaXRlcyhtZGRldik7XFxuZHJpdmVycy9tZC9tZC5jLTEwNzM1LVxcdFxcdFxcdGlmIChtZGRldi1cXHUwMDNlcGVyc2lzdGVudClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6MzQuNzQ1NzkzMjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTQ1NTEzMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2Ygd2hhdCBJJ20gc2VlaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgYF9fbWRfc3RvcGAgQ2FsbCBDaGFpbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoZSBgX19tZF9zdG9wYCBmdW5jdGlvbiBpcyBiZWluZyB0cmlnZ2VyZWQuIEl0J3MgY2xlYXIgdGhhdCBpdCdzIGJlaW5nIGNhbGxlZCBpbmRpcmVjdGx5LCBzcGVjaWZpY2FsbHkgdGhyb3VnaCBgbWRfc3RvcGAgYW5kIGBkb19tZF9zdG9wYC4gTXkgbmV4dCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBsb2NhdGlvbnMgdGhhdCBpbml0aWF0ZSBhIHN0b3AuIEkga25vdyB0aGF0IGBkb19tZF9zdG9wYCBpcyBhIGtleSBmdW5jdGlvbiB0byBleGFtaW5lIGFzIHRoYXQgc2VlbXMgdG8gYmUgd2hlcmUgdGhlIHJlYWwgd29yayBvZiBzdG9wcGluZyB0aGUgYXJyYXkgaXMgY2FycmllZCBvdXQuIFxuXG5Gcm9tIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGF0IGBkb19tZF9zdG9wYCBhcHBlYXJzIHRvIGJlIGxpbmtlZCB0byB0aGUgZGV2aWNlIG1hcHBlciBpbnRlcmZhY2UsIG1lYW5pbmcgdGhhdCBpdCBpcyBsaW5rZWQgdG8gdGhpbmdzIGxpa2UgYFNUT1BfQVJSQVlgIGFuZCBgU1RPUF9BUlJBWV9ST2AgaW9jdGxzLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgd2hlbiBJIGFuYWx5emUgaG93IHRoZXNlIHRyaWdnZXJzIGFyZSBhY3RpdmF0ZWQuIEkgYWxzbyBuZWVkIHRvIGNoZWNrIHRoZSBzeXNmcyBgYXJyYXlfc3RhdGVgIHN0b3JlIGFzIHRoYXQgYWxzbyBjb3VsZCB0cmlnZ2VyIHRoZSBjYWxscyB0aGF0IGludGVyZXN0IG1lLlxuXG5MZXQncyB0cmFjZSBhbGwgY2FsbHMgdG8gYGRvX21kX3N0b3BgIHRvIGJ1aWxkIGEgY29tcGxldGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkzMCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjM3Ljg5MTMwOTE2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NDI2MTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRvX21kX3N0b3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZC9tZC5jPTYzOD1zdGF0aWMgdm9pZCBfX21kZGV2X3B1dChzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jLTY0NS1cXHQgKiBJZiBhcnJheSBpcyBmcmVlZCBieSBzdG9wcGluZyBhcnJheSwgTURfREVMRVRFRCBpcyBzZXQgYnlcXG5kcml2ZXJzL21kL21kLmM6NjQ2OlxcdCAqIGRvX21kX3N0b3AoKSwgTURfREVMRVRFRCBpcyBzdGlsbCBzZXQgaGVyZSBpbiBjYXNlIG1kZGV2IGlzIGZyZWVkXFxuZHJpdmVycy9tZC9tZC5jLTY0Ny1cXHQgKiBkaXJlY3RseSBieSBjbG9zaW5nIGEgbWRkZXYgdGhhdCBpcyBjcmVhdGVkIGJ5IGNyZWF0ZV9vbl9vcGVuLlxcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTkxNT12b2lkIG1kZGV2X3VubG9jayhzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jLTk3Ny1cXHRcXHQgKiBBbmQgTURfREVMRVRFRCBpcyBvbmx5IHVzZWQgZm9yIG1kIHJhaWQgd2hpY2ggaXMgc2V0IGluXFxuZHJpdmVycy9tZC9tZC5jOjk3ODpcXHRcXHQgKiBkb19tZF9zdG9wLiBkbSByYWlkIG9ubHkgdXNlcyBtZF9zdG9wIHRvIHN0b3AuIFNvIGRtIHJhaWRcXG5kcml2ZXJzL21kL21kLmMtOTc5LVxcdFxcdCAqIGRvZXNuJ3QgbmVlZCB0byBjaGVjayBNRF9ERUxFVEVEIHdoZW4gZ2V0dGluZyByZWNvbmZpZyBsb2NrXFxuLS1cXG5kcml2ZXJzL21kL21kLmM9NDYxMz1hcnJheV9zdGF0ZV9zaG93KHN0cnVjdCBtZGRldiAqbWRkZXYsIGNoYXIgKnBhZ2UpXFxuLS1cXG5kcml2ZXJzL21kL21kLmMtNDY1MC1cXG5kcml2ZXJzL21kL21kLmM6NDY1MTpzdGF0aWMgaW50IGRvX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldiwgaW50IHJvKTtcXG5kcml2ZXJzL21kL21kLmMtNDY1Mi1zdGF0aWMgaW50IG1kX3NldF9yZWFkb25seShzdHJ1Y3QgbWRkZXYgKm1kZGV2KTtcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYz00NjU2PWFycmF5X3N0YXRlX3N0b3JlKHN0cnVjdCBtZGRldiAqbWRkZXYsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy00NzEyLVxcdFxcdGlmIChtZGRldi1cXHUwMDNlcGVycylcXG5kcml2ZXJzL21kL21kLmM6NDcxMzpcXHRcXHRcXHRlcnIgPSBkb19tZF9zdG9wKG1kZGV2LCAyKTtcXG5kcml2ZXJzL21kL21kLmMtNDcxNC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL21kL21kLmMtNDcxNS1cXHRjYXNlIGNsZWFyOlxcbmRyaXZlcnMvbWQvbWQuYzo0NzE2OlxcdFxcdGVyciA9IGRvX21kX3N0b3AobWRkZXYsIDApO1xcbmRyaXZlcnMvbWQvbWQuYy00NzE3LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTcxMjI9c3RhdGljIGludCBtZF9zZXRfcmVhZG9ubHkoc3RydWN0IG1kZGV2ICptZGRldilcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy03MTY5LSAqL1xcbmRyaXZlcnMvbWQvbWQuYzo3MTcwOnN0YXRpYyBpbnQgZG9fbWRfc3RvcChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBpbnQgbW9kZSlcXG5kcml2ZXJzL21kL21kLmMtNzE3MS17XFxuLS1cXG5kcml2ZXJzL21kL21kLmM9NzI0Mj1zdGF0aWMgdm9pZCBhdXRvcnVuX2FycmF5KHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuLS1cXG5kcml2ZXJzL21kL21kLmMtNzI1OS1cXHRcXHRwcl93YXJuKFxcXCJtZDogZG9fbWRfcnVuKCkgcmV0dXJuZWQgJWRcXFxcblxcXCIsIGVycik7XFxuZHJpdmVycy9tZC9tZC5jOjcyNjA6XFx0XFx0ZG9fbWRfc3RvcChtZGRldiwgMCk7XFxuZHJpdmVycy9tZC9tZC5jLTcyNjEtXFx0fVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTgzNTA9c3RhdGljIGludCBtZF9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXFxuLS1cXG5kcml2ZXJzL21kL21kLmMtODQ0My1cXHRjYXNlIFNUT1BfQVJSQVk6XFxuZHJpdmVycy9tZC9tZC5jOjg0NDQ6XFx0XFx0ZXJyID0gZG9fbWRfc3RvcChtZGRldiwgMCk7XFxuZHJpdmVycy9tZC9tZC5jLTg0NDUtXFx0XFx0Z290byB1bmxvY2s7XFxuLS1cXG5kcml2ZXJzL21kL21kLmg9NDA3PXN0cnVjdCBtZGRldiB7XFxuLS1cXG5kcml2ZXJzL21kL21kLmgtNTE0LVxcdGludFxcdFxcdFxcdFxcdGluX3N5bmM7XFx0Lyoga25vdyB0byBub3QgbmVlZCByZXN5bmMgKi9cXG5kcml2ZXJzL21kL21kLmg6NTE1OlxcdC8qICdvcGVuX211dGV4JyBhdm9pZHMgcmFjZXMgYmV0d2VlbiAnbWRfb3BlbicgYW5kICdkb19tZF9zdG9wJywgc29cXG5kcml2ZXJzL21kL21kLmgtNTE2LVxcdCAqIHRoYXQgd2UgYXJlIG5ldmVyIHN0b3BwaW5nIGFuIGFycmF5IHdoaWxlIGl0IGlzIG9wZW4uXFxuLS1cXG5kcml2ZXJzL21kL21kLmg9NzA5PXN0YXRpYyBpbmxpbmUgaW50IF9fbXVzdF9jaGVjayBtZGRldl9sb2NrKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuLS1cXG5kcml2ZXJzL21kL21kLmgtNzE0LVxcbmRyaXZlcnMvbWQvbWQuaDo3MTU6XFx0LyogTURfREVMRVRFRCBpcyBzZXQgaW4gZG9fbWRfc3RvcCB3aXRoIHJlY29uZmlnX211dGV4LlxcbmRyaXZlcnMvbWQvbWQuaC03MTYtXFx0ICogU28gY2hlY2sgaXQgaGVyZS5cXG4tLVxcbmRyaXZlcnMvbWQvbWQuaC03MjktICogaG9sZHMgdGhlIGxvY2sgaGVyZSBjYW4ndCBiZSBzdG9wcGVkLiBBbmQgYWxsIHBhdGhzIGNhbid0XFxuZHJpdmVycy9tZC9tZC5oOjczMDogKiBjYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgZG9fbWRfc3RvcC5cXG5kcml2ZXJzL21kL21kLmgtNzMxLSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMjowMDozNy45NDk3NDg2MDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODU5NDcxNTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKktjb25maWcgRGVlcCBEaXZlIGZvciBNRCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIEtjb25maWcgb3B0aW9ucyB0aGF0IGFyZSAqYWJzb2x1dGVseSogZXNzZW50aWFsIGZvciB0aGUgTUQgKE11bHRpcGxlIERldmljZSkgc3Vic3lzdGVtLiBJIGtub3cgdGhpcyBzdHVmZiwgYnV0IEkgYWx3YXlzIHN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZS4gVGltZSB0byBkaWcgaW50byB0aGUgc291cmNlIGNvZGUhIExldCdzIGdldCByaWdodCB0byB0aGUgc291cmNlIGFuZCBzZWUgd2hhdCdzIHdoYXQuIE15IGZpcnN0IHN0b3AgaXMgZGVmaW5pdGVseSBgZHJpdmVycy9tZC9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgZnVuZGFtZW50YWwgTUQgY29uZmlndXJhdGlvbiBvcHRpb25zIHNob3VsZCBsaXZlLiBJJ2xsIHBvcmUgb3ZlciB0aGF0IGZpbGUsIHRha2luZyBub3RlcyBhbmQgbWFraW5nIGNvbm5lY3Rpb25zIGluIG15IGhlYWQuIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBidWlsZGluZyBibG9ja3MsIHRoZSBmdW5kYW1lbnRhbCBvcHRpb25zIHRoYXQgZW5hYmxlIGFuZCBjb25maWd1cmUgdGhlIE1EIGxheWVyLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgYnVpbGQgbXkgbWVudGFsIG1vZGVsLCB0aGlzIGlzIGdvbm5hIGJlIGFuIGludGVyZXN0aW5nIHJldmlldy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQxNiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjM5LjgwOTIyMjY1OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU0MTE3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1EXFxcXGJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZC9LY29uZmlnLTUtXFxuZHJpdmVycy9tZC9LY29uZmlnOjY6bWVudWNvbmZpZyBNRFxcbmRyaXZlcnMvbWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIk11bHRpcGxlIGRldmljZXMgZHJpdmVyIHN1cHBvcnQgKFJBSUQgYW5kIExWTSlcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjM5Ljg2NDY0OTM5OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTc1NTgyNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQnVpbGQgUHJvY2VzcyBmb3IgYGRyaXZlcnMvbWQvbWQuY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyBgZHJpdmVycy9tZC9tZC5jYCBnZXRzIGJ1aWx0LiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgZmlyc3QgcGxhY2UgSSdkIGxvb2sgaXMgdXN1YWxseSB0aGUgb2J2aW91czogdGhlIHJlbGV2YW50IGBNYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL21kYCBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgY2hlY2sgYGRyaXZlcnMvbWQvTWFrZWZpbGVgIHRvIHNlZSBpZiB0aGVyZSdzIGEgZGlyZWN0IHJ1bGUgdGhhdCBleHBsaWNpdGx5IG1lbnRpb25zIHRoZSBjb21waWxhdGlvbiBvZiBgbWQuY2AuIElmIG5vdCwgSSdsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBkZXBlbmRlbmNpZXMgb3IgaW1wbGljaXQgcnVsZXMgdGhhdCBtaWdodCB0cmlnZ2VyIGl0cyBidWlsZC4gSSB3b3VsZCBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgYXMgd2VsbC4gVGhpcyB3aWxsIHNob3cgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIGluZmx1ZW5jZSB3aGV0aGVyIGl0J3MgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIGtlcm5lbCBpbWFnZSwgaWYgaXQncyBjb25kaXRpb25hbC4gVGhlc2UgYXJlIHVzdWFsbHkgdGhlIHByaW1hcnkgbWVjaGFuaXNtcyB0aGF0IGRldGVybWluZSB3aGljaCBtb2R1bGVzIG9yIHNvdXJjZSBmaWxlcyBhcmUgYWN0dWFsbHkgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkIGJhc2VkIG9uIHRoZSBjdXJyZW50IGtlcm5lbCBjb25maWd1cmF0aW9uLiBXaXRoIGFueSBsdWNrLCBvbmUgb2YgdGhvc2UgdHdvIGZpbGVzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njk5LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6NDIuNDQwMjM1NjU4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTUyMzQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZFxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21kL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21kL01ha2VmaWxlPTI4PWRtLXpvbmVkLXlcXHQrPSBkbS16b25lZC10YXJnZXQubyBkbS16b25lZC1tZXRhZGF0YS5vIGRtLXpvbmVkLXJlY2xhaW0ub1xcbmRyaXZlcnMvbWQvTWFrZWZpbGUtMjktXFxuZHJpdmVycy9tZC9NYWtlZmlsZTozMDptZC1tb2QteVxcdCs9IG1kLm9cXG5kcml2ZXJzL21kL01ha2VmaWxlLTMxLW1kLW1vZC0kKENPTkZJR19NRF9CSVRNQVApXFx0Kz0gbWQtYml0bWFwLm9cXG4tLVxcbmRyaXZlcnMvbWQvTWFrZWZpbGU9MzQ9bGluZWFyLXkgICAgICAgKz0gbWQtbGluZWFyLm9cXG4tLVxcbmRyaXZlcnMvbWQvTWFrZWZpbGUtMzYtIyBOb3RlOiBsaW5rIG9yZGVyIGlzIGltcG9ydGFudC4gIEFsbCByYWlkIHBlcnNvbmFsaXRpZXNcXG5kcml2ZXJzL21kL01ha2VmaWxlOjM3OiMgYW5kIG11c3QgY29tZSBiZWZvcmUgbWQubywgYXMgdGhleSBlYWNoIGluaXRpYWxpc2VcXG5kcml2ZXJzL21kL01ha2VmaWxlOjM4OiMgdGhlbXNlbHZlcywgYW5kIG1kLm8gbWF5IHVzZSB0aGUgcGVyc29uYWxpdGllcyB3aGVuIGl0XFxuZHJpdmVycy9tZC9NYWtlZmlsZS0zOS0jIGF1dG8taW5pdGlhbGlzZWQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjQyLjQ5NTc2NjYwN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDM5MTExMDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIFJBSUQgRHJpdmVyIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFJBSUQgZHJpdmVyIGlzIGJlaW5nIGJ1aWx0LCBzcGVjaWZpY2FsbHkgd2hhdCdzIGhhcHBlbmluZyBpbiBgZHJpdmVycy9tZC9NYWtlZmlsZWAgYXJvdW5kIGxpbmVzIDIwLTQwLiBJJ20gdGhpbmtpbmcgdGhhdCdzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIGFuZCBvYmplY3QgZmlsZSBpbmNsdXNpb24gZm9yIHRoZSBtb2R1bGUgcmVzaWRlLiBJJ2xsIG5lZWQgdG8gcGlucG9pbnQgYW55IGRlcGVuZGVuY2llcywgY29uZGl0aW9uYWwgY29tcGlsYXRpb25zLCBvciBzcGVjaWFsIGZsYWdzIGRlZmluZWQgdGhlcmUuIFRoaXMgc2VjdGlvbiBwcm9iYWJseSBoYW5kbGVzIHRoZSBjb3JlIG1vZHVsZXMgYW5kIHBlcmhhcHMgYW55IGRldmljZS1zcGVjaWZpYyBkcml2ZXJzIHVuZGVyIHRoZSBSQUlEIHN1YnN5c3RlbS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBjcml0aWNhbCBnbHVlIHRoYXQgdGllcyB0aGUgc291cmNlIGNvZGUgZmlsZXMgaW50byBhIGxvYWRhYmxlIG1vZHVsZS4gVGhhdCdzIGxpa2VseSB3aGVyZSBJJ2xsIGZpbmQgaG93IHRoaW5ncyBhcmUgYmVpbmcgY29tcGlsZWQgYW5kIGxpbmtlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB0byB0cm91Ymxlc2hvb3QgYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCB0aGUgbW9kdWxlJ3MgbG9hZGluZywgb3IgYSBjb25maWd1cmF0aW9uIGNvbmZsaWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTk4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6NDQuOTM0ODgxMzI4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWQvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1ha2VmaWxlIGZvciB0aGUga2VybmVsIHNvZnR3YXJlIFJBSUQgYW5kIExWTSBkcml2ZXJzLlxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRkbS1tb2QteVxcdCs9IGRtLm8gZG0tdGFibGUubyBkbS10YXJnZXQubyBkbS1saW5lYXIubyBkbS1zdHJpcGUubyBcXFxcXFxuICAgNzpcXHRcXHRcXHQgICBkbS1pb2N0bC5vIGRtLWlvLm8gZG0ta2NvcHlkLm8gZG0tc3lzZnMubyBkbS1zdGF0cy5vIFxcXFxcXG4gICA4OlxcdFxcdFxcdCAgIGRtLXJxLm8gZG0taW8tcmV3aW5kLm9cXG4gICA5OlxcdGRtLW11bHRpcGF0aC15XFx0Kz0gZG0tcGF0aC1zZWxlY3Rvci5vIGRtLW1wYXRoLm9cXG4gIDEwOlxcdGRtLWhpc3RvcmljYWwtc2VydmljZS10aW1lLXkgKz0gZG0tcHMtaGlzdG9yaWNhbC1zZXJ2aWNlLXRpbWUub1xcbiAgMTE6XFx0ZG0taW8tYWZmaW5pdHkteSArPSBkbS1wcy1pby1hZmZpbml0eS5vXFxuICAxMjpcXHRkbS1xdWV1ZS1sZW5ndGgteSArPSBkbS1wcy1xdWV1ZS1sZW5ndGgub1xcbiAgMTM6XFx0ZG0tcm91bmQtcm9iaW4teSArPSBkbS1wcy1yb3VuZC1yb2Jpbi5vXFxuICAxNDpcXHRkbS1zZXJ2aWNlLXRpbWUteSArPSBkbS1wcy1zZXJ2aWNlLXRpbWUub1xcbiAgMTU6XFx0ZG0tc25hcHNob3QteVxcdCs9IGRtLXNuYXAubyBkbS1leGNlcHRpb24tc3RvcmUubyBkbS1zbmFwLXRyYW5zaWVudC5vIFxcXFxcXG4gIDE2OlxcdFxcdFxcdCAgICBkbS1zbmFwLXBlcnNpc3RlbnQub1xcbiAgMTc6XFx0ZG0tbWlycm9yLXlcXHQrPSBkbS1yYWlkMS5vXFxuICAxODpcXHRkbS1sb2ctdXNlcnNwYWNlLXkgKz0gZG0tbG9nLXVzZXJzcGFjZS1iYXNlLm8gZG0tbG9nLXVzZXJzcGFjZS10cmFuc2Zlci5vXFxuICAxOTpcXHRkbS1iaW8tcHJpc29uLXkgKz0gZG0tYmlvLXByaXNvbi12MS5vIGRtLWJpby1wcmlzb24tdjIub1xcbiAgMjA6XFx0ZG0tdGhpbi1wb29sLXlcXHQrPSBkbS10aGluLm8gZG0tdGhpbi1tZXRhZGF0YS5vXFxuICAyMTpcXHRkbS1jYWNoZS15XFx0Kz0gZG0tY2FjaGUtdGFyZ2V0Lm8gZG0tY2FjaGUtbWV0YWRhdGEubyBkbS1jYWNoZS1wb2xpY3kubyBcXFxcXFxuICAyMjpcXHRcXHRcXHQgICAgZG0tY2FjaGUtYmFja2dyb3VuZC10cmFja2VyLm9cXG4gIDIzOlxcdGRtLWNhY2hlLXNtcS15XFx0Kz0gZG0tY2FjaGUtcG9saWN5LXNtcS5vXFxuICAyNDpcXHRkbS1lYnMteVxcdCs9IGRtLWVicy10YXJnZXQub1xcbiAgMjU6XFx0ZG0tZXJhLXlcXHQrPSBkbS1lcmEtdGFyZ2V0Lm9cXG4gIDI2OlxcdGRtLWNsb25lLXlcXHQrPSBkbS1jbG9uZS10YXJnZXQubyBkbS1jbG9uZS1tZXRhZGF0YS5vXFxuICAyNzpcXHRkbS12ZXJpdHkteVxcdCs9IGRtLXZlcml0eS10YXJnZXQub1xcbiAgMjg6XFx0ZG0tem9uZWQteVxcdCs9IGRtLXpvbmVkLXRhcmdldC5vIGRtLXpvbmVkLW1ldGFkYXRhLm8gZG0tem9uZWQtcmVjbGFpbS5vXFxuICAyOTpcXHRcXG4gIDMwOlxcdG1kLW1vZC15XFx0Kz0gbWQub1xcbiAgMzE6XFx0bWQtbW9kLSQoQ09ORklHX01EX0JJVE1BUClcXHQrPSBtZC1iaXRtYXAub1xcbiAgMzI6XFx0bWQtbW9kLSQoQ09ORklHX01EX0xMQklUTUFQKVxcdCs9IG1kLWxsYml0bWFwLm9cXG4gIDMzOlxcdHJhaWQ0NTYteVxcdCs9IHJhaWQ1Lm8gcmFpZDUtY2FjaGUubyByYWlkNS1wcGwub1xcbiAgMzQ6XFx0bGluZWFyLXkgICAgICAgKz0gbWQtbGluZWFyLm9cXG4gIDM1OlxcdFxcbiAgMzY6XFx0IyBOb3RlOiBsaW5rIG9yZGVyIGlzIGltcG9ydGFudC4gIEFsbCByYWlkIHBlcnNvbmFsaXRpZXNcXG4gIDM3OlxcdCMgYW5kIG11c3QgY29tZSBiZWZvcmUgbWQubywgYXMgdGhleSBlYWNoIGluaXRpYWxpc2VcXG4gIDM4OlxcdCMgdGhlbXNlbHZlcywgYW5kIG1kLm8gbWF5IHVzZSB0aGUgcGVyc29uYWxpdGllcyB3aGVuIGl0XFxuICAzOTpcXHQjIGF1dG8taW5pdGlhbGlzZWQuXFxuICA0MDpcXHRcXG4gIDQxOlxcdG9iai0kKENPTkZJR19NRF9MSU5FQVIpXFx0XFx0Kz0gbGluZWFyLm9cXG4gIDQyOlxcdG9iai0kKENPTkZJR19NRF9SQUlEMClcXHRcXHQrPSByYWlkMC5vXFxuICA0MzpcXHRvYmotJChDT05GSUdfTURfUkFJRDEpXFx0XFx0Kz0gcmFpZDEub1xcbiAgNDQ6XFx0b2JqLSQoQ09ORklHX01EX1JBSUQxMClcXHRcXHQrPSByYWlkMTAub1xcbiAgNDU6XFx0b2JqLSQoQ09ORklHX01EX1JBSUQ0NTYpXFx0Kz0gcmFpZDQ1Ni5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjQ0LjkzNDk1NTY1OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTIyMTg0NjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQnVpbGQgUHJvY2VzcyBmb3IgYG1kLW1vZGAqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIGBtZC1tb2RgLiBUaGlzIGlzIGEgY29yZSBjb21wb25lbnQsIGFuZCBJJ20gc3VyZSBpdCdzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBlbnRpcmUgUkFJRCBzeXN0ZW0gaXMgcHV0IHRvZ2V0aGVyLiBUbyBnZXQgdG8gdGhlIGhlYXJ0IG9mIGl0LCBJJ2xsIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSBrbm93IHRoZSBgZHJpdmVycy9tZC9NYWtlZmlsZWAgaXMgdGhlIHBsYWNlIHRvIHN0YXJ0LCBhbmQgbGluZXMgNDYgdGhyb3VnaCA2MCBhcmUgbGlrZWx5IHdoZXJlIHRoZSByZWxldmFudCBidWlsZCBydWxlcyBhcmUgZGVmaW5lZC4gVGhhdCBzZWN0aW9uIHdpbGwgcHJvYmFibHkgcHJvdmlkZSB0aGUgY2xlYXJlc3QgcGljdHVyZSBvZiB3aGF0IGRlcGVuZGVuY2llcyBhcmUgbmVlZGVkLCBhbnkgcHJlLXByb2Nlc3Npbmcgc3RlcHMsIGFuZCB0aGUgZmluYWwgbGlua2luZyBwcm9jZWR1cmUgZm9yIHRoZSBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gaGF2ZSBhIHNvbGlkIGdyYXNwIG9mIGhvdyBpdCB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQwNiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6NDguMDU3MTQzMzU5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWQvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogNDUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDU6XFx0b2JqLSQoQ09ORklHX01EX1JBSUQ0NTYpXFx0Kz0gcmFpZDQ1Ni5vXFxuICA0NjpcXHRvYmotJChDT05GSUdfTURfQ0xVU1RFUilcXHQrPSBtZC1jbHVzdGVyLm9cXG4gIDQ3OlxcdG9iai0kKENPTkZJR19CQ0FDSEUpXFx0XFx0Kz0gYmNhY2hlL1xcbiAgNDg6XFx0b2JqLSQoQ09ORklHX0JMS19ERVZfTUQpXFx0Kz0gbWQtbW9kLm9cXG4gIDQ5OlxcdGlmZXEgKCQoQ09ORklHX0JMS19ERVZfTUQpLHkpXFxuICA1MDpcXHRvYmoteVxcdFxcdFxcdFxcdCs9IG1kLWF1dG9kZXRlY3Qub1xcbiAgNTE6XFx0ZW5kaWZcXG4gIDUyOlxcdG9iai0kKENPTkZJR19CTEtfREVWX0RNKVxcdCs9IGRtLW1vZC5vXFxuICA1MzpcXHRvYmotJChDT05GSUdfQkxLX0RFVl9ETV9CVUlMVElOKSArPSBkbS1idWlsdGluLm9cXG4gIDU0OlxcdG9iai0kKENPTkZJR19ETV9VTlNUUklQRUQpXFx0Kz0gZG0tdW5zdHJpcGUub1xcbiAgNTU6XFx0b2JqLSQoQ09ORklHX0RNX0JVRklPKVxcdFxcdCs9IGRtLWJ1ZmlvLm9cXG4gIDU2OlxcdG9iai0kKENPTkZJR19ETV9CSU9fUFJJU09OKVxcdCs9IGRtLWJpby1wcmlzb24ub1xcbiAgNTc6XFx0b2JqLSQoQ09ORklHX0RNX0NSWVBUKVxcdFxcdCs9IGRtLWNyeXB0Lm9cXG4gIDU4OlxcdG9iai0kKENPTkZJR19ETV9JTkxJTkVDUllQVClcXHQrPSBkbS1pbmxpbmVjcnlwdC5vXFxuICA1OTpcXHRvYmotJChDT05GSUdfRE1fREVMQVkpXFx0XFx0Kz0gZG0tZGVsYXkub1xcbiAgNjA6XFx0b2JqLSQoQ09ORklHX0RNX0RVU1QpXFx0XFx0Kz0gZG0tZHVzdC5vXFxuICA2MTpcXHRvYmotJChDT05GSUdfRE1fRkxBS0VZKVxcdFxcdCs9IGRtLWZsYWtleS5vXFxuICA2MjpcXHRvYmotJChDT05GSUdfRE1fTVVMVElQQVRIKVxcdCs9IGRtLW11bHRpcGF0aC5vIGRtLXJvdW5kLXJvYmluLm9cXG4gIDYzOlxcdG9iai0kKENPTkZJR19ETV9NVUxUSVBBVEhfUUwpXFx0Kz0gZG0tcXVldWUtbGVuZ3RoLm9cXG4gIDY0OlxcdG9iai0kKENPTkZJR19ETV9NVUxUSVBBVEhfU1QpXFx0Kz0gZG0tc2VydmljZS10aW1lLm9cXG4gIDY1OlxcdG9iai0kKENPTkZJR19ETV9NVUxUSVBBVEhfSFNUKVxcdCs9IGRtLWhpc3RvcmljYWwtc2VydmljZS10aW1lLm9cXG4gIDY2OlxcdG9iai0kKENPTkZJR19ETV9NVUxUSVBBVEhfSU9BKVxcdCs9IGRtLWlvLWFmZmluaXR5Lm9cXG4gIDY3OlxcdG9iai0kKENPTkZJR19ETV9TV0lUQ0gpXFx0XFx0Kz0gZG0tc3dpdGNoLm9cXG4gIDY4OlxcdG9iai0kKENPTkZJR19ETV9TTkFQU0hPVClcXHQrPSBkbS1zbmFwc2hvdC5vXFxuICA2OTpcXHRvYmotJChDT05GSUdfRE1fUEVSU0lTVEVOVF9EQVRBKSArPSBwZXJzaXN0ZW50LWRhdGEvXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjQ4LjA1NzIyMDA3OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzAwNjU3NDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipDaGVja2luZyB0aGUgTWV0YWRhdGEgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgc3RhdHVzIG9mIGBCTEtfREVWX01EYC4gSSBpbW1lZGlhdGVseSB0aGluayB0byBjaGVjayB0aGUgYGRyaXZlcnMvbWQvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyBpdCdzIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlIHNwZWNpZmljYWxseSBmb3IgdGhlIE11bHRpcGxlIERldmljZSAoTUQpIHN1YnN5c3RlbS4gSSdtIGFzc3VtaW5nIHRoYXQgaWYgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHNldCwgaXQgd2lsbCBiZSBkZWZpbmVkIGFuZCBjb250cm9sbGVkIGluIHRoZSBLY29uZmlnIGZpbGUuIEknbGwgbmVlZCB0byBzZWUgaWYgaXQncyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgcGVyaGFwcyBwYXJ0IG9mIGEgbW9yZSBjb21wbGV4IGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIHRoYXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI0MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6NDkuNzU3ODgwMjUyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzY0NTgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9NRFxcXFxiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWQvS2NvbmZpZz0xMz1pZiBNRFxcbmRyaXZlcnMvbWQvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL21kL0tjb25maWc6MTU6Y29uZmlnIEJMS19ERVZfTURcXG5kcml2ZXJzL21kL0tjb25maWctMTYtXFx0dHJpc3RhdGUgXFxcIlJBSUQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6NDkuODE1NTMzMTYxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5MTc3NzkzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgTGFieXJpbnRoIG9mIEtlcm5lbCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgUkFJRCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciB0aGVtIGlzLCBvZiBjb3Vyc2UsIHRoZSBgS2NvbmZpZ2AgZmlsZXMuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhcmUgZGVmaW5lZC4gSSBoYXZlIGEgaHVuY2ggdGhlIHJlbGV2YW50IG9wdGlvbnMgYXJlIGluIHRoZSBgZHJpdmVycy9tZC9gIGRpcmVjdG9yeSwgY29uc2lkZXJpbmcgaXQncyB0aGUgaG9tZSBvZiB0aGUgTXVsdGlwbGUgRGV2aWNlIGRyaXZlciBjb2RlLiBMZXQgbWUgc3BlY2lmaWNhbGx5IGNoZWNrIGBkcml2ZXJzL21kL0tjb25maWdgIGFuZCB6b29tIGluIG9uLCBzYXksIGxpbmUgMTMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGp1bXBpbmctb2ZmIHBvaW50IHRvIHNlZSBob3cgZXZlcnl0aGluZyBpcyBsYWlkIG91dCBhbmQgaG93IHRoZSBSQUlEIG9wdGlvbnMgYXJlIGV4cG9zZWQuIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IGZpZ3VyaW5nIG91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBwaXRmYWxscy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBsaW5lcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCBzY29waW5nIG9mIHRoZSBvcHRpb25zIGJlaW5nIGNvbnNpZGVyZWQuIExldCdzIHNlZSB3aGF0IHdlIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MTMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMjowMDo1MS43MzMzMTQ5M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDc3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21kL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgQmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgTURcXG4gICA3OlxcdFxcdGJvb2wgXFxcIk11bHRpcGxlIGRldmljZXMgZHJpdmVyIHN1cHBvcnQgKFJBSUQgYW5kIExWTSlcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIEJMT0NLXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIFN1cHBvcnQgbXVsdGlwbGUgcGh5c2ljYWwgc3BpbmRsZXMgdGhyb3VnaCBhIHNpbmdsZSBsb2dpY2FsIGRldmljZS5cXG4gIDExOlxcdFxcdCAgUmVxdWlyZWQgZm9yIFJBSUQgYW5kIGxvZ2ljYWwgdm9sdW1lIG1hbmFnZW1lbnQuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGlmIE1EXFxuICAxNDpcXHRcXG4gIDE1OlxcdGNvbmZpZyBCTEtfREVWX01EXFxuICAxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiUkFJRCBzdXBwb3J0XFxcIlxcbiAgMTc6XFx0XFx0c2VsZWN0IEJMT0NLX0hPTERFUl9ERVBSRUNBVEVEIGlmIFNZU0ZTXFxuICAxODpcXHRcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG4gIDE5OlxcdFxcdCMgQkxPQ0tfTEVHQUNZX0FVVE9MT0FEIHJlcXVpcmVtZW50IHNob3VsZCBiZSByZW1vdmVkXFxuICAyMDpcXHRcXHQjIGFmdGVyIHJlbGV2YW50IG1kYWRtIGVuaGFuY2VtZW50cyAtIHRvIG1ha2UgXFxcIm5hbWVzPXllc1xcXCJcXG4gIDIxOlxcdFxcdCMgdGhlIGRlZmF1bHQgLSBhcmUgd2lkZWx5IGF2YWlsYWJsZS5cXG4gIDIyOlxcdFxcdHNlbGVjdCBCTE9DS19MRUdBQ1lfQVVUT0xPQURcXG4gIDIzOlxcdFxcdGhlbHBcXG4gIDI0OlxcdFxcdCAgVGhpcyBkcml2ZXIgbGV0cyB5b3UgY29tYmluZSBzZXZlcmFsIGhhcmQgZGlzayBwYXJ0aXRpb25zIGludG8gb25lXFxuICAyNTpcXHRcXHQgIGxvZ2ljYWwgYmxvY2sgZGV2aWNlLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHNpbXBseSBhcHBlbmQgb25lXFxuICAyNjpcXHRcXHQgIHBhcnRpdGlvbiB0byBhbm90aGVyIG9uZSBvciB0byBjb21iaW5lIHNldmVyYWwgcmVkdW5kYW50IGhhcmQgZGlza3NcXG4gIDI3OlxcdFxcdCAgaW50byBhIFJBSUQxLzQvNSBkZXZpY2Ugc28gYXMgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgaGFyZFxcbiAgMjg6XFx0XFx0ICBkaXNrIGZhaWx1cmVzLiBUaGlzIGlzIGNhbGxlZCBcXFwiU29mdHdhcmUgUkFJRFxcXCIgc2luY2UgdGhlIGNvbWJpbmluZyBvZlxcbiAgMjk6XFx0XFx0ICB0aGUgcGFydGl0aW9ucyBpcyBkb25lIGJ5IHRoZSBrZXJuZWwuIFxcXCJIYXJkd2FyZSBSQUlEXFxcIiBtZWFucyB0aGF0IHRoZVxcbiAgMzA6XFx0XFx0ICBjb21iaW5pbmcgaXMgZG9uZSBieSBhIGRlZGljYXRlZCBjb250cm9sbGVyOyBpZiB5b3UgaGF2ZSBzdWNoIGFcXG4gIDMxOlxcdFxcdCAgY29udHJvbGxlciwgeW91IGRvIG5vdCBuZWVkIHRvIHNheSBZIGhlcmUuXFxuICAzMjpcXHRcXG4gIDMzOlxcdFxcdCAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCBTb2Z0d2FyZSBSQUlEIG9uIExpbnV4IGlzIGNvbnRhaW5lZCBpbiB0aGVcXG4gIDM0OlxcdFxcdCAgU29mdHdhcmUgUkFJRCBtaW5pLUhPV1RPLCBhdmFpbGFibGUgZnJvbVxcbiAgMzU6XFx0XFx0ICBcXHUwMDNjaHR0cHM6Ly93d3cudGxkcC5vcmcvZG9jcy5odG1sI2hvd3RvXFx1MDAzZS4gVGhlcmUgeW91IHdpbGwgYWxzbyBsZWFyblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMjowMDo1MS43MzMzOTcyOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4NzQ3NTgwOTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBgbWRfc3RvcGAgcGF0aCBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSB0aGUgdmlhYmlsaXR5IG9mIGZ1enppbmcgdGhlIGBtZF9zdG9wYCBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSByZXNldCBvZiByZXNoYXBlIHBhcmFtZXRlcnMgd2l0aGluIHRoZSBgX19tZF9zdG9wYCBmdW5jdGlvbi5cblxuRmlyc3QsIEkgc2VlIHRoYXQgdGhlIGNvZGUgSSdtIGludGVyZXN0ZWQgaW4sIHRoZSBmdW5jdGlvbiBgX19tZF9zdG9wYCwgbGl2ZXMgd2l0aGluIGBkcml2ZXJzL21kL21kLmNgLCBhbmQgaXQncyBjYWxsZWQgYnkgYG1kX3N0b3BgLiBgX19tZF9zdG9wYCBpcyBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0J3Mgbm90IGRpcmVjdGx5IGV4cG9ydGVkLCBidXQgYG1kX3N0b3BgIGlzLiBXZSBhbHNvIGhhdmUgYGRvX21kX3N0b3BgIHRoYXQgaXMgc3RhdGljIGFzIHdlbGwuXG5cblRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyB0aGUgcmVzZXQgb2YgcmVzaGFwZSBwYXJhbWV0ZXJzIChgZGVsdGFfZGlza3NgLCBgcmVzaGFwZV9iYWNrd2FyZHNgLCBldGMuKSB3aGVuIGEgcmVzaGFwZSBvcGVyYXRpb24gaGFzIGNvbXBsZXRlZCAoYXMgaW5kaWNhdGVkIGJ5IGBtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcmApIGFuZCB0aGUgYXJyYXkgaXMgc3RvcHBlZC4gVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgdGhpcyByZXNldCBtaWdodCBiZSBhIGdvb2QgYXJlYSBmb3IgZnV6emluZy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYF9fbWRfc3RvcGAgKGFuZCBgbWRfc3RvcGApIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGAvZGV2L21kKmAgZGV2aWNlcyBhcmUgYXZhaWxhYmxlIGluIFFFTVUvc3l6a2FsbGVyIGFuZCB0aGUgTUQgc3RhY2sgY2FuIGJlIG1hbmlwdWxhdGVkIHZpYSBpb2N0bCBjYWxscyAobGlrZSBgU1RPUF9BUlJBWWAgb3IgYFNUT1BfQVJSQVlfUk9gKSwgc3lzZnMgaW50ZXJhY3Rpb25zIChgYXJyYXlfc3RhdGVgIHdyaXRpbmcgXCJjbGVhclwiIG9yIFwiaW5hY3RpdmVcIiBvciBcInN0b3BcIiksIGFuZCBldmVuIGRtLXJhaWQgdGVhcmRvd24uIFN5emthbGxlcidzIGNvdmVyYWdlIG9mIG1kIGlvY3RscyBhbmQgc3lzZnMgbWFrZXMgaXQgYSBncmVhdCB0ZXN0aW5nIHBsYXRmb3JtLlxuXG5UbyB2ZXJpZnkgcmVhY2hhYmlsaXR5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gYEJMS19ERVZfTURgIGlzIGNydWNpYWwsIGFzIGl0IGRpcmVjdGx5IGVuYWJsZXMgdGhlIGBtZC5jYCBtb2R1bGUuIFRoZW4sIHRvIG1ha2UgcmVzaGFwZSByZWxldmFudCwgSSBuZWVkIGVpdGhlciBgTURfUkFJRDQ1NmAgb3IgYE1EX1JBSUQxMGAsIGJlY2F1c2UgdGhlc2UgUkFJRCBwZXJzb25hbGl0aWVzIHN1cHBvcnQgcmVzaGFwaW5nLiBUaGUgbW9yZSBnZW5lcmFsIGBDT05GSUdfTURgIHdvdWxkIGVuYWJsZSBgbWQuY2AsIGJ1dCB0aGUgc3BlY2lmaWMgUkFJRCBwZXJzb25hbGl0aWVzIGVuYWJsZSB0aGUgcmVzaGFwaW5nIGNvZGUuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgYEJMS19ERVZfRE1gIGFuZCBgRE1fUkFJRGAgYWxzbyBjYWxsIGBtZF9zdG9wYC5cblxuVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gc2V0IGBfX21kX3N0b3BgLCBgZG9fbWRfc3RvcGAsIGFuZCBgbWRfc3RvcGAgYXMgbXkgRm9jdXNTeW1ib2xzLiBUaGUgZW5hYmxpbmcgY29uZmlncyBhcmUgYEJMS19ERVZfTURgLCBgTURfUkFJRDQ1NmAsIGFuZCBgTURfUkFJRDEwYC4gV2l0aCB0aGVzZSBjb21wb25lbnRzIGluIHBsYWNlLCBhbmQgYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGFuZCBNRCBpcyBmdWxseSBzdXBwb3J0ZWQgaW4gdGhlc2UgZW52aXJvbm1lbnRzLCBJIGJlbGlldmUgdGhpcyBpcyBhIHZhbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNzEsIk91dHB1dFRva2VucyI6MTkzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAxOjAwLjQ4MDk4MTUxMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5OTQ5NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX01EXCIsXG4gICAgXCJNRF9SQUlENDU2XCIsXG4gICAgXCJNRF9SQUlEMTBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX21kX3N0b3BcIixcbiAgICBcImRvX21kX3N0b3BcIixcbiAgICBcIm1kX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBfX21kX3N0b3AoKSBpbiB0aGUgTUQgKE11bHRpcGxlIERldmljZXMgLyBTb2Z0d2FyZSBSQUlEKSBkcml2ZXIgdG8gcmVzZXQgcmVzaGFwZSBzdGF0ZSAoZGVsdGFfZGlza3MsIHJlc2hhcGVfYmFja3dhcmRzLCBuZXdfbGV2ZWwsIG5ld19sYXlvdXQsIG5ld19jaHVua19zZWN0b3JzKSB3aGVuIHN0b3BwaW5nIGFuIGFycmF5IGFmdGVyIGEgcmVzaGFwZSBvcGVyYXRpb24gaGFzIGZpbmlzaGVkIChyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcikuIFRoaXMgY29kZSBpcyBmdWxseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtZCBpb2N0bCAoZS5nLiwgU1RPUF9BUlJBWSksIHN5c2ZzIGFycmF5X3N0YXRlIGF0dHJpYnV0ZXMsIG9yIGRtLXJhaWQgdGVhcmRvd24sIGFuZCB3YXJyYW50cyBmdXp6aW5nIGZvciBwb3RlbnRpYWwgc3RhdGUgbWFuYWdlbWVudCByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9NRFwiLFxuICAgIFwiTURfUkFJRDQ1NlwiLFxuICAgIFwiTURfUkFJRDEwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19tZF9zdG9wXCIsXG4gICAgXCJkb19tZF9zdG9wXCIsXG4gICAgXCJtZF9zdG9wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgX19tZF9zdG9wKCkgaW4gdGhlIE1EIChNdWx0aXBsZSBEZXZpY2VzIC8gU29mdHdhcmUgUkFJRCkgZHJpdmVyIHRvIHJlc2V0IHJlc2hhcGUgc3RhdGUgKGRlbHRhX2Rpc2tzLCByZXNoYXBlX2JhY2t3YXJkcywgbmV3X2xldmVsLCBuZXdfbGF5b3V0LCBuZXdfY2h1bmtfc2VjdG9ycykgd2hlbiBzdG9wcGluZyBhbiBhcnJheSBhZnRlciBhIHJlc2hhcGUgb3BlcmF0aW9uIGhhcyBmaW5pc2hlZCAocmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpLiBUaGlzIGNvZGUgaXMgZnVsbHkgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWQgaW9jdGwgKGUuZy4sIFNUT1BfQVJSQVkpLCBzeXNmcyBhcnJheV9zdGF0ZSBhdHRyaWJ1dGVzLCBvciBkbS1yYWlkIHRlYXJkb3duLCBhbmQgd2FycmFudHMgZnV6emluZyBmb3IgcG90ZW50aWFsIHN0YXRlIG1hbmFnZW1lbnQgcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMjowMTowMC41NzA5NDA0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg0MDQ2MjA0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAxOjAwLjU3MTUzMjE2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjI4Mzk4NjQyNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX21kX3N0b3AoKWAgaW4gYGRyaXZlcnMvbWQvbWQuY2AgdG8gcmVzZXQgcmVzaGFwZSBjb25maWd1cmF0aW9uIGZpZWxkcyAoYGRlbHRhX2Rpc2tzYCwgYHJlc2hhcGVfYmFja3dhcmRzYCwgYG5ld19sZXZlbGAsIGBuZXdfbGF5b3V0YCwgYG5ld19jaHVua19zZWN0b3JzYCkgaW4gYHN0cnVjdCBtZGRldmAgd2hlbiBzdG9wcGluZyBhbiBtZCBhcnJheSB3aGVyZSBgcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3JgLlxcblxcbkFsbCBhc3NpZ25lZCB2YWx1ZXMgYXJlIGVpdGhlciBjb25zdGFudCB6ZXJvZXMgb3IgZGVyaXZlZCBmcm9tIGV4aXN0aW5nLCBpbml0aWFsaXplZCBmaWVsZHMgb2YgYG1kZGV2YC4gVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBkYXRhLCBkb2VzIG5vdCBhbHRlciBjb3B5LXRvLXVzZXIgb3BlcmF0aW9ucywgYW5kIGRvZXMgbm90IGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCB3YXJyYW50IGEgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRjNmFlYzM3NGMwNDdlOGEyMjBhZTFkZjdjZWZmOTMzODdkYTkyNmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCA5IDIyOjAwOjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9tZC5jIGIvZHJpdmVycy9tZC9tZC5jXG5pbmRleCA2ODBiMzRhNjNjYjNkLi4zOGFiNDFiYmNkMGVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tZC9tZC5jXG4rKysgYi9kcml2ZXJzL21kL21kLmNcbkBAIC03MDk1LDYgKzcwOTUsMTQgQEAgc3RhdGljIHZvaWQgX19tZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4gXHRtZGRldi1cdTAwM2Vwcml2YXRlID0gTlVMTDtcbiBcdHB1dF9wZXJzKHBlcnMpO1xuIFx0Y2xlYXJfYml0KE1EX1JFQ09WRVJZX0ZST1pFTiwgXHUwMDI2bWRkZXYtXHUwMDNlcmVjb3ZlcnkpO1xuK1xuK1x0aWYgKG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKSB7XG4rXHRcdG1kZGV2LVx1MDAzZWRlbHRhX2Rpc2tzID0gMDtcbitcdFx0bWRkZXYtXHUwMDNlcmVzaGFwZV9iYWNrd2FyZHMgPSAwO1xuK1x0XHRtZGRldi1cdTAwM2VuZXdfbGV2ZWwgPSBtZGRldi1cdTAwM2VsZXZlbDtcbitcdFx0bWRkZXYtXHUwMDNlbmV3X2xheW91dCA9IG1kZGV2LVx1MDAzZWxheW91dDtcbitcdFx0bWRkZXYtXHUwMDNlbmV3X2NodW5rX3NlY3RvcnMgPSBtZGRldi1cdTAwM2VjaHVua19zZWN0b3JzO1xuK1x0fVxuIH1cbiBcbiB2b2lkIG1kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAxOjAwLjU3MTUzNDU4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5Njk1MDI2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGluLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyBhbHdheXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjaGFuZ2VzIGRpcmVjdGx5LiBJJ20gZ29pbmcgdG8gZmlyZSB1cCBteSB1c3VhbCB0b29scyBhbmQgc3RhcnQgYnkgaW5zcGVjdGluZyB0aGUgcGF0Y2ggaXRzZWxmLCBzZWVpbmcgd2hhdCBpdCdzIHRvdWNoaW5nLiBBaCwgYGRyaXZlcnMvbWQvbWQuY2Ag4oCTIHRoYXQncyBpbnRlcmVzdGluZy4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2UgaXMgd2l0aGluIHRoZSBgX19tZF9zdG9wYCBmdW5jdGlvbi4gTm93LCB0aGF0J3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZywgSSdsbCBuZWVkIHRvIHNlZSBob3cgYF9fbWRfc3RvcGAgd29ya3MgYW5kIGl0cyBpbW1lZGlhdGUgY29udGV4dCB0byBmdWxseSBncmFzcCB0aGUgY2hhbmdlLiBMZXQgbWUgZ28gZGlyZWN0bHkgdG8gYXJvdW5kIGxpbmUgNzA5NSBpbiBgZHJpdmVycy9tZC9tZC5jYCB0byByZWFkIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2UuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGxheSBvZiB0aGUgbGFuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDE6MDcuNTQxMDQwMTNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWQvbWQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MDgwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI3MDgwOlxcdFxcdGlmICghbWRkZXZfaXNfZG0obWRkZXYpKVxcbjcwODE6XFx0XFx0XFx0YmxrX3N5bmNfcXVldWUobWRkZXYtXFx1MDAzZWdlbmRpc2stXFx1MDAzZXF1ZXVlKTtcXG43MDgyOlxcdH1cXG43MDgzOlxcdFxcbjcwODQ6XFx0c3RhdGljIHZvaWQgX19tZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuNzA4NTpcXHR7XFxuNzA4NjpcXHRcXHRzdHJ1Y3QgbWRfcGVyc29uYWxpdHkgKnBlcnMgPSBtZGRldi1cXHUwMDNlcGVycztcXG43MDg3OlxcdFxcbjcwODg6XFx0XFx0bWRkZXZfZGV0YWNoKG1kZGV2KTtcXG43MDg5OlxcdFxcdG1kX2JpdG1hcF9kZXN0cm95KG1kZGV2KTtcXG43MDkwOlxcdFxcdHNwaW5fbG9jayhcXHUwMDI2bWRkZXYtXFx1MDAzZWxvY2spO1xcbjcwOTE6XFx0XFx0bWRkZXYtXFx1MDAzZXBlcnMgPSBOVUxMO1xcbjcwOTI6XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNm1kZGV2LVxcdTAwM2Vsb2NrKTtcXG43MDkzOlxcdFxcdGlmIChtZGRldi1cXHUwMDNlcHJpdmF0ZSlcXG43MDk0OlxcdFxcdFxcdHBlcnMtXFx1MDAzZWZyZWUobWRkZXYsIG1kZGV2LVxcdTAwM2Vwcml2YXRlKTtcXG43MDk1OlxcdFxcdG1kZGV2LVxcdTAwM2Vwcml2YXRlID0gTlVMTDtcXG43MDk2OlxcdFxcdHB1dF9wZXJzKHBlcnMpO1xcbjcwOTc6XFx0XFx0Y2xlYXJfYml0KE1EX1JFQ09WRVJZX0ZST1pFTiwgXFx1MDAyNm1kZGV2LVxcdTAwM2VyZWNvdmVyeSk7XFxuNzA5ODpcXHRcXG43MDk5OlxcdFxcdGlmIChtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcXG43MTAwOlxcdFxcdFxcdG1kZGV2LVxcdTAwM2VkZWx0YV9kaXNrcyA9IDA7XFxuNzEwMTpcXHRcXHRcXHRtZGRldi1cXHUwMDNlcmVzaGFwZV9iYWNrd2FyZHMgPSAwO1xcbjcxMDI6XFx0XFx0XFx0bWRkZXYtXFx1MDAzZW5ld19sZXZlbCA9IG1kZGV2LVxcdTAwM2VsZXZlbDtcXG43MTAzOlxcdFxcdFxcdG1kZGV2LVxcdTAwM2VuZXdfbGF5b3V0ID0gbWRkZXYtXFx1MDAzZWxheW91dDtcXG43MTA0OlxcdFxcdFxcdG1kZGV2LVxcdTAwM2VuZXdfY2h1bmtfc2VjdG9ycyA9IG1kZGV2LVxcdTAwM2VjaHVua19zZWN0b3JzO1xcbjcxMDU6XFx0XFx0fVxcbjcxMDY6XFx0fVxcbjcxMDc6XFx0XFxuNzEwODpcXHR2b2lkIG1kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcXG43MTA5OlxcdHtcXG43MTEwOlxcdFxcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNm1kZGV2LVxcdTAwM2VyZWNvbmZpZ19tdXRleCk7XFxuNzExMTpcXHRcXG43MTEyOlxcdFxcdC8qIHN0b3AgdGhlIGFycmF5IGFuZCBmcmVlIGFuIGF0dGFjaGVkIGRhdGEgc3RydWN0dXJlcy5cXG43MTEzOlxcdFxcdCAqIFRoaXMgaXMgY2FsbGVkIGZyb20gZG0tcmFpZFxcbjcxMTQ6XFx0XFx0ICovXFxuNzExNTpcXHRcXHRfX21kX3N0b3Bfd3JpdGVzKG1kZGV2KTtcXG43MTE2OlxcdFxcdF9fbWRfc3RvcChtZGRldik7XFxuNzExNzpcXHR9XFxuNzExODpcXHRcXG43MTE5OlxcdEVYUE9SVF9TWU1CT0xfR1BMKG1kX3N0b3ApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMjowMTowNy41NDE2MzY4M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDg0NjEyNDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2h5IHdhcyB0aGlzIGNoYW5nZSBldmVuIG5lY2Vzc2FyeT9cIi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgbW90aXZhdGlvbiBhbmQgdGhlIHByb2JsZW0gaXQncyB0cnlpbmcgdG8gc29sdmUuIEknbSBnb2luZyB0byBzdGFydCBieSBnb2luZyBzdHJhaWdodCB0byB0aGUgY29kZS4gSSdsbCByZWFjaCBmb3IgYGdyZXBgLCBiZWNhdXNlIEknbSBsb29raW5nIGZvciBzcGVjaWZpYyBrZXl3b3JkcyB0aGF0IHdpbGwgaW1tZWRpYXRlbHkgaWxsdW1pbmF0ZSB0aGUgY29udGV4dC4gVGhpbmdzIGxpa2UgYHJlc2hhcGVfcG9zaXRpb25gIG9yIGBuZXdfbGV2ZWxgIGFyZSBsaWtlbHkgY2FuZGlkYXRlcy4gSWYgSSBjYW4gZ2V0IG15IGhhbmRzIG9uIHRoZSBnaXQgbG9nLCB0aGF0J3MgaWRlYWw7IGNvbW1pdCBtZXNzYWdlcyBhcmUgdXN1YWxseSBnb2xkLiBJZiB0aG9zZSBxdWljayBzZWFyY2hlcyBmYWlsLCBJJ2xsIGJyb2FkZW4gbXkgc2NvcGUgYW5kIHN0YXJ0IGxvb2tpbmcgYXQgcmVsYXRlZCBjb21taXRzLCBvciBzdXJyb3VuZGluZyBmdW5jdGlvbnMuIEkgd2FudCB0byBidWlsZCBhIHF1aWNrIG1lbnRhbCBtYXAgb2YgdGhlIGNoYW5nZSdzIG9yaWdpbiBhbmQgcHVycG9zZS4gR290dGEgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4MSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDE6MDkuNjI2MjUyNDQ2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjU4NTMxMDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21kL21kLmM9MTYwND1zdGF0aWMgdm9pZCBzdXBlcl85MF9zeW5jKHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBtZF9yZGV2ICpyZGV2KVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jLTE2NDgtXFxuZHJpdmVycy9tZC9tZC5jOjE2NDk6XFx0aWYgKG1kZGV2LVxcdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcilcXG5kcml2ZXJzL21kL21kLmMtMTY1MC1cXHRcXHRzYi1cXHUwMDNlbWlub3JfdmVyc2lvbiA9IDkwO1xcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTQzNjg9bGF5b3V0X3N0b3JlKHN0cnVjdCBtZGRldiAqbWRkZXYsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy00MzkyLVxcdFxcdG1kZGV2LVxcdTAwM2VuZXdfbGF5b3V0ID0gbjtcXG5kcml2ZXJzL21kL21kLmM6NDM5MzpcXHRcXHRpZiAobWRkZXYtXFx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKVxcbmRyaXZlcnMvbWQvbWQuYy00Mzk0LVxcdFxcdFxcdG1kZGV2LVxcdTAwM2VsYXlvdXQgPSBuO1xcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTQ0ODE9Y2h1bmtfc2l6ZV9zdG9yZShzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXFxuLS1cXG5kcml2ZXJzL21kL21kLmMtNDUwNS1cXHRcXHRtZGRldi1cXHUwMDNlbmV3X2NodW5rX3NlY3RvcnMgPSBuIFxcdTAwM2VcXHUwMDNlIDk7XFxuZHJpdmVycy9tZC9tZC5jOjQ1MDY6XFx0XFx0aWYgKG1kZGV2LVxcdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcilcXG5kcml2ZXJzL21kL21kLmMtNDUwNy1cXHRcXHRcXHRtZGRldi1cXHUwMDNlY2h1bmtfc2VjdG9ycyA9IG4gXFx1MDAzZVxcdTAwM2UgOTtcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYz01MjQyPXN0YXRpYyBpbnQgbWRkZXZfc3RhcnRfcmVzaGFwZShzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jLTUyNDgtXFxuZHJpdmVycy9tZC9tZC5jOjUyNDk6XFx0aWYgKG1kZGV2LVxcdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvciB8fFxcbmRyaXZlcnMvbWQvbWQuYy01MjUwLVxcdCAgICBtZGRldi1cXHUwMDNlcGVycy1cXHUwMDNlY2hlY2tfcmVzaGFwZSA9PSBOVUxMIHx8XFxuLS1cXG5kcml2ZXJzL21kL21kLmM9NzA4ND1zdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy03MDk4LVxcbmRyaXZlcnMvbWQvbWQuYzo3MDk5OlxcdGlmIChtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcXG5kcml2ZXJzL21kL21kLmMtNzEwMC1cXHRcXHRtZGRldi1cXHUwMDNlZGVsdGFfZGlza3MgPSAwO1xcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTEwMjY0PXN0YXRpYyB2b2lkIG1kX3N0YXJ0X3N5bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3cylcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy0xMDI3NS1cXHQgKi9cXG5kcml2ZXJzL21kL21kLmM6MTAyNzY6XFx0aWYgKChtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IgfHwgIW1kX2lzX3Jkd3IobWRkZXYpKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbWQvbWQuYy0xMDI3Ny1cXHQgICAgbWRfc3BhcmVzX25lZWRfY2hhbmdlKG1kZGV2KSkge1xcbi0tXFxuZHJpdmVycy9tZC9tZC5jLTEwMjg4LVxcdCAqL1xcbmRyaXZlcnMvbWQvbWQuYzoxMDI4OTpcXHRpZiAoIXN1c3BlbmQgXFx1MDAyNlxcdTAwMjYgKG1kZGV2LVxcdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvciB8fCAhbWRfaXNfcmR3cihtZGRldikpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9tZC9tZC5jLTEwMjkwLVxcdCAgICBtZF9zcGFyZXNfbmVlZF9jaGFuZ2UobWRkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL21kL21kLmg9NjkwPXN0YXRpYyBpbmxpbmUgYm9vbCByZXNoYXBlX2ludGVycnVwdGVkKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuLS1cXG5kcml2ZXJzL21kL21kLmgtNjkyLVxcdC8qIHJlc2hhcGUgbmV2ZXIgc3RhcnQgKi9cXG5kcml2ZXJzL21kL21kLmg6NjkzOlxcdGlmIChtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpXFxuZHJpdmVycy9tZC9tZC5oLTY5NC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL21kL3JhaWQxMC5jPTMxNDE9c3RhdGljIHNlY3Rvcl90IHJhaWQxMF9zeW5jX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLFxcbi0tXFxuZHJpdmVycy9tZC9yYWlkMTAuYy0zMTU5LVxcdCAgICBtZGRldi1cXHUwMDNlcmVzeW5jX29mZnNldCA9PSBNYXhTZWN0b3IgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL21kL3JhaWQxMC5jOjMxNjA6XFx0ICAgIG1kZGV2LVxcdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvciBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbWQvcmFpZDEwLmMtMzE2MS1cXHQgICAgIXRlc3RfYml0KE1EX1JFQ09WRVJZX1NZTkMsIFxcdTAwMjZtZGRldi1cXHUwMDNlcmVjb3ZlcnkpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL21kL3JhaWQxMC5jPTM4Mjg9c3RhdGljIHN0cnVjdCByMTBjb25mICpzZXR1cF9jb25mKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuLS1cXG5kcml2ZXJzL21kL3JhaWQxMC5jLTM4NzQtXFx0Y2FsY19zZWN0b3JzKGNvbmYsIG1kZGV2LVxcdTAwM2VkZXZfc2VjdG9ycyk7XFxuZHJpdmVycy9tZC9yYWlkMTAuYzozODc1OlxcdGlmIChtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcXG5kcml2ZXJzL21kL3JhaWQxMC5jLTM4NzYtXFx0XFx0Y29uZi1cXHUwMDNlcHJldiA9IGNvbmYtXFx1MDAzZWdlbztcXG4tLVxcbmRyaXZlcnMvbWQvcmFpZDEwLmM9NDkyOD1zdGF0aWMgdm9pZCByYWlkMTBfdXBkYXRlX3Jlc2hhcGVfcG9zKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuLS1cXG5kcml2ZXJzL21kL3JhaWQxMC5jLTQ5MzQtXFx0aWYgKCgobWRkZXYtXFx1MDAzZXJlc2hhcGVfcG9zaXRpb24gXFx1MDAzYz0gaGkpIFxcdTAwMjZcXHUwMDI2IChtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiBcXHUwMDNlPSBsbykpXFxuZHJpdmVycy9tZC9yYWlkMTAuYzo0OTM1OlxcdCAgICB8fCBtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpXFxuZHJpdmVycy9tZC9yYWlkMTAuYy00OTM2LVxcdFxcdGNvbmYtXFx1MDAzZXJlc2hhcGVfcHJvZ3Jlc3MgPSBtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbjtcXG4tLVxcbmRyaXZlcnMvbWQvcmFpZDUuYz02MjE4PXN0YXRpYyBib29sIHJhaWQ1X21ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogYmkpXFxuLS1cXG5kcml2ZXJzL21kL3JhaWQ1LmMtNjI0OS1cXHRpZiAocncgPT0gUkVBRCBcXHUwMDI2XFx1MDAyNiBtZGRldi1cXHUwMDNlZGVncmFkZWQgPT0gMCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbWQvcmFpZDUuYzo2MjUwOlxcdCAgICBtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcXG5kcml2ZXJzL21kL3JhaWQ1LmMtNjI1MS1cXHRcXHRiaSA9IGNodW5rX2FsaWduZWRfcmVhZChtZGRldiwgYmkpO1xcbi0tXFxuZHJpdmVycy9tZC9yYWlkNS5jPTc2MzM9c3RhdGljIHN0cnVjdCByNWNvbmYgKnNldHVwX2NvbmYoc3RydWN0IG1kZGV2ICptZGRldilcXG4tLVxcbmRyaXZlcnMvbWQvcmFpZDUuYy03NzI1LVxcdGNvbmYtXFx1MDAzZXJhaWRfZGlza3MgPSBtZGRldi1cXHUwMDNlcmFpZF9kaXNrcztcXG5kcml2ZXJzL21kL3JhaWQ1LmM6NzcyNjpcXHRpZiAobWRkZXYtXFx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKVxcbmRyaXZlcnMvbWQvcmFpZDUuYy03NzI3LVxcdFxcdGNvbmYtXFx1MDAzZXByZXZpb3VzX3JhaWRfZGlza3MgPSBtZGRldi1cXHUwMDNlcmFpZF9kaXNrcztcXG4tLVxcbmRyaXZlcnMvbWQvcmFpZDUuYz04NDQ0PXN0YXRpYyBpbnQgcmFpZDVfYWRkX2Rpc2soc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IG1kX3JkZXYgKnJkZXYpXFxuLS1cXG5kcml2ZXJzL21kL3JhaWQ1LmMtODUwNy1cXHRcXHRpZiAodGVzdF9iaXQoV2FudFJlcGxhY2VtZW50LCBcXHUwMDI2dG1wLVxcdTAwM2VmbGFncykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL21kL3JhaWQ1LmM6ODUwODpcXHRcXHQgICAgbWRkZXYtXFx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9tZC9yYWlkNS5jLTg1MDktXFx0XFx0ICAgIHAtXFx1MDAzZXJlcGxhY2VtZW50ID09IE5VTEwpIHtcXG4tLVxcbmRyaXZlcnMvbWQvcmFpZDUuYz04NTg2PXN0YXRpYyBpbnQgY2hlY2tfcmVzaGFwZShzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxcbi0tXFxuZHJpdmVycy9tZC9yYWlkNS5jLTg1OTktXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9tZC9yYWlkNS5jOjg2MDA6XFx0aWYgKG1kZGV2LVxcdTAwM2VkZWx0YV9kaXNrcyBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgbWRkZXYtXFx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKSB7XFxuZHJpdmVycy9tZC9yYWlkNS5jLTg2MDEtXFx0XFx0LyogV2UgbWlnaHQgYmUgYWJsZSB0byBzaHJpbmssIGJ1dCB0aGUgZGV2aWNlcyBtdXN0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAxOjA5Ljg5MjExNzIxMloiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMzUxOTI1MzkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBBbmFseXNpcyBvZiBgX19tZF9zdG9wYCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgZGVhbGluZyB3aXRoIHRoZSBgX19tZF9zdG9wYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGhvdyBpdCBoYW5kbGVzIHRoZSByZXNldCBvZiByZXNoYXBlLXJlbGF0ZWQgcGFyYW1ldGVycyB3aXRoaW4gdGhlIGBtZGRldmAgc3RydWN0dXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uZmlybSBob3cgdGhpcyBpcyB3b3JraW5nIGFuZCBpZiB0aGlzIGV4cG9zZXMgYW55IHJpc2tzLlxuXG5UaGUgY3JpdGljYWwgY29uZGl0aW9uIGZvciB0aGlzIHJlc2V0IGlzIGBtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcmAsIHdoaWNoIGluZGljYXRlcyB0aGF0IGEgcmVzaGFwZSBvcGVyYXRpb24gaXNuJ3QgYWN0aXZlIG9yIHdhc24ndCBldmVuIHN0YXJ0ZWQuIFVuZGVyIHRoaXMgY29uZGl0aW9uLCB0aGUgcGF0Y2ggaXMgcmVzZXR0aW5nIGBkZWx0YV9kaXNrc2AsIGByZXNoYXBlX2JhY2t3YXJkc2AsIGBuZXdfbGV2ZWxgLCBgbmV3X2xheW91dGAsIGFuZCBgbmV3X2NodW5rX3NlY3RvcnNgLlxuXG5NeSBjb25jZXJuIGltbWVkaWF0ZWx5IHR1cm5zIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJcyB0aGVyZSBhbnkgcmlzayBoZXJlPyBBZnRlciBhIHF1aWNrIGNvZGUgcmV2aWV3LCBpdCBzZWVtcyBjbGVhciB0aGF0IGBtZGRldmAgaXMgYW4gZXhpc3RpbmcsIGhlYXAtYWxsb2NhdGVkIHN0cnVjdHVyZSwgbWVhbmluZyBpdHMgbWVtYmVycyBhcmUgbGlrZWx5IGFscmVhZHkgaW5pdGlhbGl6ZWQuIFRoZSBwYXRjaCBvdmVyd3JpdGVzIHNwZWNpZmljIGZpZWxkcyAqd2l0aGluKiB0aGF0IHN0cnVjdHVyZSB3aXRoIGVpdGhlciB6ZXJvIHZhbHVlcyBvciB2YWx1ZXMgdGFrZW4gZnJvbSBvdGhlciBhbHJlYWR5LWluaXRpYWxpemVkIGBtZGRldmAgZmllbGRzLiBObyBuZXcgbWVtb3J5IGlzIGJlaW5nIGFsbG9jYXRlZC4gSSdtIG5vdCBzZWVpbmcgYW55IHNjZW5hcmlvcyB3aGVyZSB1bmluaXRpYWxpemVkIGRhdGEgaXMgYmVpbmcgY29waWVkIHRvIHVzZXJzcGFjZSwgb3Igd2hlcmUgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgYXJlIGJlaW5nIHVzZWQgaW4gYW55IGJyYW5jaGluZyBsb2dpYy4gVGhpcyBwcmltYXJpbHkgc2VlbXMgdG8gYmUgYSBjbGVhbnVwIG9wZXJhdGlvbiB0byBlbnN1cmUgdGhhdCBzdGFsZSByZXNoYXBlIHBhcmFtZXRlcnMgYXJlbid0IGNhcnJpZWQgb3ZlciBhZnRlciBhbiBhcnJheSBzdG9wIGlmIGEgcmVzaGFwZSB3YXMgbmV2ZXIgYWN0dWFsbHkgZW5nYWdlZC5cblxuR2l2ZW4gdGhhdCwgSSBkb24ndCBzZWUgYW55IG9idmlvdXMgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCB0cmlnZ2VyIEtNU0FOLiBXZSdyZSBub3Qgc2VuZGluZyBrZXJuZWwgc3RydWN0dXJlcyB0byB1c2Vyc3BhY2UsIHdlIGFyZW4ndCB1c2luZyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBhbnkgZGVjaXNpb24gcG9pbnRzLCB0aGVyZSBhcmUgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyBnb2luZyBvbiB3aXRob3V0IGluaXRpYWxpemF0aW9uLCBhbmQgdGhlIHBhdGNoIGlzbid0IG1vZGlmeWluZyBib3VuZHMgb3IgbGVuZ3RocyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuVG8gYmUgY29tcGxldGVseSB0aG9yb3VnaCwgbGV0J3MgY29udHJhc3QgS0FTQU4gYW5kIEtNU0FOLiBUaGlzIHBhdGNoIGZvY3VzZXMgb24gcmVzZXR0aW5nIHJlc2hhcGUtcmVsYXRlZCBmaWVsZHMgd2l0aGluIGBtZGRldmAuIFRoZSBtb2RpZmljYXRpb25zIGFyZSBzb2xlbHkgd2l0aGluIHRoZSBgc3RydWN0IG1kZGV2YCwgYW5kIHRoZXNlIGZpZWxkcyBhcmUgYXNzaWduZWQgZWl0aGVyIGNvbnN0YW50IHplcm9lcyBvciB2YWx1ZXMgZGVyaXZlZCBmcm9tIGFscmVhZHkgaW5pdGlhbGl6ZWQgZmllbGRzIHdpdGhpbiBgbWRkZXZgLiBUaGVyZSBhcmUgbm8gbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlcnMsIGRhdGEgbGVha3MgdG8gdXNlcnNwYWNlLCB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgdmFyaWFibGVzLCBvciBhbnkgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBQb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIGFycmF5IGxpZmVjeWNsZSBtYW5hZ2VtZW50LCBzdGF0ZSB0cmFuc2l0aW9ucywgb3IgbWVtb3J5IHNhZmV0eSwgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIG9yIGxvY2tpbmcgaXNzdWVzLCB3b3VsZCBmYWxsIHVuZGVyIHRoZSBzY29wZSBvZiBLQVNBTi9MT0NLREVQLCBub3QgS01TQU4uIFRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgY2xlYXJseSBLTVNBTi1zYWZlLlxuXG5BbHJpZ2h0LCB0aGF0IGNvdmVycyBpdC4gSSdtIGNvbWZvcnRhYmxlIHdpdGggdGhlIEtNU0FOIGFzcGVjdHMuIExldCdzIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NzcsIk91dHB1dFRva2VucyI6MTc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAxOjIzLjQxMTM3NTQzOFoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWRfc3RvcCgpYCBpbiBgZHJpdmVycy9tZC9tZC5jYCB0byByZXNldCByZXNoYXBlIGNvbmZpZ3VyYXRpb24gZmllbGRzIChgZGVsdGFfZGlza3NgLCBgcmVzaGFwZV9iYWNrd2FyZHNgLCBgbmV3X2xldmVsYCwgYG5ld19sYXlvdXRgLCBgbmV3X2NodW5rX3NlY3RvcnNgKSBpbiBgc3RydWN0IG1kZGV2YCB3aGVuIHN0b3BwaW5nIGFuIG1kIGFycmF5IHdoZXJlIGByZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcmAuXFxuXFxuQWxsIGFzc2lnbmVkIHZhbHVlcyBhcmUgZWl0aGVyIGNvbnN0YW50IHplcm9lcyBvciBkZXJpdmVkIGZyb20gZXhpc3RpbmcsIGluaXRpYWxpemVkIGZpZWxkcyBvZiBgbWRkZXZgLiBUaGUgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGRvZXMgbm90IGFsdGVyIGNvcHktdG8tdXNlciBvcGVyYXRpb25zLCBhbmQgZG9lcyBub3QgYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHdhcnJhbnQgYSBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWRfc3RvcCgpYCBpbiBgZHJpdmVycy9tZC9tZC5jYCB0byByZXNldCByZXNoYXBlIGNvbmZpZ3VyYXRpb24gZmllbGRzIChgZGVsdGFfZGlza3NgLCBgcmVzaGFwZV9iYWNrd2FyZHNgLCBgbmV3X2xldmVsYCwgYG5ld19sYXlvdXRgLCBgbmV3X2NodW5rX3NlY3RvcnNgKSBpbiBgc3RydWN0IG1kZGV2YCB3aGVuIHN0b3BwaW5nIGFuIG1kIGFycmF5IHdoZXJlIGByZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcmAuXFxuXFxuQWxsIGFzc2lnbmVkIHZhbHVlcyBhcmUgZWl0aGVyIGNvbnN0YW50IHplcm9lcyBvciBkZXJpdmVkIGZyb20gZXhpc3RpbmcsIGluaXRpYWxpemVkIGZpZWxkcyBvZiBgbWRkZXZgLiBUaGUgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGRvZXMgbm90IGFsdGVyIGNvcHktdG8tdXNlciBvcGVyYXRpb25zLCBhbmQgZG9lcyBub3QgYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHdhcnJhbnQgYSBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowp94ht[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-09 21:58:58 +0000 UTC FinishedAt: 2026-09-09 22:01:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_MD", "MD_RAID456", "MD_RAID10" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_MD", "MD_RAID456", "MD_RAID10" ], "series_id": "601948d0-5cb5-4e95-9dac-538b86534e9e" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__md_stop", "do_md_stop", "md_stop" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTUQmIzM0OywKICAgICYjMzQ7TURfUkFJRDQ1NiYjMzQ7LAogICAgJiMzNDtNRF9SQUlEMTAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX21kX3N0b3AmIzM0OywKICAgICYjMzQ7ZG9fbWRfc3RvcCYjMzQ7LAogICAgJiMzNDttZF9zdG9wJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWRfc3RvcCgpYCBpbiBgZHJpdmVycy9tZC9tZC5jYCB0byByZXNldCByZXNoYXBlIGNvbmZpZ3VyYXRpb24gZmllbGRzIChgZGVsdGFfZGlza3NgLCBgcmVzaGFwZV9iYWNrd2FyZHNgLCBgbmV3X2xldmVsYCwgYG5ld19sYXlvdXRgLCBgbmV3X2NodW5rX3NlY3RvcnNgKSBpbiBgc3RydWN0IG1kZGV2YCB3aGVuIHN0b3BwaW5nIGFuIG1kIGFycmF5IHdoZXJlIGByZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcmAuXG5cbkFsbCBhc3NpZ25lZCB2YWx1ZXMgYXJlIGVpdGhlciBjb25zdGFudCB6ZXJvZXMgb3IgZGVyaXZlZCBmcm9tIGV4aXN0aW5nLCBpbml0aWFsaXplZCBmaWVsZHMgb2YgYG1kZGV2YC4gVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBkYXRhLCBkb2VzIG5vdCBhbHRlciBjb3B5LXRvLXVzZXIgb3BlcmF0aW9ucywgYW5kIGRvZXMgbm90IGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCB3YXJyYW50IGEgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBfX21kX3N0b3AoKSBpbiB0aGUgTUQgKE11bHRpcGxlIERldmljZXMgLyBTb2Z0d2FyZSBSQUlEKSBkcml2ZXIgdG8gcmVzZXQgcmVzaGFwZSBzdGF0ZSAoZGVsdGFfZGlza3MsIHJlc2hhcGVfYmFja3dhcmRzLCBuZXdfbGV2ZWwsIG5ld19sYXlvdXQsIG5ld19jaHVua19zZWN0b3JzKSB3aGVuIHN0b3BwaW5nIGFuIGFycmF5IGFmdGVyIGEgcmVzaGFwZSBvcGVyYXRpb24gaGFzIGZpbmlzaGVkIChyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcikuIFRoaXMgY29kZSBpcyBmdWxseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtZCBpb2N0bCAoZS5nLiwgU1RPUF9BUlJBWSksIHN5c2ZzIGFycmF5X3N0YXRlIGF0dHJpYnV0ZXMsIG9yIGRtLXJhaWQgdGVhcmRvd24sIGFuZCB3YXJyYW50cyBmdXp6aW5nIGZvciBwb3RlbnRpYWwgc3RhdGUgbWFuYWdlbWVudCByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkYzZhZWMzNzRjMDQ3ZThhMjIwYWUxZGY3Y2VmZjkzMzg3ZGE5MjZkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAyMjowMDoxOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL21kLmMgYi9kcml2ZXJzL21kL21kLmNcbmluZGV4IDY4MGIzNGE2M2NiM2QuLjM4YWI0MWJiY2QwZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21kL21kLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWQvbWQuY1xuQEAgLTcwOTUsNiAmIzQzOzcwOTUsMTQgQEAgc3RhdGljIHZvaWQgX19tZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4gXHRtZGRldi1cdTAwM2Vwcml2YXRlID0gTlVMTDtcbiBcdHB1dF9wZXJzKHBlcnMpO1xuIFx0Y2xlYXJfYml0KE1EX1JFQ09WRVJZX0ZST1pFTiwgXHUwMDI2bWRkZXYtXHUwMDNlcmVjb3ZlcnkpO1xuJiM0MztcbiYjNDM7XHRpZiAobWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcbiYjNDM7XHRcdG1kZGV2LVx1MDAzZWRlbHRhX2Rpc2tzID0gMDtcbiYjNDM7XHRcdG1kZGV2LVx1MDAzZXJlc2hhcGVfYmFja3dhcmRzID0gMDtcbiYjNDM7XHRcdG1kZGV2LVx1MDAzZW5ld19sZXZlbCA9IG1kZGV2LVx1MDAzZWxldmVsO1xuJiM0MztcdFx0bWRkZXYtXHUwMDNlbmV3X2xheW91dCA9IG1kZGV2LVx1MDAzZWxheW91dDtcbiYjNDM7XHRcdG1kZGV2LVx1MDAzZW5ld19jaHVua19zZWN0b3JzID0gbWRkZXYtXHUwMDNlY2h1bmtfc2VjdG9ycztcbiYjNDM7XHR9XG4gfVxuIFxuIHZvaWQgbWRfc3RvcChzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTUQmIzM0OywKICAgICYjMzQ7TURfUkFJRDQ1NiYjMzQ7LAogICAgJiMzNDtNRF9SQUlEMTAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX21kX3N0b3AmIzM0OywKICAgICYjMzQ7ZG9fbWRfc3RvcCYjMzQ7LAogICAgJiMzNDttZF9zdG9wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIF9fbWRfc3RvcCgpIGluIHRoZSBNRCAoTXVsdGlwbGUgRGV2aWNlcyAvIFNvZnR3YXJlIFJBSUQpIGRyaXZlciB0byByZXNldCByZXNoYXBlIHN0YXRlIChkZWx0YV9kaXNrcywgcmVzaGFwZV9iYWNrd2FyZHMsIG5ld19sZXZlbCwgbmV3X2xheW91dCwgbmV3X2NodW5rX3NlY3RvcnMpIHdoZW4gc3RvcHBpbmcgYW4gYXJyYXkgYWZ0ZXIgYSByZXNoYXBlIG9wZXJhdGlvbiBoYXMgZmluaXNoZWQgKHJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKS4gVGhpcyBjb2RlIGlzIGZ1bGx5IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1kIGlvY3RsIChlLmcuLCBTVE9QX0FSUkFZKSwgc3lzZnMgYXJyYXlfc3RhdGUgYXR0cmlidXRlcywgb3IgZG0tcmFpZCB0ZWFyZG93biwgYW5kIHdhcnJhbnRzIGZ1enppbmcgZm9yIHBvdGVudGlhbCBzdGF0ZSBtYW5hZ2VtZW50IHJlZ3Jlc3Npb25zIG9yIHJhY2UgY29uZGl0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRjNmFlYzM3NGMwNDdlOGEyMjBhZTFkZjdjZWZmOTMzODdkYTkyNmQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDIyOjAwOjE5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9tZC5jIGIvZHJpdmVycy9tZC9tZC5jCmluZGV4IDY4MGIzNGE2M2NiM2QuLjM4YWI0MWJiY2QwZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21kL21kLmMKQEAgLTcwOTUsNiAmIzQzOzcwOTUsMTQgQEAgc3RhdGljIHZvaWQgX19tZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpCiAJbWRkZXYtJmd0O3ByaXZhdGUgPSBOVUxMOwogCXB1dF9wZXJzKHBlcnMpOwogCWNsZWFyX2JpdChNRF9SRUNPVkVSWV9GUk9aRU4sICZhbXA7bWRkZXYtJmd0O3JlY292ZXJ5KTsKJiM0MzsKJiM0MzsJaWYgKG1kZGV2LSZndDtyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcikgewomIzQzOwkJbWRkZXYtJmd0O2RlbHRhX2Rpc2tzID0gMDsKJiM0MzsJCW1kZGV2LSZndDtyZXNoYXBlX2JhY2t3YXJkcyA9IDA7CiYjNDM7CQltZGRldi0mZ3Q7bmV3X2xldmVsID0gbWRkZXYtJmd0O2xldmVsOwomIzQzOwkJbWRkZXYtJmd0O25ld19sYXlvdXQgPSBtZGRldi0mZ3Q7bGF5b3V0OwomIzQzOwkJbWRkZXYtJmd0O25ld19jaHVua19zZWN0b3JzID0gbWRkZXYtJmd0O2NodW5rX3NlY3RvcnM7CiYjNDM7CX0KIH0KIAogdm9pZCBtZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MjAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGFuZCBDb250ZXh0KioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBhbmQgdGhlIGFzc29jaWF0ZWQgdGFzay4gVGhlIGZhY3QgdGhhdCB0aGUgY2hhbmdlIHRhcmdldHMgYGRyaXZlcnMvbWQvbWQuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBfX21kX3N0b3AoKWAgZnVuY3Rpb24sIGltbWVkaWF0ZWx5IHNldHMgbXkgYW5hbHl0aWNhbCB3aGVlbHMgdHVybmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjb2RlJiMzOTtzIGZ1bmN0aW9uYWxpdHksIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLCBhbmQgYWNjZXNzaWJpbGl0eSBiZWZvcmUgZ2V0dGluZyBpbnRvIHRoZSBkZXRhaWxzLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpdGhpbiBgX19tZF9zdG9wKClgLiBJJiMzOTtsbCB1c2UgYSBgcmVhZC1maWxlYCBjb21tYW5kIHRvIGxvb2sgZGlyZWN0bHkgYXQgdGhlIGNvZGUgYXJvdW5kIGxpbmUgNzA5NSBpbiBgZHJpdmVycy9tZC9tZC5jYC4gVGhpcyB3aWxsIGFsbG93IG1lIHRvIHF1aWNrbHkgYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoZSBmdW5jdGlvbiYjMzk7cyBwdXJwb3NlLCB0aGUgdmFyaWFibGVzIGl0IG9wZXJhdGVzIG9uLCBhbmQgcG90ZW50aWFsIGNvbnRyb2wgZmxvdyBwYXRocy4gVW5kZXJzdGFuZGluZyB0aGUgbG9jYWwgY29udGV4dCwgcG90ZW50aWFsIHN5bWJvbHMsIGFuZCBjb25maWd1cmF0aW9ucyB3aWxsIGJlIGtleSB0byB0aG9yb3VnaGx5IHVuZGVyc3RhbmRpbmcgdGhpcyBwYXRjaCYjMzk7cyBpbXBhY3QuIEkgd2FudCB0byBidWlsZCBhIHNvbGlkIGZvdW5kYXRpb24gYmVmb3JlIGRpdmluZyBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21kL21kLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzcwODA6XHRcdGlmICghbWRkZXZfaXNfZG0obWRkZXYpKVxuNzA4MTpcdFx0XHRibGtfc3luY19xdWV1ZShtZGRldi1cdTAwM2VnZW5kaXNrLVx1MDAzZXF1ZXVlKTtcbjcwODI6XHR9XG43MDgzOlx0XG43MDg0Olx0c3RhdGljIHZvaWQgX19tZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpXG43MDg1Olx0e1xuNzA4NjpcdFx0c3RydWN0IG1kX3BlcnNvbmFsaXR5ICpwZXJzID0gbWRkZXYtXHUwMDNlcGVycztcbjcwODc6XHRcbjcwODg6XHRcdG1kZGV2X2RldGFjaChtZGRldik7XG43MDg5Olx0XHRtZF9iaXRtYXBfZGVzdHJveShtZGRldik7XG43MDkwOlx0XHRzcGluX2xvY2soXHUwMDI2bWRkZXYtXHUwMDNlbG9jayk7XG43MDkxOlx0XHRtZGRldi1cdTAwM2VwZXJzID0gTlVMTDtcbjcwOTI6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNm1kZGV2LVx1MDAzZWxvY2spO1xuNzA5MzpcdFx0aWYgKG1kZGV2LVx1MDAzZXByaXZhdGUpXG43MDk0Olx0XHRcdHBlcnMtXHUwMDNlZnJlZShtZGRldiwgbWRkZXYtXHUwMDNlcHJpdmF0ZSk7XG43MDk1Olx0XHRtZGRldi1cdTAwM2Vwcml2YXRlID0gTlVMTDtcbjcwOTY6XHRcdHB1dF9wZXJzKHBlcnMpO1xuNzA5NzpcdFx0Y2xlYXJfYml0KE1EX1JFQ09WRVJZX0ZST1pFTiwgXHUwMDI2bWRkZXYtXHUwMDNlcmVjb3ZlcnkpO1xuNzA5ODpcdFxuNzA5OTpcdFx0aWYgKG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKSB7XG43MTAwOlx0XHRcdG1kZGV2LVx1MDAzZWRlbHRhX2Rpc2tzID0gMDtcbjcxMDE6XHRcdFx0bWRkZXYtXHUwMDNlcmVzaGFwZV9iYWNrd2FyZHMgPSAwO1xuNzEwMjpcdFx0XHRtZGRldi1cdTAwM2VuZXdfbGV2ZWwgPSBtZGRldi1cdTAwM2VsZXZlbDtcbjcxMDM6XHRcdFx0bWRkZXYtXHUwMDNlbmV3X2xheW91dCA9IG1kZGV2LVx1MDAzZWxheW91dDtcbjcxMDQ6XHRcdFx0bWRkZXYtXHUwMDNlbmV3X2NodW5rX3NlY3RvcnMgPSBtZGRldi1cdTAwM2VjaHVua19zZWN0b3JzO1xuNzEwNTpcdFx0fVxuNzEwNjpcdH1cbjcxMDc6XHRcbjcxMDg6XHR2b2lkIG1kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcbjcxMDk6XHR7XG43MTEwOlx0XHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNm1kZGV2LVx1MDAzZXJlY29uZmlnX211dGV4KTtcbjcxMTE6XHRcbjcxMTI6XHRcdC8qIHN0b3AgdGhlIGFycmF5IGFuZCBmcmVlIGFuIGF0dGFjaGVkIGRhdGEgc3RydWN0dXJlcy5cbjcxMTM6XHRcdCAqIFRoaXMgaXMgY2FsbGVkIGZyb20gZG0tcmFpZFxuNzExNDpcdFx0ICovXG43MTE1Olx0XHRfX21kX3N0b3Bfd3JpdGVzKG1kZGV2KTtcbjcxMTY6XHRcdF9fbWRfc3RvcChtZGRldik7XG43MTE3Olx0fVxuNzExODpcdFxuNzExOTpcdEVYUE9SVF9TWU1CT0xfR1BMKG1kX3N0b3ApO1xuNzEyMDpcdFxuNzEyMTpcdC8qIGVuc3VyZSAmIzM5O21kZGV2LVx1MDAzZXBlcnMmIzM5OyBleGlzdCBiZWZvcmUgY2FsbGluZyBtZF9zZXRfcmVhZG9ubHkoKSAqL1xuNzEyMjpcdHN0YXRpYyBpbnQgbWRfc2V0X3JlYWRvbmx5KHN0cnVjdCBtZGRldiAqbWRkZXYpXG43MTIzOlx0e1xuNzEyNDpcdFx0aW50IGVyciA9IDA7XG43MTI1Olx0XHRpbnQgZGlkX2ZyZWV6ZSA9IDA7XG43MTI2Olx0XG43MTI3Olx0XHRpZiAobWRkZXYtXHUwMDNlZXh0ZXJuYWwgXHUwMDI2XHUwMDI2IHRlc3RfYml0KE1EX1NCX0NIQU5HRV9QRU5ESU5HLCBcdTAwMjZtZGRldi1cdTAwM2VzYl9mbGFncykpXG43MTI4Olx0XHRcdHJldHVybiAtRUJVU1k7XG43MTI5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5OQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBfX21kX3N0b3BgIEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdW5kZXJzdGFuZGluZyB0aGUgbGlmZWN5Y2xlIG9mIHRoaXMgYF9fbWRfc3RvcGAgZnVuY3Rpb24sIG9yIGFueSB2YXJpYXRpb24gb2YgaXQuIFdoZXJlIGlzIGl0IGJlaW5nIGNhbGxlZD8gTW9yZSBpbXBvcnRhbnRseSwgd2hhdCYjMzk7cyAqdXNpbmcqIGl0LCBwZXJoYXBzIGluZGlyZWN0bHk/IFRpbWUgdG8gZ2V0IHRvIHRoZSBzb3VyY2UgY29kZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBmb2N1c2VkIHNlYXJjaCB3aXRoaW4gdGhlIGBkcml2ZXJzL21kL21kLmNgIGZpbGUuIFRoaXMgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciBSQUlELXJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgc2VhcmNoIGZvciBpbnN0YW5jZXMgb2YgYF9fbWRfc3RvcGAgd2l0aGluIHRoYXQgZmlsZSB0byB0cmFjZSBpdHMgdXNlIGFuZCBmaWd1cmUgb3V0IGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19tZF9zdG9wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZC9tZC5jPTY5Njc9c3RhdGljIHZvaWQgbWRfY2xlYW4oc3RydWN0IG1kZGV2ICptZGRldilcbi0tXG5kcml2ZXJzL21kL21kLmMtNzAzMS1cbmRyaXZlcnMvbWQvbWQuYzo3MDMyOnN0YXRpYyB2b2lkIF9fbWRfc3RvcF93cml0ZXMoc3RydWN0IG1kZGV2ICptZGRldilcbmRyaXZlcnMvbWQvbWQuYy03MDMzLXtcbi0tXG5kcml2ZXJzL21kL21kLmM9NzA1OT12b2lkIG1kX3N0b3Bfd3JpdGVzKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9tZC5jLTcwNjMtXHRzdG9wX3N5bmNfdGhyZWFkKG1kZGV2LCB0cnVlKTtcbmRyaXZlcnMvbWQvbWQuYzo3MDY0Olx0X19tZF9zdG9wX3dyaXRlcyhtZGRldik7XG5kcml2ZXJzL21kL21kLmMtNzA2NS1cdG1kZGV2X3VubG9jayhtZGRldik7XG4tLVxuZHJpdmVycy9tZC9tZC5jPTcwNjk9c3RhdGljIHZvaWQgbWRkZXZfZGV0YWNoKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9tZC5jLTcwODMtXG5kcml2ZXJzL21kL21kLmM6NzA4NDpzdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcbmRyaXZlcnMvbWQvbWQuYy03MDg1LXtcbi0tXG5kcml2ZXJzL21kL21kLmM9NzEwOD12b2lkIG1kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcbi0tXG5kcml2ZXJzL21kL21kLmMtNzExNC1cdCAqL1xuZHJpdmVycy9tZC9tZC5jOjcxMTU6XHRfX21kX3N0b3Bfd3JpdGVzKG1kZGV2KTtcbmRyaXZlcnMvbWQvbWQuYzo3MTE2Olx0X19tZF9zdG9wKG1kZGV2KTtcbmRyaXZlcnMvbWQvbWQuYy03MTE3LX1cbi0tXG5kcml2ZXJzL21kL21kLmM9NzEyMj1zdGF0aWMgaW50IG1kX3NldF9yZWFkb25seShzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxuLS1cbmRyaXZlcnMvbWQvbWQuYy03MTQ1LVxuZHJpdmVycy9tZC9tZC5jOjcxNDY6XHRfX21kX3N0b3Bfd3JpdGVzKG1kZGV2KTtcbmRyaXZlcnMvbWQvbWQuYy03MTQ3LVxuLS1cbmRyaXZlcnMvbWQvbWQuYz03MTcwPXN0YXRpYyBpbnQgZG9fbWRfc3RvcChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBpbnQgbW9kZSlcbi0tXG5kcml2ZXJzL21kL21kLmMtNzE5OS1cbmRyaXZlcnMvbWQvbWQuYzo3MjAwOlx0XHRfX21kX3N0b3Bfd3JpdGVzKG1kZGV2KTtcbmRyaXZlcnMvbWQvbWQuYzo3MjAxOlx0XHRfX21kX3N0b3AobWRkZXYpO1xuZHJpdmVycy9tZC9tZC5jLTcyMDItXG4tLVxuZHJpdmVycy9tZC9tZC5jPTEwNzIyPXN0YXRpYyBpbnQgbWRfbm90aWZ5X3JlYm9vdChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsXG4tLVxuZHJpdmVycy9tZC9tZC5jLTEwNzMzLVx0XHRcdGlmIChtZGRldi1cdTAwM2VwZXJzKVxuZHJpdmVycy9tZC9tZC5jOjEwNzM0Olx0XHRcdFx0X19tZF9zdG9wX3dyaXRlcyhtZGRldik7XG5kcml2ZXJzL21kL21kLmMtMTA3MzUtXHRcdFx0aWYgKG1kZGV2LVx1MDAzZXBlcnNpc3RlbnQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkzMAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHdoYXQgSSYjMzk7bSBzZWVpbmc6CgoqKkFuYWx5emluZyB0aGUgYF9fbWRfc3RvcGAgQ2FsbCBDaGFpbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhlIGBfX21kX3N0b3BgIGZ1bmN0aW9uIGlzIGJlaW5nIHRyaWdnZXJlZC4gSXQmIzM5O3MgY2xlYXIgdGhhdCBpdCYjMzk7cyBiZWluZyBjYWxsZWQgaW5kaXJlY3RseSwgc3BlY2lmaWNhbGx5IHRocm91Z2ggYG1kX3N0b3BgIGFuZCBgZG9fbWRfc3RvcGAuIE15IG5leHQgc3RlcCBpcyB0byBwaW5wb2ludCB0aGUgZXhhY3QgbG9jYXRpb25zIHRoYXQgaW5pdGlhdGUgYSBzdG9wLiBJIGtub3cgdGhhdCBgZG9fbWRfc3RvcGAgaXMgYSBrZXkgZnVuY3Rpb24gdG8gZXhhbWluZSBhcyB0aGF0IHNlZW1zIHRvIGJlIHdoZXJlIHRoZSByZWFsIHdvcmsgb2Ygc3RvcHBpbmcgdGhlIGFycmF5IGlzIGNhcnJpZWQgb3V0LiAKCkZyb20gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoYXQgYGRvX21kX3N0b3BgIGFwcGVhcnMgdG8gYmUgbGlua2VkIHRvIHRoZSBkZXZpY2UgbWFwcGVyIGludGVyZmFjZSwgbWVhbmluZyB0aGF0IGl0IGlzIGxpbmtlZCB0byB0aGluZ3MgbGlrZSBgU1RPUF9BUlJBWWAgYW5kIGBTVE9QX0FSUkFZX1JPYCBpb2N0bHMuIEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCB3aGVuIEkgYW5hbHl6ZSBob3cgdGhlc2UgdHJpZ2dlcnMgYXJlIGFjdGl2YXRlZC4gSSBhbHNvIG5lZWQgdG8gY2hlY2sgdGhlIHN5c2ZzIGBhcnJheV9zdGF0ZWAgc3RvcmUgYXMgdGhhdCBhbHNvIGNvdWxkIHRyaWdnZXIgdGhlIGNhbGxzIHRoYXQgaW50ZXJlc3QgbWUuCgpMZXQmIzM5O3MgdHJhY2UgYWxsIGNhbGxzIHRvIGBkb19tZF9zdG9wYCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG9fbWRfc3RvcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWQvbWQuYz02Mzg9c3RhdGljIHZvaWQgX19tZGRldl9wdXQoc3RydWN0IG1kZGV2ICptZGRldilcbi0tXG5kcml2ZXJzL21kL21kLmMtNjQ1LVx0ICogSWYgYXJyYXkgaXMgZnJlZWQgYnkgc3RvcHBpbmcgYXJyYXksIE1EX0RFTEVURUQgaXMgc2V0IGJ5XG5kcml2ZXJzL21kL21kLmM6NjQ2Olx0ICogZG9fbWRfc3RvcCgpLCBNRF9ERUxFVEVEIGlzIHN0aWxsIHNldCBoZXJlIGluIGNhc2UgbWRkZXYgaXMgZnJlZWRcbmRyaXZlcnMvbWQvbWQuYy02NDctXHQgKiBkaXJlY3RseSBieSBjbG9zaW5nIGEgbWRkZXYgdGhhdCBpcyBjcmVhdGVkIGJ5IGNyZWF0ZV9vbl9vcGVuLlxuLS1cbmRyaXZlcnMvbWQvbWQuYz05MTU9dm9pZCBtZGRldl91bmxvY2soc3RydWN0IG1kZGV2ICptZGRldilcbi0tXG5kcml2ZXJzL21kL21kLmMtOTc3LVx0XHQgKiBBbmQgTURfREVMRVRFRCBpcyBvbmx5IHVzZWQgZm9yIG1kIHJhaWQgd2hpY2ggaXMgc2V0IGluXG5kcml2ZXJzL21kL21kLmM6OTc4Olx0XHQgKiBkb19tZF9zdG9wLiBkbSByYWlkIG9ubHkgdXNlcyBtZF9zdG9wIHRvIHN0b3AuIFNvIGRtIHJhaWRcbmRyaXZlcnMvbWQvbWQuYy05NzktXHRcdCAqIGRvZXNuJiMzOTt0IG5lZWQgdG8gY2hlY2sgTURfREVMRVRFRCB3aGVuIGdldHRpbmcgcmVjb25maWcgbG9ja1xuLS1cbmRyaXZlcnMvbWQvbWQuYz00NjEzPWFycmF5X3N0YXRlX3Nob3coc3RydWN0IG1kZGV2ICptZGRldiwgY2hhciAqcGFnZSlcbi0tXG5kcml2ZXJzL21kL21kLmMtNDY1MC1cbmRyaXZlcnMvbWQvbWQuYzo0NjUxOnN0YXRpYyBpbnQgZG9fbWRfc3RvcChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBpbnQgcm8pO1xuZHJpdmVycy9tZC9tZC5jLTQ2NTItc3RhdGljIGludCBtZF9zZXRfcmVhZG9ubHkoc3RydWN0IG1kZGV2ICptZGRldik7XG4tLVxuZHJpdmVycy9tZC9tZC5jPTQ2NTY9YXJyYXlfc3RhdGVfc3RvcmUoc3RydWN0IG1kZGV2ICptZGRldiwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbWQvbWQuYy00NzEyLVx0XHRpZiAobWRkZXYtXHUwMDNlcGVycylcbmRyaXZlcnMvbWQvbWQuYzo0NzEzOlx0XHRcdGVyciA9IGRvX21kX3N0b3AobWRkZXYsIDIpO1xuZHJpdmVycy9tZC9tZC5jLTQ3MTQtXHRcdGJyZWFrO1xuZHJpdmVycy9tZC9tZC5jLTQ3MTUtXHRjYXNlIGNsZWFyOlxuZHJpdmVycy9tZC9tZC5jOjQ3MTY6XHRcdGVyciA9IGRvX21kX3N0b3AobWRkZXYsIDApO1xuZHJpdmVycy9tZC9tZC5jLTQ3MTctXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbWQvbWQuYz03MTIyPXN0YXRpYyBpbnQgbWRfc2V0X3JlYWRvbmx5KHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9tZC5jLTcxNjktICovXG5kcml2ZXJzL21kL21kLmM6NzE3MDpzdGF0aWMgaW50IGRvX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldiwgaW50IG1vZGUpXG5kcml2ZXJzL21kL21kLmMtNzE3MS17XG4tLVxuZHJpdmVycy9tZC9tZC5jPTcyNDI9c3RhdGljIHZvaWQgYXV0b3J1bl9hcnJheShzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxuLS1cbmRyaXZlcnMvbWQvbWQuYy03MjU5LVx0XHRwcl93YXJuKFwmIzM0O21kOiBkb19tZF9ydW4oKSByZXR1cm5lZCAlZFxcblwmIzM0OywgZXJyKTtcbmRyaXZlcnMvbWQvbWQuYzo3MjYwOlx0XHRkb19tZF9zdG9wKG1kZGV2LCAwKTtcbmRyaXZlcnMvbWQvbWQuYy03MjYxLVx0fVxuLS1cbmRyaXZlcnMvbWQvbWQuYz04MzUwPXN0YXRpYyBpbnQgbWRfaW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuLS1cbmRyaXZlcnMvbWQvbWQuYy04NDQzLVx0Y2FzZSBTVE9QX0FSUkFZOlxuZHJpdmVycy9tZC9tZC5jOjg0NDQ6XHRcdGVyciA9IGRvX21kX3N0b3AobWRkZXYsIDApO1xuZHJpdmVycy9tZC9tZC5jLTg0NDUtXHRcdGdvdG8gdW5sb2NrO1xuLS1cbmRyaXZlcnMvbWQvbWQuaD00MDc9c3RydWN0IG1kZGV2IHtcbi0tXG5kcml2ZXJzL21kL21kLmgtNTE0LVx0aW50XHRcdFx0XHRpbl9zeW5jO1x0Lyoga25vdyB0byBub3QgbmVlZCByZXN5bmMgKi9cbmRyaXZlcnMvbWQvbWQuaDo1MTU6XHQvKiAmIzM5O29wZW5fbXV0ZXgmIzM5OyBhdm9pZHMgcmFjZXMgYmV0d2VlbiAmIzM5O21kX29wZW4mIzM5OyBhbmQgJiMzOTtkb19tZF9zdG9wJiMzOTssIHNvXG5kcml2ZXJzL21kL21kLmgtNTE2LVx0ICogdGhhdCB3ZSBhcmUgbmV2ZXIgc3RvcHBpbmcgYW4gYXJyYXkgd2hpbGUgaXQgaXMgb3Blbi5cbi0tXG5kcml2ZXJzL21kL21kLmg9NzA5PXN0YXRpYyBpbmxpbmUgaW50IF9fbXVzdF9jaGVjayBtZGRldl9sb2NrKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9tZC5oLTcxNC1cbmRyaXZlcnMvbWQvbWQuaDo3MTU6XHQvKiBNRF9ERUxFVEVEIGlzIHNldCBpbiBkb19tZF9zdG9wIHdpdGggcmVjb25maWdfbXV0ZXguXG5kcml2ZXJzL21kL21kLmgtNzE2LVx0ICogU28gY2hlY2sgaXQgaGVyZS5cbi0tXG5kcml2ZXJzL21kL21kLmgtNzI5LSAqIGhvbGRzIHRoZSBsb2NrIGhlcmUgY2FuJiMzOTt0IGJlIHN0b3BwZWQuIEFuZCBhbGwgcGF0aHMgY2FuJiMzOTt0XG5kcml2ZXJzL21kL21kLmg6NzMwOiAqIGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBkb19tZF9zdG9wLlxuZHJpdmVycy9tZC9tZC5oLTczMS0gKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDE2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipLY29uZmlnIERlZXAgRGl2ZSBmb3IgTUQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgS2NvbmZpZyBvcHRpb25zIHRoYXQgYXJlICphYnNvbHV0ZWx5KiBlc3NlbnRpYWwgZm9yIHRoZSBNRCAoTXVsdGlwbGUgRGV2aWNlKSBzdWJzeXN0ZW0uIEkga25vdyB0aGlzIHN0dWZmLCBidXQgSSBhbHdheXMgc3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZSEgTGV0JiMzOTtzIGdldCByaWdodCB0byB0aGUgc291cmNlIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LiBNeSBmaXJzdCBzdG9wIGlzIGRlZmluaXRlbHkgYGRyaXZlcnMvbWQvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBmdW5kYW1lbnRhbCBNRCBjb25maWd1cmF0aW9uIG9wdGlvbnMgc2hvdWxkIGxpdmUuIEkmIzM5O2xsIHBvcmUgb3ZlciB0aGF0IGZpbGUsIHRha2luZyBub3RlcyBhbmQgbWFraW5nIGNvbm5lY3Rpb25zIGluIG15IGhlYWQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzLCB0aGUgZnVuZGFtZW50YWwgb3B0aW9ucyB0aGF0IGVuYWJsZSBhbmQgY29uZmlndXJlIHRoZSBNRCBsYXllci4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIGJ1aWxkIG15IG1lbnRhbCBtb2RlbCwgdGhpcyBpcyBnb25uYSBiZSBhbiBpbnRlcmVzdGluZyByZXZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNRFxcYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWQvS2NvbmZpZy01LVxuZHJpdmVycy9tZC9LY29uZmlnOjY6bWVudWNvbmZpZyBNRFxuZHJpdmVycy9tZC9LY29uZmlnLTctXHRib29sIFwmIzM0O011bHRpcGxlIGRldmljZXMgZHJpdmVyIHN1cHBvcnQgKFJBSUQgYW5kIExWTSlcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY5OQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBCdWlsZCBQcm9jZXNzIGZvciBgZHJpdmVycy9tZC9tZC5jYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyBgZHJpdmVycy9tZC9tZC5jYCBnZXRzIGJ1aWx0LiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgZmlyc3QgcGxhY2UgSSYjMzk7ZCBsb29rIGlzIHVzdWFsbHkgdGhlIG9idmlvdXM6IHRoZSByZWxldmFudCBgTWFrZWZpbGVgIGFuZCBgS2NvbmZpZ2AgZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9tZGAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGNoZWNrIGBkcml2ZXJzL21kL01ha2VmaWxlYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYSBkaXJlY3QgcnVsZSB0aGF0IGV4cGxpY2l0bHkgbWVudGlvbnMgdGhlIGNvbXBpbGF0aW9uIG9mIGBtZC5jYC4gSWYgbm90LCBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBkZXBlbmRlbmNpZXMgb3IgaW1wbGljaXQgcnVsZXMgdGhhdCBtaWdodCB0cmlnZ2VyIGl0cyBidWlsZC4gSSB3b3VsZCBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgYXMgd2VsbC4gVGhpcyB3aWxsIHNob3cgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIGluZmx1ZW5jZSB3aGV0aGVyIGl0JiMzOTtzIGluY2x1ZGVkIGluIHRoZSBmaW5hbCBrZXJuZWwgaW1hZ2UsIGlmIGl0JiMzOTtzIGNvbmRpdGlvbmFsLiBUaGVzZSBhcmUgdXN1YWxseSB0aGUgcHJpbWFyeSBtZWNoYW5pc21zIHRoYXQgZGV0ZXJtaW5lIHdoaWNoIG1vZHVsZXMgb3Igc291cmNlIGZpbGVzIGFyZSBhY3R1YWxseSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQgYmFzZWQgb24gdGhlIGN1cnJlbnQga2VybmVsIGNvbmZpZ3VyYXRpb24uIFdpdGggYW55IGx1Y2ssIG9uZSBvZiB0aG9zZSB0d28gZmlsZXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZFxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21kLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21kL01ha2VmaWxlPTI4PWRtLXpvbmVkLXlcdCYjNDM7PSBkbS16b25lZC10YXJnZXQubyBkbS16b25lZC1tZXRhZGF0YS5vIGRtLXpvbmVkLXJlY2xhaW0ub1xuZHJpdmVycy9tZC9NYWtlZmlsZS0yOS1cbmRyaXZlcnMvbWQvTWFrZWZpbGU6MzA6bWQtbW9kLXlcdCYjNDM7PSBtZC5vXG5kcml2ZXJzL21kL01ha2VmaWxlLTMxLW1kLW1vZC0kKENPTkZJR19NRF9CSVRNQVApXHQmIzQzOz0gbWQtYml0bWFwLm9cbi0tXG5kcml2ZXJzL21kL01ha2VmaWxlPTM0PWxpbmVhci15ICAgICAgICYjNDM7PSBtZC1saW5lYXIub1xuLS1cbmRyaXZlcnMvbWQvTWFrZWZpbGUtMzYtIyBOb3RlOiBsaW5rIG9yZGVyIGlzIGltcG9ydGFudC4gIEFsbCByYWlkIHBlcnNvbmFsaXRpZXNcbmRyaXZlcnMvbWQvTWFrZWZpbGU6Mzc6IyBhbmQgbXVzdCBjb21lIGJlZm9yZSBtZC5vLCBhcyB0aGV5IGVhY2ggaW5pdGlhbGlzZVxuZHJpdmVycy9tZC9NYWtlZmlsZTozODojIHRoZW1zZWx2ZXMsIGFuZCBtZC5vIG1heSB1c2UgdGhlIHBlcnNvbmFsaXRpZXMgd2hlbiBpdFxuZHJpdmVycy9tZC9NYWtlZmlsZS0zOS0jIGF1dG8taW5pdGlhbGlzZWQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxOTgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIFJBSUQgRHJpdmVyIEJ1aWxkIFByb2Nlc3MqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBSQUlEIGRyaXZlciBpcyBiZWluZyBidWlsdCwgc3BlY2lmaWNhbGx5IHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIGBkcml2ZXJzL21kL01ha2VmaWxlYCBhcm91bmQgbGluZXMgMjAtNDAuIEkmIzM5O20gdGhpbmtpbmcgdGhhdCYjMzk7cyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBhbmQgb2JqZWN0IGZpbGUgaW5jbHVzaW9uIGZvciB0aGUgbW9kdWxlIHJlc2lkZS4gSSYjMzk7bGwgbmVlZCB0byBwaW5wb2ludCBhbnkgZGVwZW5kZW5jaWVzLCBjb25kaXRpb25hbCBjb21waWxhdGlvbnMsIG9yIHNwZWNpYWwgZmxhZ3MgZGVmaW5lZCB0aGVyZS4gVGhpcyBzZWN0aW9uIHByb2JhYmx5IGhhbmRsZXMgdGhlIGNvcmUgbW9kdWxlcyBhbmQgcGVyaGFwcyBhbnkgZGV2aWNlLXNwZWNpZmljIGRyaXZlcnMgdW5kZXIgdGhlIFJBSUQgc3Vic3lzdGVtLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjcml0aWNhbCBnbHVlIHRoYXQgdGllcyB0aGUgc291cmNlIGNvZGUgZmlsZXMgaW50byBhIGxvYWRhYmxlIG1vZHVsZS4gVGhhdCYjMzk7cyBsaWtlbHkgd2hlcmUgSSYjMzk7bGwgZmluZCBob3cgdGhpbmdzIGFyZSBiZWluZyBjb21waWxlZCBhbmQgbGlua2VkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHRvIHRyb3VibGVzaG9vdCBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIHRoZSBtb2R1bGUmIzM5O3MgbG9hZGluZywgb3IgYSBjb25maWd1cmF0aW9uIGNvbmZsaWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWQvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQ1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgTWFrZWZpbGUgZm9yIHRoZSBrZXJuZWwgc29mdHdhcmUgUkFJRCBhbmQgTFZNIGRyaXZlcnMuXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGRtLW1vZC15XHQmIzQzOz0gZG0ubyBkbS10YWJsZS5vIGRtLXRhcmdldC5vIGRtLWxpbmVhci5vIGRtLXN0cmlwZS5vIFxcXG4gICA3Olx0XHRcdCAgIGRtLWlvY3RsLm8gZG0taW8ubyBkbS1rY29weWQubyBkbS1zeXNmcy5vIGRtLXN0YXRzLm8gXFxcbiAgIDg6XHRcdFx0ICAgZG0tcnEubyBkbS1pby1yZXdpbmQub1xuICAgOTpcdGRtLW11bHRpcGF0aC15XHQmIzQzOz0gZG0tcGF0aC1zZWxlY3Rvci5vIGRtLW1wYXRoLm9cbiAgMTA6XHRkbS1oaXN0b3JpY2FsLXNlcnZpY2UtdGltZS15ICYjNDM7PSBkbS1wcy1oaXN0b3JpY2FsLXNlcnZpY2UtdGltZS5vXG4gIDExOlx0ZG0taW8tYWZmaW5pdHkteSAmIzQzOz0gZG0tcHMtaW8tYWZmaW5pdHkub1xuICAxMjpcdGRtLXF1ZXVlLWxlbmd0aC15ICYjNDM7PSBkbS1wcy1xdWV1ZS1sZW5ndGgub1xuICAxMzpcdGRtLXJvdW5kLXJvYmluLXkgJiM0Mzs9IGRtLXBzLXJvdW5kLXJvYmluLm9cbiAgMTQ6XHRkbS1zZXJ2aWNlLXRpbWUteSAmIzQzOz0gZG0tcHMtc2VydmljZS10aW1lLm9cbiAgMTU6XHRkbS1zbmFwc2hvdC15XHQmIzQzOz0gZG0tc25hcC5vIGRtLWV4Y2VwdGlvbi1zdG9yZS5vIGRtLXNuYXAtdHJhbnNpZW50Lm8gXFxcbiAgMTY6XHRcdFx0ICAgIGRtLXNuYXAtcGVyc2lzdGVudC5vXG4gIDE3Olx0ZG0tbWlycm9yLXlcdCYjNDM7PSBkbS1yYWlkMS5vXG4gIDE4Olx0ZG0tbG9nLXVzZXJzcGFjZS15ICYjNDM7PSBkbS1sb2ctdXNlcnNwYWNlLWJhc2UubyBkbS1sb2ctdXNlcnNwYWNlLXRyYW5zZmVyLm9cbiAgMTk6XHRkbS1iaW8tcHJpc29uLXkgJiM0Mzs9IGRtLWJpby1wcmlzb24tdjEubyBkbS1iaW8tcHJpc29uLXYyLm9cbiAgMjA6XHRkbS10aGluLXBvb2wteVx0JiM0Mzs9IGRtLXRoaW4ubyBkbS10aGluLW1ldGFkYXRhLm9cbiAgMjE6XHRkbS1jYWNoZS15XHQmIzQzOz0gZG0tY2FjaGUtdGFyZ2V0Lm8gZG0tY2FjaGUtbWV0YWRhdGEubyBkbS1jYWNoZS1wb2xpY3kubyBcXFxuICAyMjpcdFx0XHQgICAgZG0tY2FjaGUtYmFja2dyb3VuZC10cmFja2VyLm9cbiAgMjM6XHRkbS1jYWNoZS1zbXEteVx0JiM0Mzs9IGRtLWNhY2hlLXBvbGljeS1zbXEub1xuICAyNDpcdGRtLWVicy15XHQmIzQzOz0gZG0tZWJzLXRhcmdldC5vXG4gIDI1Olx0ZG0tZXJhLXlcdCYjNDM7PSBkbS1lcmEtdGFyZ2V0Lm9cbiAgMjY6XHRkbS1jbG9uZS15XHQmIzQzOz0gZG0tY2xvbmUtdGFyZ2V0Lm8gZG0tY2xvbmUtbWV0YWRhdGEub1xuICAyNzpcdGRtLXZlcml0eS15XHQmIzQzOz0gZG0tdmVyaXR5LXRhcmdldC5vXG4gIDI4Olx0ZG0tem9uZWQteVx0JiM0Mzs9IGRtLXpvbmVkLXRhcmdldC5vIGRtLXpvbmVkLW1ldGFkYXRhLm8gZG0tem9uZWQtcmVjbGFpbS5vXG4gIDI5Olx0XG4gIDMwOlx0bWQtbW9kLXlcdCYjNDM7PSBtZC5vXG4gIDMxOlx0bWQtbW9kLSQoQ09ORklHX01EX0JJVE1BUClcdCYjNDM7PSBtZC1iaXRtYXAub1xuICAzMjpcdG1kLW1vZC0kKENPTkZJR19NRF9MTEJJVE1BUClcdCYjNDM7PSBtZC1sbGJpdG1hcC5vXG4gIDMzOlx0cmFpZDQ1Ni15XHQmIzQzOz0gcmFpZDUubyByYWlkNS1jYWNoZS5vIHJhaWQ1LXBwbC5vXG4gIDM0Olx0bGluZWFyLXkgICAgICAgJiM0Mzs9IG1kLWxpbmVhci5vXG4gIDM1Olx0XG4gIDM2Olx0IyBOb3RlOiBsaW5rIG9yZGVyIGlzIGltcG9ydGFudC4gIEFsbCByYWlkIHBlcnNvbmFsaXRpZXNcbiAgMzc6XHQjIGFuZCBtdXN0IGNvbWUgYmVmb3JlIG1kLm8sIGFzIHRoZXkgZWFjaCBpbml0aWFsaXNlXG4gIDM4Olx0IyB0aGVtc2VsdmVzLCBhbmQgbWQubyBtYXkgdXNlIHRoZSBwZXJzb25hbGl0aWVzIHdoZW4gaXRcbiAgMzk6XHQjIGF1dG8taW5pdGlhbGlzZWQuXG4gIDQwOlx0XG4gIDQxOlx0b2JqLSQoQ09ORklHX01EX0xJTkVBUilcdFx0JiM0Mzs9IGxpbmVhci5vXG4gIDQyOlx0b2JqLSQoQ09ORklHX01EX1JBSUQwKVx0XHQmIzQzOz0gcmFpZDAub1xuICA0MzpcdG9iai0kKENPTkZJR19NRF9SQUlEMSlcdFx0JiM0Mzs9IHJhaWQxLm9cbiAgNDQ6XHRvYmotJChDT05GSUdfTURfUkFJRDEwKVx0XHQmIzQzOz0gcmFpZDEwLm9cbiAgNDU6XHRvYmotJChDT05GSUdfTURfUkFJRDQ1NilcdCYjNDM7PSByYWlkNDU2Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQwNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBCdWlsZCBQcm9jZXNzIGZvciBgbWQtbW9kYCoqCgpSaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIGBtZC1tb2RgLiBUaGlzIGlzIGEgY29yZSBjb21wb25lbnQsIGFuZCBJJiMzOTttIHN1cmUgaXQmIzM5O3MgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGVudGlyZSBSQUlEIHN5c3RlbSBpcyBwdXQgdG9nZXRoZXIuIFRvIGdldCB0byB0aGUgaGVhcnQgb2YgaXQsIEkmIzM5O2xsIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSBrbm93IHRoZSBgZHJpdmVycy9tZC9NYWtlZmlsZWAgaXMgdGhlIHBsYWNlIHRvIHN0YXJ0LCBhbmQgbGluZXMgNDYgdGhyb3VnaCA2MCBhcmUgbGlrZWx5IHdoZXJlIHRoZSByZWxldmFudCBidWlsZCBydWxlcyBhcmUgZGVmaW5lZC4gVGhhdCBzZWN0aW9uIHdpbGwgcHJvYmFibHkgcHJvdmlkZSB0aGUgY2xlYXJlc3QgcGljdHVyZSBvZiB3aGF0IGRlcGVuZGVuY2llcyBhcmUgbmVlZGVkLCBhbnkgcHJlLXByb2Nlc3Npbmcgc3RlcHMsIGFuZCB0aGUgZmluYWwgbGlua2luZyBwcm9jZWR1cmUgZm9yIHRoZSBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gaGF2ZSBhIHNvbGlkIGdyYXNwIG9mIGhvdyBpdCB3b3Jrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21kL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0NTpcdG9iai0kKENPTkZJR19NRF9SQUlENDU2KVx0JiM0Mzs9IHJhaWQ0NTYub1xuICA0NjpcdG9iai0kKENPTkZJR19NRF9DTFVTVEVSKVx0JiM0Mzs9IG1kLWNsdXN0ZXIub1xuICA0NzpcdG9iai0kKENPTkZJR19CQ0FDSEUpXHRcdCYjNDM7PSBiY2FjaGUvXG4gIDQ4Olx0b2JqLSQoQ09ORklHX0JMS19ERVZfTUQpXHQmIzQzOz0gbWQtbW9kLm9cbiAgNDk6XHRpZmVxICgkKENPTkZJR19CTEtfREVWX01EKSx5KVxuICA1MDpcdG9iai15XHRcdFx0XHQmIzQzOz0gbWQtYXV0b2RldGVjdC5vXG4gIDUxOlx0ZW5kaWZcbiAgNTI6XHRvYmotJChDT05GSUdfQkxLX0RFVl9ETSlcdCYjNDM7PSBkbS1tb2Qub1xuICA1MzpcdG9iai0kKENPTkZJR19CTEtfREVWX0RNX0JVSUxUSU4pICYjNDM7PSBkbS1idWlsdGluLm9cbiAgNTQ6XHRvYmotJChDT05GSUdfRE1fVU5TVFJJUEVEKVx0JiM0Mzs9IGRtLXVuc3RyaXBlLm9cbiAgNTU6XHRvYmotJChDT05GSUdfRE1fQlVGSU8pXHRcdCYjNDM7PSBkbS1idWZpby5vXG4gIDU2Olx0b2JqLSQoQ09ORklHX0RNX0JJT19QUklTT04pXHQmIzQzOz0gZG0tYmlvLXByaXNvbi5vXG4gIDU3Olx0b2JqLSQoQ09ORklHX0RNX0NSWVBUKVx0XHQmIzQzOz0gZG0tY3J5cHQub1xuICA1ODpcdG9iai0kKENPTkZJR19ETV9JTkxJTkVDUllQVClcdCYjNDM7PSBkbS1pbmxpbmVjcnlwdC5vXG4gIDU5Olx0b2JqLSQoQ09ORklHX0RNX0RFTEFZKVx0XHQmIzQzOz0gZG0tZGVsYXkub1xuICA2MDpcdG9iai0kKENPTkZJR19ETV9EVVNUKVx0XHQmIzQzOz0gZG0tZHVzdC5vXG4gIDYxOlx0b2JqLSQoQ09ORklHX0RNX0ZMQUtFWSlcdFx0JiM0Mzs9IGRtLWZsYWtleS5vXG4gIDYyOlx0b2JqLSQoQ09ORklHX0RNX01VTFRJUEFUSClcdCYjNDM7PSBkbS1tdWx0aXBhdGgubyBkbS1yb3VuZC1yb2Jpbi5vXG4gIDYzOlx0b2JqLSQoQ09ORklHX0RNX01VTFRJUEFUSF9RTClcdCYjNDM7PSBkbS1xdWV1ZS1sZW5ndGgub1xuICA2NDpcdG9iai0kKENPTkZJR19ETV9NVUxUSVBBVEhfU1QpXHQmIzQzOz0gZG0tc2VydmljZS10aW1lLm9cbiAgNjU6XHRvYmotJChDT05GSUdfRE1fTVVMVElQQVRIX0hTVClcdCYjNDM7PSBkbS1oaXN0b3JpY2FsLXNlcnZpY2UtdGltZS5vXG4gIDY2Olx0b2JqLSQoQ09ORklHX0RNX01VTFRJUEFUSF9JT0EpXHQmIzQzOz0gZG0taW8tYWZmaW5pdHkub1xuICA2NzpcdG9iai0kKENPTkZJR19ETV9TV0lUQ0gpXHRcdCYjNDM7PSBkbS1zd2l0Y2gub1xuICA2ODpcdG9iai0kKENPTkZJR19ETV9TTkFQU0hPVClcdCYjNDM7PSBkbS1zbmFwc2hvdC5vXG4gIDY5Olx0b2JqLSQoQ09ORklHX0RNX1BFUlNJU1RFTlRfREFUQSkgJiM0Mzs9IHBlcnNpc3RlbnQtZGF0YS9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI0MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkNoZWNraW5nIHRoZSBNZXRhZGF0YSBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgc3RhdHVzIG9mIGBCTEtfREVWX01EYC4gSSBpbW1lZGlhdGVseSB0aGluayB0byBjaGVjayB0aGUgYGRyaXZlcnMvbWQvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCDigJMgaXQmIzM5O3MgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGUgc3BlY2lmaWNhbGx5IGZvciB0aGUgTXVsdGlwbGUgRGV2aWNlIChNRCkgc3Vic3lzdGVtLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaWYgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHNldCwgaXQgd2lsbCBiZSBkZWZpbmVkIGFuZCBjb250cm9sbGVkIGluIHRoZSBLY29uZmlnIGZpbGUuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGlmIGl0JiMzOTtzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBwZXJoYXBzIHBhcnQgb2YgYSBtb3JlIGNvbXBsZXggY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgdGhhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19ERVZfTURcXGImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21kLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21kL0tjb25maWc9MTM9aWYgTURcbmRyaXZlcnMvbWQvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbWQvS2NvbmZpZzoxNTpjb25maWcgQkxLX0RFVl9NRFxuZHJpdmVycy9tZC9LY29uZmlnLTE2LVx0dHJpc3RhdGUgXCYjMzQ7UkFJRCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MTMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIExhYnlyaW50aCBvZiBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBSQUlEIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZW0gaXMsIG9mIGNvdXJzZSwgdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhcmUgZGVmaW5lZC4gSSBoYXZlIGEgaHVuY2ggdGhlIHJlbGV2YW50IG9wdGlvbnMgYXJlIGluIHRoZSBgZHJpdmVycy9tZC9gIGRpcmVjdG9yeSwgY29uc2lkZXJpbmcgaXQmIzM5O3MgdGhlIGhvbWUgb2YgdGhlIE11bHRpcGxlIERldmljZSBkcml2ZXIgY29kZS4gTGV0IG1lIHNwZWNpZmljYWxseSBjaGVjayBgZHJpdmVycy9tZC9LY29uZmlnYCBhbmQgem9vbSBpbiBvbiwgc2F5LCBsaW5lIDEzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCB0byBzZWUgaG93IGV2ZXJ5dGhpbmcgaXMgbGFpZCBvdXQgYW5kIGhvdyB0aGUgUkFJRCBvcHRpb25zIGFyZSBleHBvc2VkLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCBmaWd1cmluZyBvdXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gcGl0ZmFsbHMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGxpbmVzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIHNjb3Bpbmcgb2YgdGhlIG9wdGlvbnMgYmVpbmcgY29uc2lkZXJlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgQmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTURcbiAgIDc6XHRcdGJvb2wgXCYjMzQ7TXVsdGlwbGUgZGV2aWNlcyBkcml2ZXIgc3VwcG9ydCAoUkFJRCBhbmQgTFZNKVwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBCTE9DS1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBTdXBwb3J0IG11bHRpcGxlIHBoeXNpY2FsIHNwaW5kbGVzIHRocm91Z2ggYSBzaW5nbGUgbG9naWNhbCBkZXZpY2UuXG4gIDExOlx0XHQgIFJlcXVpcmVkIGZvciBSQUlEIGFuZCBsb2dpY2FsIHZvbHVtZSBtYW5hZ2VtZW50LlxuICAxMjpcdFxuICAxMzpcdGlmIE1EXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIEJMS19ERVZfTURcbiAgMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1JBSUQgc3VwcG9ydFwmIzM0O1xuICAxNzpcdFx0c2VsZWN0IEJMT0NLX0hPTERFUl9ERVBSRUNBVEVEIGlmIFNZU0ZTXG4gIDE4Olx0XHRzZWxlY3QgQlVGRkVSX0hFQURcbiAgMTk6XHRcdCMgQkxPQ0tfTEVHQUNZX0FVVE9MT0FEIHJlcXVpcmVtZW50IHNob3VsZCBiZSByZW1vdmVkXG4gIDIwOlx0XHQjIGFmdGVyIHJlbGV2YW50IG1kYWRtIGVuaGFuY2VtZW50cyAtIHRvIG1ha2UgXCYjMzQ7bmFtZXM9eWVzXCYjMzQ7XG4gIDIxOlx0XHQjIHRoZSBkZWZhdWx0IC0gYXJlIHdpZGVseSBhdmFpbGFibGUuXG4gIDIyOlx0XHRzZWxlY3QgQkxPQ0tfTEVHQUNZX0FVVE9MT0FEXG4gIDIzOlx0XHRoZWxwXG4gIDI0Olx0XHQgIFRoaXMgZHJpdmVyIGxldHMgeW91IGNvbWJpbmUgc2V2ZXJhbCBoYXJkIGRpc2sgcGFydGl0aW9ucyBpbnRvIG9uZVxuICAyNTpcdFx0ICBsb2dpY2FsIGJsb2NrIGRldmljZS4gVGhpcyBjYW4gYmUgdXNlZCB0byBzaW1wbHkgYXBwZW5kIG9uZVxuICAyNjpcdFx0ICBwYXJ0aXRpb24gdG8gYW5vdGhlciBvbmUgb3IgdG8gY29tYmluZSBzZXZlcmFsIHJlZHVuZGFudCBoYXJkIGRpc2tzXG4gIDI3Olx0XHQgIGludG8gYSBSQUlEMS80LzUgZGV2aWNlIHNvIGFzIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGhhcmRcbiAgMjg6XHRcdCAgZGlzayBmYWlsdXJlcy4gVGhpcyBpcyBjYWxsZWQgXCYjMzQ7U29mdHdhcmUgUkFJRFwmIzM0OyBzaW5jZSB0aGUgY29tYmluaW5nIG9mXG4gIDI5Olx0XHQgIHRoZSBwYXJ0aXRpb25zIGlzIGRvbmUgYnkgdGhlIGtlcm5lbC4gXCYjMzQ7SGFyZHdhcmUgUkFJRFwmIzM0OyBtZWFucyB0aGF0IHRoZVxuICAzMDpcdFx0ICBjb21iaW5pbmcgaXMgZG9uZSBieSBhIGRlZGljYXRlZCBjb250cm9sbGVyOyBpZiB5b3UgaGF2ZSBzdWNoIGFcbiAgMzE6XHRcdCAgY29udHJvbGxlciwgeW91IGRvIG5vdCBuZWVkIHRvIHNheSBZIGhlcmUuXG4gIDMyOlx0XG4gIDMzOlx0XHQgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgU29mdHdhcmUgUkFJRCBvbiBMaW51eCBpcyBjb250YWluZWQgaW4gdGhlXG4gIDM0Olx0XHQgIFNvZnR3YXJlIFJBSUQgbWluaS1IT1dUTywgYXZhaWxhYmxlIGZyb21cbiAgMzU6XHRcdCAgXHUwMDNjaHR0cHM6Ly93d3cudGxkcC5vcmcvZG9jcy5odG1sI2hvd3RvXHUwMDNlLiBUaGVyZSB5b3Ugd2lsbCBhbHNvIGxlYXJuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjcxCgkJCQkJCQlvdXRwdXQ6IDE5MwoJCQkJCQkJdGhvdWdodHM6IDEwNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIGBtZF9zdG9wYCBwYXRoIGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgdGhlIHZpYWJpbGl0eSBvZiBmdXp6aW5nIHRoZSBgbWRfc3RvcGAgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgcmVzZXQgb2YgcmVzaGFwZSBwYXJhbWV0ZXJzIHdpdGhpbiB0aGUgYF9fbWRfc3RvcGAgZnVuY3Rpb24uCgpGaXJzdCwgSSBzZWUgdGhhdCB0aGUgY29kZSBJJiMzOTttIGludGVyZXN0ZWQgaW4sIHRoZSBmdW5jdGlvbiBgX19tZF9zdG9wYCwgbGl2ZXMgd2l0aGluIGBkcml2ZXJzL21kL21kLmNgLCBhbmQgaXQmIzM5O3MgY2FsbGVkIGJ5IGBtZF9zdG9wYC4gYF9fbWRfc3RvcGAgaXMgc3RhdGljLCB3aGljaCBtZWFucyBpdCYjMzk7cyBub3QgZGlyZWN0bHkgZXhwb3J0ZWQsIGJ1dCBgbWRfc3RvcGAgaXMuIFdlIGFsc28gaGF2ZSBgZG9fbWRfc3RvcGAgdGhhdCBpcyBzdGF0aWMgYXMgd2VsbC4KClRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyB0aGUgcmVzZXQgb2YgcmVzaGFwZSBwYXJhbWV0ZXJzIChgZGVsdGFfZGlza3NgLCBgcmVzaGFwZV9iYWNrd2FyZHNgLCBldGMuKSB3aGVuIGEgcmVzaGFwZSBvcGVyYXRpb24gaGFzIGNvbXBsZXRlZCAoYXMgaW5kaWNhdGVkIGJ5IGBtZGRldi0mZ3Q7cmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3JgKSBhbmQgdGhlIGFycmF5IGlzIHN0b3BwZWQuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHRoaXMgcmVzZXQgbWlnaHQgYmUgYSBnb29kIGFyZWEgZm9yIGZ1enppbmcuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgX19tZF9zdG9wYCAoYW5kIGBtZF9zdG9wYCkgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgYC9kZXYvbWQqYCBkZXZpY2VzIGFyZSBhdmFpbGFibGUgaW4gUUVNVS9zeXprYWxsZXIgYW5kIHRoZSBNRCBzdGFjayBjYW4gYmUgbWFuaXB1bGF0ZWQgdmlhIGlvY3RsIGNhbGxzIChsaWtlIGBTVE9QX0FSUkFZYCBvciBgU1RPUF9BUlJBWV9ST2ApLCBzeXNmcyBpbnRlcmFjdGlvbnMgKGBhcnJheV9zdGF0ZWAgd3JpdGluZyAmIzM0O2NsZWFyJiMzNDsgb3IgJiMzNDtpbmFjdGl2ZSYjMzQ7IG9yICYjMzQ7c3RvcCYjMzQ7KSwgYW5kIGV2ZW4gZG0tcmFpZCB0ZWFyZG93bi4gU3l6a2FsbGVyJiMzOTtzIGNvdmVyYWdlIG9mIG1kIGlvY3RscyBhbmQgc3lzZnMgbWFrZXMgaXQgYSBncmVhdCB0ZXN0aW5nIHBsYXRmb3JtLgoKVG8gdmVyaWZ5IHJlYWNoYWJpbGl0eSwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBCTEtfREVWX01EYCBpcyBjcnVjaWFsLCBhcyBpdCBkaXJlY3RseSBlbmFibGVzIHRoZSBgbWQuY2AgbW9kdWxlLiBUaGVuLCB0byBtYWtlIHJlc2hhcGUgcmVsZXZhbnQsIEkgbmVlZCBlaXRoZXIgYE1EX1JBSUQ0NTZgIG9yIGBNRF9SQUlEMTBgLCBiZWNhdXNlIHRoZXNlIFJBSUQgcGVyc29uYWxpdGllcyBzdXBwb3J0IHJlc2hhcGluZy4gVGhlIG1vcmUgZ2VuZXJhbCBgQ09ORklHX01EYCB3b3VsZCBlbmFibGUgYG1kLmNgLCBidXQgdGhlIHNwZWNpZmljIFJBSUQgcGVyc29uYWxpdGllcyBlbmFibGUgdGhlIHJlc2hhcGluZyBjb2RlLiBJIGFsc28gbmVlZCB0byBjb25zaWRlciB0aGF0IGBCTEtfREVWX0RNYCBhbmQgYERNX1JBSURgIGFsc28gY2FsbCBgbWRfc3RvcGAuCgpUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBfX21kX3N0b3BgLCBgZG9fbWRfc3RvcGAsIGFuZCBgbWRfc3RvcGAgYXMgbXkgRm9jdXNTeW1ib2xzLiBUaGUgZW5hYmxpbmcgY29uZmlncyBhcmUgYEJMS19ERVZfTURgLCBgTURfUkFJRDQ1NmAsIGFuZCBgTURfUkFJRDEwYC4gV2l0aCB0aGVzZSBjb21wb25lbnRzIGluIHBsYWNlLCBhbmQgYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGFuZCBNRCBpcyBmdWxseSBzdXBwb3J0ZWQgaW4gdGhlc2UgZW52aXJvbm1lbnRzLCBJIGJlbGlldmUgdGhpcyBpcyBhIHZhbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTUQmIzM0OywKICAgICYjMzQ7TURfUkFJRDQ1NiYjMzQ7LAogICAgJiMzNDtNRF9SQUlEMTAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX21kX3N0b3AmIzM0OywKICAgICYjMzQ7ZG9fbWRfc3RvcCYjMzQ7LAogICAgJiMzNDttZF9zdG9wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIF9fbWRfc3RvcCgpIGluIHRoZSBNRCAoTXVsdGlwbGUgRGV2aWNlcyAvIFNvZnR3YXJlIFJBSUQpIGRyaXZlciB0byByZXNldCByZXNoYXBlIHN0YXRlIChkZWx0YV9kaXNrcywgcmVzaGFwZV9iYWNrd2FyZHMsIG5ld19sZXZlbCwgbmV3X2xheW91dCwgbmV3X2NodW5rX3NlY3RvcnMpIHdoZW4gc3RvcHBpbmcgYW4gYXJyYXkgYWZ0ZXIgYSByZXNoYXBlIG9wZXJhdGlvbiBoYXMgZmluaXNoZWQgKHJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKS4gVGhpcyBjb2RlIGlzIGZ1bGx5IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1kIGlvY3RsIChlLmcuLCBTVE9QX0FSUkFZKSwgc3lzZnMgYXJyYXlfc3RhdGUgYXR0cmlidXRlcywgb3IgZG0tcmFpZCB0ZWFyZG93biwgYW5kIHdhcnJhbnRzIGZ1enppbmcgZm9yIHBvdGVudGlhbCBzdGF0ZSBtYW5hZ2VtZW50IHJlZ3Jlc3Npb25zIG9yIHJhY2UgY29uZGl0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9NRCYjMzQ7LAogICAgJiMzNDtNRF9SQUlENDU2JiMzNDssCiAgICAmIzM0O01EX1JBSUQxMCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fbWRfc3RvcCYjMzQ7LAogICAgJiMzNDtkb19tZF9zdG9wJiMzNDssCiAgICAmIzM0O21kX3N0b3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgX19tZF9zdG9wKCkgaW4gdGhlIE1EIChNdWx0aXBsZSBEZXZpY2VzIC8gU29mdHdhcmUgUkFJRCkgZHJpdmVyIHRvIHJlc2V0IHJlc2hhcGUgc3RhdGUgKGRlbHRhX2Rpc2tzLCByZXNoYXBlX2JhY2t3YXJkcywgbmV3X2xldmVsLCBuZXdfbGF5b3V0LCBuZXdfY2h1bmtfc2VjdG9ycykgd2hlbiBzdG9wcGluZyBhbiBhcnJheSBhZnRlciBhIHJlc2hhcGUgb3BlcmF0aW9uIGhhcyBmaW5pc2hlZCAocmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpLiBUaGlzIGNvZGUgaXMgZnVsbHkgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWQgaW9jdGwgKGUuZy4sIFNUT1BfQVJSQVkpLCBzeXNmcyBhcnJheV9zdGF0ZSBhdHRyaWJ1dGVzLCBvciBkbS1yYWlkIHRlYXJkb3duLCBhbmQgd2FycmFudHMgZnV6emluZyBmb3IgcG90ZW50aWFsIHN0YXRlIG1hbmFnZW1lbnQgcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMjowMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWRfc3RvcCgpYCBpbiBgZHJpdmVycy9tZC9tZC5jYCB0byByZXNldCByZXNoYXBlIGNvbmZpZ3VyYXRpb24gZmllbGRzIChgZGVsdGFfZGlza3NgLCBgcmVzaGFwZV9iYWNrd2FyZHNgLCBgbmV3X2xldmVsYCwgYG5ld19sYXlvdXRgLCBgbmV3X2NodW5rX3NlY3RvcnNgKSBpbiBgc3RydWN0IG1kZGV2YCB3aGVuIHN0b3BwaW5nIGFuIG1kIGFycmF5IHdoZXJlIGByZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcmAuXG5cbkFsbCBhc3NpZ25lZCB2YWx1ZXMgYXJlIGVpdGhlciBjb25zdGFudCB6ZXJvZXMgb3IgZGVyaXZlZCBmcm9tIGV4aXN0aW5nLCBpbml0aWFsaXplZCBmaWVsZHMgb2YgYG1kZGV2YC4gVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBkYXRhLCBkb2VzIG5vdCBhbHRlciBjb3B5LXRvLXVzZXIgb3BlcmF0aW9ucywgYW5kIGRvZXMgbm90IGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCB3YXJyYW50IGEgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZGM2YWVjMzc0YzA0N2U4YTIyMGFlMWRmN2NlZmY5MzM4N2RhOTI2ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDkgMjI6MDA6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL21kLmMgYi9kcml2ZXJzL21kL21kLmMKaW5kZXggNjgwYjM0YTYzY2IzZC4uMzhhYjQxYmJjZDBlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9tZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWQvbWQuYwpAQCAtNzA5NSw2ICYjNDM7NzA5NSwxNCBAQCBzdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldikKIAltZGRldi0mZ3Q7cHJpdmF0ZSA9IE5VTEw7CiAJcHV0X3BlcnMocGVycyk7CiAJY2xlYXJfYml0KE1EX1JFQ09WRVJZX0ZST1pFTiwgJmFtcDttZGRldi0mZ3Q7cmVjb3ZlcnkpOwomIzQzOwomIzQzOwlpZiAobWRkZXYtJmd0O3Jlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKSB7CiYjNDM7CQltZGRldi0mZ3Q7ZGVsdGFfZGlza3MgPSAwOwomIzQzOwkJbWRkZXYtJmd0O3Jlc2hhcGVfYmFja3dhcmRzID0gMDsKJiM0MzsJCW1kZGV2LSZndDtuZXdfbGV2ZWwgPSBtZGRldi0mZ3Q7bGV2ZWw7CiYjNDM7CQltZGRldi0mZ3Q7bmV3X2xheW91dCA9IG1kZGV2LSZndDtsYXlvdXQ7CiYjNDM7CQltZGRldi0mZ3Q7bmV3X2NodW5rX3NlY3RvcnMgPSBtZGRldi0mZ3Q7Y2h1bmtfc2VjdG9yczsKJiM0MzsJfQogfQogCiB2b2lkIG1kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldikKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoKioKCk9rYXksIHRpbWUgdG8gZGlnIGluLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyBhbHdheXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjaGFuZ2VzIGRpcmVjdGx5LiBJJiMzOTttIGdvaW5nIHRvIGZpcmUgdXAgbXkgdXN1YWwgdG9vbHMgYW5kIHN0YXJ0IGJ5IGluc3BlY3RpbmcgdGhlIHBhdGNoIGl0c2VsZiwgc2VlaW5nIHdoYXQgaXQmIzM5O3MgdG91Y2hpbmcuIEFoLCBgZHJpdmVycy9tZC9tZC5jYCDigJMgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2UgaXMgd2l0aGluIHRoZSBgX19tZF9zdG9wYCBmdW5jdGlvbi4gTm93LCB0aGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcsIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyBgX19tZF9zdG9wYCB3b3JrcyBhbmQgaXRzIGltbWVkaWF0ZSBjb250ZXh0IHRvIGZ1bGx5IGdyYXNwIHRoZSBjaGFuZ2UuIExldCBtZSBnbyBkaXJlY3RseSB0byBhcm91bmQgbGluZSA3MDk1IGluIGBkcml2ZXJzL21kL21kLmNgIHRvIHJlYWQgdGhlIGNvbnRleHQgb2YgdGhlIGNoYW5nZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgbGF5IG9mIHRoZSBsYW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWQvbWQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NzA4MDpcdFx0aWYgKCFtZGRldl9pc19kbShtZGRldikpXG43MDgxOlx0XHRcdGJsa19zeW5jX3F1ZXVlKG1kZGV2LVx1MDAzZWdlbmRpc2stXHUwMDNlcXVldWUpO1xuNzA4MjpcdH1cbjcwODM6XHRcbjcwODQ6XHRzdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcbjcwODU6XHR7XG43MDg2Olx0XHRzdHJ1Y3QgbWRfcGVyc29uYWxpdHkgKnBlcnMgPSBtZGRldi1cdTAwM2VwZXJzO1xuNzA4NzpcdFxuNzA4ODpcdFx0bWRkZXZfZGV0YWNoKG1kZGV2KTtcbjcwODk6XHRcdG1kX2JpdG1hcF9kZXN0cm95KG1kZGV2KTtcbjcwOTA6XHRcdHNwaW5fbG9jayhcdTAwMjZtZGRldi1cdTAwM2Vsb2NrKTtcbjcwOTE6XHRcdG1kZGV2LVx1MDAzZXBlcnMgPSBOVUxMO1xuNzA5MjpcdFx0c3Bpbl91bmxvY2soXHUwMDI2bWRkZXYtXHUwMDNlbG9jayk7XG43MDkzOlx0XHRpZiAobWRkZXYtXHUwMDNlcHJpdmF0ZSlcbjcwOTQ6XHRcdFx0cGVycy1cdTAwM2VmcmVlKG1kZGV2LCBtZGRldi1cdTAwM2Vwcml2YXRlKTtcbjcwOTU6XHRcdG1kZGV2LVx1MDAzZXByaXZhdGUgPSBOVUxMO1xuNzA5NjpcdFx0cHV0X3BlcnMocGVycyk7XG43MDk3Olx0XHRjbGVhcl9iaXQoTURfUkVDT1ZFUllfRlJPWkVOLCBcdTAwMjZtZGRldi1cdTAwM2VyZWNvdmVyeSk7XG43MDk4Olx0XG43MDk5Olx0XHRpZiAobWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcbjcxMDA6XHRcdFx0bWRkZXYtXHUwMDNlZGVsdGFfZGlza3MgPSAwO1xuNzEwMTpcdFx0XHRtZGRldi1cdTAwM2VyZXNoYXBlX2JhY2t3YXJkcyA9IDA7XG43MTAyOlx0XHRcdG1kZGV2LVx1MDAzZW5ld19sZXZlbCA9IG1kZGV2LVx1MDAzZWxldmVsO1xuNzEwMzpcdFx0XHRtZGRldi1cdTAwM2VuZXdfbGF5b3V0ID0gbWRkZXYtXHUwMDNlbGF5b3V0O1xuNzEwNDpcdFx0XHRtZGRldi1cdTAwM2VuZXdfY2h1bmtfc2VjdG9ycyA9IG1kZGV2LVx1MDAzZWNodW5rX3NlY3RvcnM7XG43MTA1Olx0XHR9XG43MTA2Olx0fVxuNzEwNzpcdFxuNzEwODpcdHZvaWQgbWRfc3RvcChzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxuNzEwOTpcdHtcbjcxMTA6XHRcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2bWRkZXYtXHUwMDNlcmVjb25maWdfbXV0ZXgpO1xuNzExMTpcdFxuNzExMjpcdFx0Lyogc3RvcCB0aGUgYXJyYXkgYW5kIGZyZWUgYW4gYXR0YWNoZWQgZGF0YSBzdHJ1Y3R1cmVzLlxuNzExMzpcdFx0ICogVGhpcyBpcyBjYWxsZWQgZnJvbSBkbS1yYWlkXG43MTE0Olx0XHQgKi9cbjcxMTU6XHRcdF9fbWRfc3RvcF93cml0ZXMobWRkZXYpO1xuNzExNjpcdFx0X19tZF9zdG9wKG1kZGV2KTtcbjcxMTc6XHR9XG43MTE4Olx0XG43MTE5Olx0RVhQT1JUX1NZTUJPTF9HUEwobWRfc3RvcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5ODEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaHkgd2FzIHRoaXMgY2hhbmdlIGV2ZW4gbmVjZXNzYXJ5PyYjMzQ7LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBtb3RpdmF0aW9uIGFuZCB0aGUgcHJvYmxlbSBpdCYjMzk7cyB0cnlpbmcgdG8gc29sdmUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZ29pbmcgc3RyYWlnaHQgdG8gdGhlIGNvZGUuIEkmIzM5O2xsIHJlYWNoIGZvciBgZ3JlcGAsIGJlY2F1c2UgSSYjMzk7bSBsb29raW5nIGZvciBzcGVjaWZpYyBrZXl3b3JkcyB0aGF0IHdpbGwgaW1tZWRpYXRlbHkgaWxsdW1pbmF0ZSB0aGUgY29udGV4dC4gVGhpbmdzIGxpa2UgYHJlc2hhcGVfcG9zaXRpb25gIG9yIGBuZXdfbGV2ZWxgIGFyZSBsaWtlbHkgY2FuZGlkYXRlcy4gSWYgSSBjYW4gZ2V0IG15IGhhbmRzIG9uIHRoZSBnaXQgbG9nLCB0aGF0JiMzOTtzIGlkZWFsOyBjb21taXQgbWVzc2FnZXMgYXJlIHVzdWFsbHkgZ29sZC4gSWYgdGhvc2UgcXVpY2sgc2VhcmNoZXMgZmFpbCwgSSYjMzk7bGwgYnJvYWRlbiBteSBzY29wZSBhbmQgc3RhcnQgbG9va2luZyBhdCByZWxhdGVkIGNvbW1pdHMsIG9yIHN1cnJvdW5kaW5nIGZ1bmN0aW9ucy4gSSB3YW50IHRvIGJ1aWxkIGEgcXVpY2sgbWVudGFsIG1hcCBvZiB0aGUgY2hhbmdlJiMzOTtzIG9yaWdpbiBhbmQgcHVycG9zZS4gR290dGEgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjI6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21kJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWQvbWQuYz0xNjA0PXN0YXRpYyB2b2lkIHN1cGVyXzkwX3N5bmMoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IG1kX3JkZXYgKnJkZXYpXG4tLVxuZHJpdmVycy9tZC9tZC5jLTE2NDgtXG5kcml2ZXJzL21kL21kLmM6MTY0OTpcdGlmIChtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcilcbmRyaXZlcnMvbWQvbWQuYy0xNjUwLVx0XHRzYi1cdTAwM2VtaW5vcl92ZXJzaW9uID0gOTA7XG4tLVxuZHJpdmVycy9tZC9tZC5jPTQzNjg9bGF5b3V0X3N0b3JlKHN0cnVjdCBtZGRldiAqbWRkZXYsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcbi0tXG5kcml2ZXJzL21kL21kLmMtNDM5Mi1cdFx0bWRkZXYtXHUwMDNlbmV3X2xheW91dCA9IG47XG5kcml2ZXJzL21kL21kLmM6NDM5MzpcdFx0aWYgKG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKVxuZHJpdmVycy9tZC9tZC5jLTQzOTQtXHRcdFx0bWRkZXYtXHUwMDNlbGF5b3V0ID0gbjtcbi0tXG5kcml2ZXJzL21kL21kLmM9NDQ4MT1jaHVua19zaXplX3N0b3JlKHN0cnVjdCBtZGRldiAqbWRkZXYsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcbi0tXG5kcml2ZXJzL21kL21kLmMtNDUwNS1cdFx0bWRkZXYtXHUwMDNlbmV3X2NodW5rX3NlY3RvcnMgPSBuIFx1MDAzZVx1MDAzZSA5O1xuZHJpdmVycy9tZC9tZC5jOjQ1MDY6XHRcdGlmIChtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcilcbmRyaXZlcnMvbWQvbWQuYy00NTA3LVx0XHRcdG1kZGV2LVx1MDAzZWNodW5rX3NlY3RvcnMgPSBuIFx1MDAzZVx1MDAzZSA5O1xuLS1cbmRyaXZlcnMvbWQvbWQuYz01MjQyPXN0YXRpYyBpbnQgbWRkZXZfc3RhcnRfcmVzaGFwZShzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxuLS1cbmRyaXZlcnMvbWQvbWQuYy01MjQ4LVxuZHJpdmVycy9tZC9tZC5jOjUyNDk6XHRpZiAobWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IgfHxcbmRyaXZlcnMvbWQvbWQuYy01MjUwLVx0ICAgIG1kZGV2LVx1MDAzZXBlcnMtXHUwMDNlY2hlY2tfcmVzaGFwZSA9PSBOVUxMIHx8XG4tLVxuZHJpdmVycy9tZC9tZC5jPTcwODQ9c3RhdGljIHZvaWQgX19tZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9tZC5jLTcwOTgtXG5kcml2ZXJzL21kL21kLmM6NzA5OTpcdGlmIChtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3Rvcikge1xuZHJpdmVycy9tZC9tZC5jLTcxMDAtXHRcdG1kZGV2LVx1MDAzZWRlbHRhX2Rpc2tzID0gMDtcbi0tXG5kcml2ZXJzL21kL21kLmM9MTAyNjQ9c3RhdGljIHZvaWQgbWRfc3RhcnRfc3luYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKVxuLS1cbmRyaXZlcnMvbWQvbWQuYy0xMDI3NS1cdCAqL1xuZHJpdmVycy9tZC9tZC5jOjEwMjc2Olx0aWYgKChtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvciB8fCAhbWRfaXNfcmR3cihtZGRldikpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9tZC9tZC5jLTEwMjc3LVx0ICAgIG1kX3NwYXJlc19uZWVkX2NoYW5nZShtZGRldikpIHtcbi0tXG5kcml2ZXJzL21kL21kLmMtMTAyODgtXHQgKi9cbmRyaXZlcnMvbWQvbWQuYzoxMDI4OTpcdGlmICghc3VzcGVuZCBcdTAwMjZcdTAwMjYgKG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yIHx8ICFtZF9pc19yZHdyKG1kZGV2KSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL21kL21kLmMtMTAyOTAtXHQgICAgbWRfc3BhcmVzX25lZWRfY2hhbmdlKG1kZGV2KSkge1xuLS1cbmRyaXZlcnMvbWQvbWQuaD02OTA9c3RhdGljIGlubGluZSBib29sIHJlc2hhcGVfaW50ZXJydXB0ZWQoc3RydWN0IG1kZGV2ICptZGRldilcbi0tXG5kcml2ZXJzL21kL21kLmgtNjkyLVx0LyogcmVzaGFwZSBuZXZlciBzdGFydCAqL1xuZHJpdmVycy9tZC9tZC5oOjY5MzpcdGlmIChtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcilcbmRyaXZlcnMvbWQvbWQuaC02OTQtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL21kL3JhaWQxMC5jPTMxNDE9c3RhdGljIHNlY3Rvcl90IHJhaWQxMF9zeW5jX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLFxuLS1cbmRyaXZlcnMvbWQvcmFpZDEwLmMtMzE1OS1cdCAgICBtZGRldi1cdTAwM2VyZXN5bmNfb2Zmc2V0ID09IE1heFNlY3RvciBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbWQvcmFpZDEwLmM6MzE2MDpcdCAgICBtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvciBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbWQvcmFpZDEwLmMtMzE2MS1cdCAgICAhdGVzdF9iaXQoTURfUkVDT1ZFUllfU1lOQywgXHUwMDI2bWRkZXYtXHUwMDNlcmVjb3ZlcnkpIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvbWQvcmFpZDEwLmM9MzgyOD1zdGF0aWMgc3RydWN0IHIxMGNvbmYgKnNldHVwX2NvbmYoc3RydWN0IG1kZGV2ICptZGRldilcbi0tXG5kcml2ZXJzL21kL3JhaWQxMC5jLTM4NzQtXHRjYWxjX3NlY3RvcnMoY29uZiwgbWRkZXYtXHUwMDNlZGV2X3NlY3RvcnMpO1xuZHJpdmVycy9tZC9yYWlkMTAuYzozODc1Olx0aWYgKG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKSB7XG5kcml2ZXJzL21kL3JhaWQxMC5jLTM4NzYtXHRcdGNvbmYtXHUwMDNlcHJldiA9IGNvbmYtXHUwMDNlZ2VvO1xuLS1cbmRyaXZlcnMvbWQvcmFpZDEwLmM9NDkyOD1zdGF0aWMgdm9pZCByYWlkMTBfdXBkYXRlX3Jlc2hhcGVfcG9zKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9yYWlkMTAuYy00OTM0LVx0aWYgKCgobWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiBcdTAwM2M9IGhpKSBcdTAwMjZcdTAwMjYgKG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb24gXHUwMDNlPSBsbykpXG5kcml2ZXJzL21kL3JhaWQxMC5jOjQ5MzU6XHQgICAgfHwgbWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpXG5kcml2ZXJzL21kL3JhaWQxMC5jLTQ5MzYtXHRcdGNvbmYtXHUwMDNlcmVzaGFwZV9wcm9ncmVzcyA9IG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb247XG4tLVxuZHJpdmVycy9tZC9yYWlkNS5jPTYyMTg9c3RhdGljIGJvb2wgcmFpZDVfbWFrZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKiBiaSlcbi0tXG5kcml2ZXJzL21kL3JhaWQ1LmMtNjI0OS1cdGlmIChydyA9PSBSRUFEIFx1MDAyNlx1MDAyNiBtZGRldi1cdTAwM2VkZWdyYWRlZCA9PSAwIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9tZC9yYWlkNS5jOjYyNTA6XHQgICAgbWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcbmRyaXZlcnMvbWQvcmFpZDUuYy02MjUxLVx0XHRiaSA9IGNodW5rX2FsaWduZWRfcmVhZChtZGRldiwgYmkpO1xuLS1cbmRyaXZlcnMvbWQvcmFpZDUuYz03NjMzPXN0YXRpYyBzdHJ1Y3QgcjVjb25mICpzZXR1cF9jb25mKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9yYWlkNS5jLTc3MjUtXHRjb25mLVx1MDAzZXJhaWRfZGlza3MgPSBtZGRldi1cdTAwM2VyYWlkX2Rpc2tzO1xuZHJpdmVycy9tZC9yYWlkNS5jOjc3MjY6XHRpZiAobWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpXG5kcml2ZXJzL21kL3JhaWQ1LmMtNzcyNy1cdFx0Y29uZi1cdTAwM2VwcmV2aW91c19yYWlkX2Rpc2tzID0gbWRkZXYtXHUwMDNlcmFpZF9kaXNrcztcbi0tXG5kcml2ZXJzL21kL3JhaWQ1LmM9ODQ0ND1zdGF0aWMgaW50IHJhaWQ1X2FkZF9kaXNrKHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBtZF9yZGV2ICpyZGV2KVxuLS1cbmRyaXZlcnMvbWQvcmFpZDUuYy04NTA3LVx0XHRpZiAodGVzdF9iaXQoV2FudFJlcGxhY2VtZW50LCBcdTAwMjZ0bXAtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9tZC9yYWlkNS5jOjg1MDg6XHRcdCAgICBtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvciBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbWQvcmFpZDUuYy04NTA5LVx0XHQgICAgcC1cdTAwM2VyZXBsYWNlbWVudCA9PSBOVUxMKSB7XG4tLVxuZHJpdmVycy9tZC9yYWlkNS5jPTg1ODY9c3RhdGljIGludCBjaGVja19yZXNoYXBlKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4tLVxuZHJpdmVycy9tZC9yYWlkNS5jLTg1OTktXHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9tZC9yYWlkNS5jOjg2MDA6XHRpZiAobWRkZXYtXHUwMDNlZGVsdGFfZGlza3MgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKSB7XG5kcml2ZXJzL21kL3JhaWQ1LmMtODYwMS1cdFx0LyogV2UgbWlnaHQgYmUgYWJsZSB0byBzaHJpbmssIGJ1dCB0aGUgZGV2aWNlcyBtdXN0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5NzcKCQkJCQkJCW91dHB1dDogMTc2CgkJCQkJCQl0aG91Z2h0czogNTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEFuYWx5c2lzIG9mIGBfX21kX3N0b3BgIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb2RlIGluIHF1ZXN0aW9uIGlzIGRlYWxpbmcgd2l0aCB0aGUgYF9fbWRfc3RvcGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBob3cgaXQgaGFuZGxlcyB0aGUgcmVzZXQgb2YgcmVzaGFwZS1yZWxhdGVkIHBhcmFtZXRlcnMgd2l0aGluIHRoZSBgbWRkZXZgIHN0cnVjdHVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gaG93IHRoaXMgaXMgd29ya2luZyBhbmQgaWYgdGhpcyBleHBvc2VzIGFueSByaXNrcy4KClRoZSBjcml0aWNhbCBjb25kaXRpb24gZm9yIHRoaXMgcmVzZXQgaXMgYG1kZGV2LSZndDtyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcmAsIHdoaWNoIGluZGljYXRlcyB0aGF0IGEgcmVzaGFwZSBvcGVyYXRpb24gaXNuJiMzOTt0IGFjdGl2ZSBvciB3YXNuJiMzOTt0IGV2ZW4gc3RhcnRlZC4gVW5kZXIgdGhpcyBjb25kaXRpb24sIHRoZSBwYXRjaCBpcyByZXNldHRpbmcgYGRlbHRhX2Rpc2tzYCwgYHJlc2hhcGVfYmFja3dhcmRzYCwgYG5ld19sZXZlbGAsIGBuZXdfbGF5b3V0YCwgYW5kIGBuZXdfY2h1bmtfc2VjdG9yc2AuCgpNeSBjb25jZXJuIGltbWVkaWF0ZWx5IHR1cm5zIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJcyB0aGVyZSBhbnkgcmlzayBoZXJlPyBBZnRlciBhIHF1aWNrIGNvZGUgcmV2aWV3LCBpdCBzZWVtcyBjbGVhciB0aGF0IGBtZGRldmAgaXMgYW4gZXhpc3RpbmcsIGhlYXAtYWxsb2NhdGVkIHN0cnVjdHVyZSwgbWVhbmluZyBpdHMgbWVtYmVycyBhcmUgbGlrZWx5IGFscmVhZHkgaW5pdGlhbGl6ZWQuIFRoZSBwYXRjaCBvdmVyd3JpdGVzIHNwZWNpZmljIGZpZWxkcyAqd2l0aGluKiB0aGF0IHN0cnVjdHVyZSB3aXRoIGVpdGhlciB6ZXJvIHZhbHVlcyBvciB2YWx1ZXMgdGFrZW4gZnJvbSBvdGhlciBhbHJlYWR5LWluaXRpYWxpemVkIGBtZGRldmAgZmllbGRzLiBObyBuZXcgbWVtb3J5IGlzIGJlaW5nIGFsbG9jYXRlZC4gSSYjMzk7bSBub3Qgc2VlaW5nIGFueSBzY2VuYXJpb3Mgd2hlcmUgdW5pbml0aWFsaXplZCBkYXRhIGlzIGJlaW5nIGNvcGllZCB0byB1c2Vyc3BhY2UsIG9yIHdoZXJlIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGFyZSBiZWluZyB1c2VkIGluIGFueSBicmFuY2hpbmcgbG9naWMuIFRoaXMgcHJpbWFyaWx5IHNlZW1zIHRvIGJlIGEgY2xlYW51cCBvcGVyYXRpb24gdG8gZW5zdXJlIHRoYXQgc3RhbGUgcmVzaGFwZSBwYXJhbWV0ZXJzIGFyZW4mIzM5O3QgY2FycmllZCBvdmVyIGFmdGVyIGFuIGFycmF5IHN0b3AgaWYgYSByZXNoYXBlIHdhcyBuZXZlciBhY3R1YWxseSBlbmdhZ2VkLgoKR2l2ZW4gdGhhdCwgSSBkb24mIzM5O3Qgc2VlIGFueSBvYnZpb3VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgdHJpZ2dlciBLTVNBTi4gV2UmIzM5O3JlIG5vdCBzZW5kaW5nIGtlcm5lbCBzdHJ1Y3R1cmVzIHRvIHVzZXJzcGFjZSwgd2UgYXJlbiYjMzk7dCB1c2luZyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBhbnkgZGVjaXNpb24gcG9pbnRzLCB0aGVyZSBhcmUgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyBnb2luZyBvbiB3aXRob3V0IGluaXRpYWxpemF0aW9uLCBhbmQgdGhlIHBhdGNoIGlzbiYjMzk7dCBtb2RpZnlpbmcgYm91bmRzIG9yIGxlbmd0aHMgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuCgpUbyBiZSBjb21wbGV0ZWx5IHRob3JvdWdoLCBsZXQmIzM5O3MgY29udHJhc3QgS0FTQU4gYW5kIEtNU0FOLiBUaGlzIHBhdGNoIGZvY3VzZXMgb24gcmVzZXR0aW5nIHJlc2hhcGUtcmVsYXRlZCBmaWVsZHMgd2l0aGluIGBtZGRldmAuIFRoZSBtb2RpZmljYXRpb25zIGFyZSBzb2xlbHkgd2l0aGluIHRoZSBgc3RydWN0IG1kZGV2YCwgYW5kIHRoZXNlIGZpZWxkcyBhcmUgYXNzaWduZWQgZWl0aGVyIGNvbnN0YW50IHplcm9lcyBvciB2YWx1ZXMgZGVyaXZlZCBmcm9tIGFscmVhZHkgaW5pdGlhbGl6ZWQgZmllbGRzIHdpdGhpbiBgbWRkZXZgLiBUaGVyZSBhcmUgbm8gbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlcnMsIGRhdGEgbGVha3MgdG8gdXNlcnNwYWNlLCB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgdmFyaWFibGVzLCBvciBhbnkgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBQb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIGFycmF5IGxpZmVjeWNsZSBtYW5hZ2VtZW50LCBzdGF0ZSB0cmFuc2l0aW9ucywgb3IgbWVtb3J5IHNhZmV0eSwgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIG9yIGxvY2tpbmcgaXNzdWVzLCB3b3VsZCBmYWxsIHVuZGVyIHRoZSBzY29wZSBvZiBLQVNBTi9MT0NLREVQLCBub3QgS01TQU4uIFRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgY2xlYXJseSBLTVNBTi1zYWZlLgoKQWxyaWdodCwgdGhhdCBjb3ZlcnMgaXQuIEkmIzM5O20gY29tZm9ydGFibGUgd2l0aCB0aGUgS01TQU4gYXNwZWN0cy4gTGV0JiMzOTtzIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIyOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBfX21kX3N0b3AoKWAgaW4gYGRyaXZlcnMvbWQvbWQuY2AgdG8gcmVzZXQgcmVzaGFwZSBjb25maWd1cmF0aW9uIGZpZWxkcyAoYGRlbHRhX2Rpc2tzYCwgYHJlc2hhcGVfYmFja3dhcmRzYCwgYG5ld19sZXZlbGAsIGBuZXdfbGF5b3V0YCwgYG5ld19jaHVua19zZWN0b3JzYCkgaW4gYHN0cnVjdCBtZGRldmAgd2hlbiBzdG9wcGluZyBhbiBtZCBhcnJheSB3aGVyZSBgcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3JgLlxuXG5BbGwgYXNzaWduZWQgdmFsdWVzIGFyZSBlaXRoZXIgY29uc3RhbnQgemVyb2VzIG9yIGRlcml2ZWQgZnJvbSBleGlzdGluZywgaW5pdGlhbGl6ZWQgZmllbGRzIG9mIGBtZGRldmAuIFRoZSBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgZG9lcyBub3QgYWx0ZXIgY29weS10by11c2VyIG9wZXJhdGlvbnMsIGFuZCBkb2VzIG5vdCBicmFuY2ggb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgd2FycmFudCBhIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBfX21kX3N0b3AoKWAgaW4gYGRyaXZlcnMvbWQvbWQuY2AgdG8gcmVzZXQgcmVzaGFwZSBjb25maWd1cmF0aW9uIGZpZWxkcyAoYGRlbHRhX2Rpc2tzYCwgYHJlc2hhcGVfYmFja3dhcmRzYCwgYG5ld19sZXZlbGAsIGBuZXdfbGF5b3V0YCwgYG5ld19jaHVua19zZWN0b3JzYCkgaW4gYHN0cnVjdCBtZGRldmAgd2hlbiBzdG9wcGluZyBhbiBtZCBhcnJheSB3aGVyZSBgcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3JgLlxuXG5BbGwgYXNzaWduZWQgdmFsdWVzIGFyZSBlaXRoZXIgY29uc3RhbnQgemVyb2VzIG9yIGRlcml2ZWQgZnJvbSBleGlzdGluZywgaW5pdGlhbGl6ZWQgZmllbGRzIG9mIGBtZGRldmAuIFRoZSBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgZG9lcyBub3QgYWx0ZXIgY29weS10by11c2VyIG9wZXJhdGlvbnMsIGFuZCBkb2VzIG5vdCBicmFuY2ggb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgd2FycmFudCBhIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6MjAuMzI0MjQ0NTQ5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMwODcxNzA4NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9NRFwiLFxuICAgIFwiTURfUkFJRDQ1NlwiLFxuICAgIFwiTURfUkFJRDEwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19tZF9zdG9wXCIsXG4gICAgXCJkb19tZF9zdG9wXCIsXG4gICAgXCJtZF9zdG9wXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX19tZF9zdG9wKClgIGluIGBkcml2ZXJzL21kL21kLmNgIHRvIHJlc2V0IHJlc2hhcGUgY29uZmlndXJhdGlvbiBmaWVsZHMgKGBkZWx0YV9kaXNrc2AsIGByZXNoYXBlX2JhY2t3YXJkc2AsIGBuZXdfbGV2ZWxgLCBgbmV3X2xheW91dGAsIGBuZXdfY2h1bmtfc2VjdG9yc2ApIGluIGBzdHJ1Y3QgbWRkZXZgIHdoZW4gc3RvcHBpbmcgYW4gbWQgYXJyYXkgd2hlcmUgYHJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yYC5cXG5cXG5BbGwgYXNzaWduZWQgdmFsdWVzIGFyZSBlaXRoZXIgY29uc3RhbnQgemVyb2VzIG9yIGRlcml2ZWQgZnJvbSBleGlzdGluZywgaW5pdGlhbGl6ZWQgZmllbGRzIG9mIGBtZGRldmAuIFRoZSBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgZG9lcyBub3QgYWx0ZXIgY29weS10by11c2VyIG9wZXJhdGlvbnMsIGFuZCBkb2VzIG5vdCBicmFuY2ggb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgd2FycmFudCBhIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBfX21kX3N0b3AoKSBpbiB0aGUgTUQgKE11bHRpcGxlIERldmljZXMgLyBTb2Z0d2FyZSBSQUlEKSBkcml2ZXIgdG8gcmVzZXQgcmVzaGFwZSBzdGF0ZSAoZGVsdGFfZGlza3MsIHJlc2hhcGVfYmFja3dhcmRzLCBuZXdfbGV2ZWwsIG5ld19sYXlvdXQsIG5ld19jaHVua19zZWN0b3JzKSB3aGVuIHN0b3BwaW5nIGFuIGFycmF5IGFmdGVyIGEgcmVzaGFwZSBvcGVyYXRpb24gaGFzIGZpbmlzaGVkIChyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcikuIFRoaXMgY29kZSBpcyBmdWxseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtZCBpb2N0bCAoZS5nLiwgU1RPUF9BUlJBWSksIHN5c2ZzIGFycmF5X3N0YXRlIGF0dHJpYnV0ZXMsIG9yIGRtLXJhaWQgdGVhcmRvd24sIGFuZCB3YXJyYW50cyBmdXp6aW5nIGZvciBwb3RlbnRpYWwgc3RhdGUgbWFuYWdlbWVudCByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjIwLjMyNDI1MDI0OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM1OTk0NDExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGM2YWVjMzc0YzA0N2U4YTIyMGFlMWRmN2NlZmY5MzM4N2RhOTI2ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCA5IDIyOjAwOjE5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvbWQuYyBiL2RyaXZlcnMvbWQvbWQuY1xcbmluZGV4IDY4MGIzNGE2M2NiM2QuLjM4YWI0MWJiY2QwZWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9tZC9tZC5jXFxuKysrIGIvZHJpdmVycy9tZC9tZC5jXFxuQEAgLTcwOTUsNiArNzA5NSwxNCBAQCBzdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcXG4gXFx0bWRkZXYtXFx1MDAzZXByaXZhdGUgPSBOVUxMO1xcbiBcXHRwdXRfcGVycyhwZXJzKTtcXG4gXFx0Y2xlYXJfYml0KE1EX1JFQ09WRVJZX0ZST1pFTiwgXFx1MDAyNm1kZGV2LVxcdTAwM2VyZWNvdmVyeSk7XFxuK1xcbitcXHRpZiAobWRkZXYtXFx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKSB7XFxuK1xcdFxcdG1kZGV2LVxcdTAwM2VkZWx0YV9kaXNrcyA9IDA7XFxuK1xcdFxcdG1kZGV2LVxcdTAwM2VyZXNoYXBlX2JhY2t3YXJkcyA9IDA7XFxuK1xcdFxcdG1kZGV2LVxcdTAwM2VuZXdfbGV2ZWwgPSBtZGRldi1cXHUwMDNlbGV2ZWw7XFxuK1xcdFxcdG1kZGV2LVxcdTAwM2VuZXdfbGF5b3V0ID0gbWRkZXYtXFx1MDAzZWxheW91dDtcXG4rXFx0XFx0bWRkZXYtXFx1MDAzZW5ld19jaHVua19zZWN0b3JzID0gbWRkZXYtXFx1MDAzZWNodW5rX3NlY3RvcnM7XFxuK1xcdH1cXG4gfVxcbiBcXG4gdm9pZCBtZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjIwLjg2MTA1NDg0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozOTcwOTg4MDY5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX01EXCIsXG4gICAgXCJNRF9SQUlENDU2XCIsXG4gICAgXCJNRF9SQUlEMTBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX21kX3N0b3BcIixcbiAgICBcImRvX21kX3N0b3BcIixcbiAgICBcIm1kX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBfX21kX3N0b3AoKSBpbiB0aGUgTUQgKE11bHRpcGxlIERldmljZXMgLyBTb2Z0d2FyZSBSQUlEKSBkcml2ZXIgdG8gcmVzZXQgcmVzaGFwZSBzdGF0ZSAoZGVsdGFfZGlza3MsIHJlc2hhcGVfYmFja3dhcmRzLCBuZXdfbGV2ZWwsIG5ld19sYXlvdXQsIG5ld19jaHVua19zZWN0b3JzKSB3aGVuIHN0b3BwaW5nIGFuIGFycmF5IGFmdGVyIGEgcmVzaGFwZSBvcGVyYXRpb24gaGFzIGZpbmlzaGVkIChyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcikuIFRoaXMgY29kZSBpcyBmdWxseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtZCBpb2N0bCAoZS5nLiwgU1RPUF9BUlJBWSksIHN5c2ZzIGFycmF5X3N0YXRlIGF0dHJpYnV0ZXMsIG9yIGRtLXJhaWQgdGVhcmRvd24sIGFuZCB3YXJyYW50cyBmdXp6aW5nIGZvciBwb3RlbnRpYWwgc3RhdGUgbWFuYWdlbWVudCByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGM2YWVjMzc0YzA0N2U4YTIyMGFlMWRmN2NlZmY5MzM4N2RhOTI2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMjI6MDA6MTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL21kLmMgYi9kcml2ZXJzL21kL21kLmNcbmluZGV4IDY4MGIzNGE2M2NiM2QuLjM4YWI0MWJiY2QwZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21kL21kLmNcbisrKyBiL2RyaXZlcnMvbWQvbWQuY1xuQEAgLTcwOTUsNiArNzA5NSwxNCBAQCBzdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcbiBcdG1kZGV2LVx1MDAzZXByaXZhdGUgPSBOVUxMO1xuIFx0cHV0X3BlcnMocGVycyk7XG4gXHRjbGVhcl9iaXQoTURfUkVDT1ZFUllfRlJPWkVOLCBcdTAwMjZtZGRldi1cdTAwM2VyZWNvdmVyeSk7XG4rXG4rXHRpZiAobWRkZXYtXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcbitcdFx0bWRkZXYtXHUwMDNlZGVsdGFfZGlza3MgPSAwO1xuK1x0XHRtZGRldi1cdTAwM2VyZXNoYXBlX2JhY2t3YXJkcyA9IDA7XG4rXHRcdG1kZGV2LVx1MDAzZW5ld19sZXZlbCA9IG1kZGV2LVx1MDAzZWxldmVsO1xuK1x0XHRtZGRldi1cdTAwM2VuZXdfbGF5b3V0ID0gbWRkZXYtXHUwMDNlbGF5b3V0O1xuK1x0XHRtZGRldi1cdTAwM2VuZXdfY2h1bmtfc2VjdG9ycyA9IG1kZGV2LVx1MDAzZWNodW5rX3NlY3RvcnM7XG4rXHR9XG4gfVxuIFxuIHZvaWQgbWRfc3RvcChzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6MjAuODYxMDU3MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExMjIyMzQwMjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggYW5kIENvbnRleHQqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBhbmQgdGhlIGFzc29jaWF0ZWQgdGFzay4gVGhlIGZhY3QgdGhhdCB0aGUgY2hhbmdlIHRhcmdldHMgYGRyaXZlcnMvbWQvbWQuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBfX21kX3N0b3AoKWAgZnVuY3Rpb24sIGltbWVkaWF0ZWx5IHNldHMgbXkgYW5hbHl0aWNhbCB3aGVlbHMgdHVybmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjb2RlJ3MgZnVuY3Rpb25hbGl0eSwgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMsIGFuZCBhY2Nlc3NpYmlsaXR5IGJlZm9yZSBnZXR0aW5nIGludG8gdGhlIGRldGFpbHMuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSB3aXRoaW4gYF9fbWRfc3RvcCgpYC4gSSdsbCB1c2UgYSBgcmVhZC1maWxlYCBjb21tYW5kIHRvIGxvb2sgZGlyZWN0bHkgYXQgdGhlIGNvZGUgYXJvdW5kIGxpbmUgNzA5NSBpbiBgZHJpdmVycy9tZC9tZC5jYC4gVGhpcyB3aWxsIGFsbG93IG1lIHRvIHF1aWNrbHkgYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoZSBmdW5jdGlvbidzIHB1cnBvc2UsIHRoZSB2YXJpYWJsZXMgaXQgb3BlcmF0ZXMgb24sIGFuZCBwb3RlbnRpYWwgY29udHJvbCBmbG93IHBhdGhzLiBVbmRlcnN0YW5kaW5nIHRoZSBsb2NhbCBjb250ZXh0LCBwb3RlbnRpYWwgc3ltYm9scywgYW5kIGNvbmZpZ3VyYXRpb25zIHdpbGwgYmUga2V5IHRvIHRob3JvdWdobHkgdW5kZXJzdGFuZGluZyB0aGlzIHBhdGNoJ3MgaW1wYWN0LiBJIHdhbnQgdG8gYnVpbGQgYSBzb2xpZCBmb3VuZGF0aW9uIGJlZm9yZSBkaXZpbmcgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTIwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMjowMDozMi4wODMzOTk5MTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTc1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZC9tZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDcwODAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjcwODA6XFx0XFx0aWYgKCFtZGRldl9pc19kbShtZGRldikpXFxuNzA4MTpcXHRcXHRcXHRibGtfc3luY19xdWV1ZShtZGRldi1cXHUwMDNlZ2VuZGlzay1cXHUwMDNlcXVldWUpO1xcbjcwODI6XFx0fVxcbjcwODM6XFx0XFxuNzA4NDpcXHRzdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcXG43MDg1OlxcdHtcXG43MDg2OlxcdFxcdHN0cnVjdCBtZF9wZXJzb25hbGl0eSAqcGVycyA9IG1kZGV2LVxcdTAwM2VwZXJzO1xcbjcwODc6XFx0XFxuNzA4ODpcXHRcXHRtZGRldl9kZXRhY2gobWRkZXYpO1xcbjcwODk6XFx0XFx0bWRfYml0bWFwX2Rlc3Ryb3kobWRkZXYpO1xcbjcwOTA6XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZtZGRldi1cXHUwMDNlbG9jayk7XFxuNzA5MTpcXHRcXHRtZGRldi1cXHUwMDNlcGVycyA9IE5VTEw7XFxuNzA5MjpcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2bWRkZXYtXFx1MDAzZWxvY2spO1xcbjcwOTM6XFx0XFx0aWYgKG1kZGV2LVxcdTAwM2Vwcml2YXRlKVxcbjcwOTQ6XFx0XFx0XFx0cGVycy1cXHUwMDNlZnJlZShtZGRldiwgbWRkZXYtXFx1MDAzZXByaXZhdGUpO1xcbjcwOTU6XFx0XFx0bWRkZXYtXFx1MDAzZXByaXZhdGUgPSBOVUxMO1xcbjcwOTY6XFx0XFx0cHV0X3BlcnMocGVycyk7XFxuNzA5NzpcXHRcXHRjbGVhcl9iaXQoTURfUkVDT1ZFUllfRlJPWkVOLCBcXHUwMDI2bWRkZXYtXFx1MDAzZXJlY292ZXJ5KTtcXG43MDk4OlxcdFxcbjcwOTk6XFx0XFx0aWYgKG1kZGV2LVxcdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3Rvcikge1xcbjcxMDA6XFx0XFx0XFx0bWRkZXYtXFx1MDAzZWRlbHRhX2Rpc2tzID0gMDtcXG43MTAxOlxcdFxcdFxcdG1kZGV2LVxcdTAwM2VyZXNoYXBlX2JhY2t3YXJkcyA9IDA7XFxuNzEwMjpcXHRcXHRcXHRtZGRldi1cXHUwMDNlbmV3X2xldmVsID0gbWRkZXYtXFx1MDAzZWxldmVsO1xcbjcxMDM6XFx0XFx0XFx0bWRkZXYtXFx1MDAzZW5ld19sYXlvdXQgPSBtZGRldi1cXHUwMDNlbGF5b3V0O1xcbjcxMDQ6XFx0XFx0XFx0bWRkZXYtXFx1MDAzZW5ld19jaHVua19zZWN0b3JzID0gbWRkZXYtXFx1MDAzZWNodW5rX3NlY3RvcnM7XFxuNzEwNTpcXHRcXHR9XFxuNzEwNjpcXHR9XFxuNzEwNzpcXHRcXG43MTA4OlxcdHZvaWQgbWRfc3RvcChzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxcbjcxMDk6XFx0e1xcbjcxMTA6XFx0XFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2bWRkZXYtXFx1MDAzZXJlY29uZmlnX211dGV4KTtcXG43MTExOlxcdFxcbjcxMTI6XFx0XFx0Lyogc3RvcCB0aGUgYXJyYXkgYW5kIGZyZWUgYW4gYXR0YWNoZWQgZGF0YSBzdHJ1Y3R1cmVzLlxcbjcxMTM6XFx0XFx0ICogVGhpcyBpcyBjYWxsZWQgZnJvbSBkbS1yYWlkXFxuNzExNDpcXHRcXHQgKi9cXG43MTE1OlxcdFxcdF9fbWRfc3RvcF93cml0ZXMobWRkZXYpO1xcbjcxMTY6XFx0XFx0X19tZF9zdG9wKG1kZGV2KTtcXG43MTE3OlxcdH1cXG43MTE4OlxcdFxcbjcxMTk6XFx0RVhQT1JUX1NZTUJPTF9HUEwobWRfc3RvcCk7XFxuNzEyMDpcXHRcXG43MTIxOlxcdC8qIGVuc3VyZSAnbWRkZXYtXFx1MDAzZXBlcnMnIGV4aXN0IGJlZm9yZSBjYWxsaW5nIG1kX3NldF9yZWFkb25seSgpICovXFxuNzEyMjpcXHRzdGF0aWMgaW50IG1kX3NldF9yZWFkb25seShzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxcbjcxMjM6XFx0e1xcbjcxMjQ6XFx0XFx0aW50IGVyciA9IDA7XFxuNzEyNTpcXHRcXHRpbnQgZGlkX2ZyZWV6ZSA9IDA7XFxuNzEyNjpcXHRcXG43MTI3OlxcdFxcdGlmIChtZGRldi1cXHUwMDNlZXh0ZXJuYWwgXFx1MDAyNlxcdTAwMjYgdGVzdF9iaXQoTURfU0JfQ0hBTkdFX1BFTkRJTkcsIFxcdTAwMjZtZGRldi1cXHUwMDNlc2JfZmxhZ3MpKVxcbjcxMjg6XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG43MTI5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMjowMDozMi4wODM5NTkxMDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTkwMDAzOTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBfX21kX3N0b3BgIEZ1bmN0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGxpZmVjeWNsZSBvZiB0aGlzIGBfX21kX3N0b3BgIGZ1bmN0aW9uLCBvciBhbnkgdmFyaWF0aW9uIG9mIGl0LiBXaGVyZSBpcyBpdCBiZWluZyBjYWxsZWQ/IE1vcmUgaW1wb3J0YW50bHksIHdoYXQncyAqdXNpbmcqIGl0LCBwZXJoYXBzIGluZGlyZWN0bHk/IFRpbWUgdG8gZ2V0IHRvIHRoZSBzb3VyY2UgY29kZS4gTGV0J3Mgc3RhcnQgd2l0aCBhIGZvY3VzZWQgc2VhcmNoIHdpdGhpbiB0aGUgYGRyaXZlcnMvbWQvbWQuY2AgZmlsZS4gVGhpcyBzZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIFJBSUQtcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBJJ2xsIHNlYXJjaCBmb3IgaW5zdGFuY2VzIG9mIGBfX21kX3N0b3BgIHdpdGhpbiB0aGF0IGZpbGUgdG8gdHJhY2UgaXRzIHVzZSBhbmQgZmlndXJlIG91dCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGRyaXZlci4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5OTksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjM0LjY3Mzk2NTcwMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTgxNTk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX21kX3N0b3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZC9tZC5jPTY5Njc9c3RhdGljIHZvaWQgbWRfY2xlYW4oc3RydWN0IG1kZGV2ICptZGRldilcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy03MDMxLVxcbmRyaXZlcnMvbWQvbWQuYzo3MDMyOnN0YXRpYyB2b2lkIF9fbWRfc3RvcF93cml0ZXMoc3RydWN0IG1kZGV2ICptZGRldilcXG5kcml2ZXJzL21kL21kLmMtNzAzMy17XFxuLS1cXG5kcml2ZXJzL21kL21kLmM9NzA1OT12b2lkIG1kX3N0b3Bfd3JpdGVzKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuLS1cXG5kcml2ZXJzL21kL21kLmMtNzA2My1cXHRzdG9wX3N5bmNfdGhyZWFkKG1kZGV2LCB0cnVlKTtcXG5kcml2ZXJzL21kL21kLmM6NzA2NDpcXHRfX21kX3N0b3Bfd3JpdGVzKG1kZGV2KTtcXG5kcml2ZXJzL21kL21kLmMtNzA2NS1cXHRtZGRldl91bmxvY2sobWRkZXYpO1xcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTcwNjk9c3RhdGljIHZvaWQgbWRkZXZfZGV0YWNoKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuLS1cXG5kcml2ZXJzL21kL21kLmMtNzA4My1cXG5kcml2ZXJzL21kL21kLmM6NzA4NDpzdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcXG5kcml2ZXJzL21kL21kLmMtNzA4NS17XFxuLS1cXG5kcml2ZXJzL21kL21kLmM9NzEwOD12b2lkIG1kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy03MTE0LVxcdCAqL1xcbmRyaXZlcnMvbWQvbWQuYzo3MTE1OlxcdF9fbWRfc3RvcF93cml0ZXMobWRkZXYpO1xcbmRyaXZlcnMvbWQvbWQuYzo3MTE2OlxcdF9fbWRfc3RvcChtZGRldik7XFxuZHJpdmVycy9tZC9tZC5jLTcxMTctfVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTcxMjI9c3RhdGljIGludCBtZF9zZXRfcmVhZG9ubHkoc3RydWN0IG1kZGV2ICptZGRldilcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy03MTQ1LVxcbmRyaXZlcnMvbWQvbWQuYzo3MTQ2OlxcdF9fbWRfc3RvcF93cml0ZXMobWRkZXYpO1xcbmRyaXZlcnMvbWQvbWQuYy03MTQ3LVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTcxNzA9c3RhdGljIGludCBkb19tZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYsIGludCBtb2RlKVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jLTcxOTktXFxuZHJpdmVycy9tZC9tZC5jOjcyMDA6XFx0XFx0X19tZF9zdG9wX3dyaXRlcyhtZGRldik7XFxuZHJpdmVycy9tZC9tZC5jOjcyMDE6XFx0XFx0X19tZF9zdG9wKG1kZGV2KTtcXG5kcml2ZXJzL21kL21kLmMtNzIwMi1cXG4tLVxcbmRyaXZlcnMvbWQvbWQuYz0xMDcyMj1zdGF0aWMgaW50IG1kX25vdGlmeV9yZWJvb3Qoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLFxcbi0tXFxuZHJpdmVycy9tZC9tZC5jLTEwNzMzLVxcdFxcdFxcdGlmIChtZGRldi1cXHUwMDNlcGVycylcXG5kcml2ZXJzL21kL21kLmM6MTA3MzQ6XFx0XFx0XFx0XFx0X19tZF9zdG9wX3dyaXRlcyhtZGRldik7XFxuZHJpdmVycy9tZC9tZC5jLTEwNzM1LVxcdFxcdFxcdGlmIChtZGRldi1cXHUwMDNlcGVyc2lzdGVudClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6MzQuNzQ1NzkzMjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTQ1NTEzMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2Ygd2hhdCBJJ20gc2VlaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgYF9fbWRfc3RvcGAgQ2FsbCBDaGFpbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoZSBgX19tZF9zdG9wYCBmdW5jdGlvbiBpcyBiZWluZyB0cmlnZ2VyZWQuIEl0J3MgY2xlYXIgdGhhdCBpdCdzIGJlaW5nIGNhbGxlZCBpbmRpcmVjdGx5LCBzcGVjaWZpY2FsbHkgdGhyb3VnaCBgbWRfc3RvcGAgYW5kIGBkb19tZF9zdG9wYC4gTXkgbmV4dCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBsb2NhdGlvbnMgdGhhdCBpbml0aWF0ZSBhIHN0b3AuIEkga25vdyB0aGF0IGBkb19tZF9zdG9wYCBpcyBhIGtleSBmdW5jdGlvbiB0byBleGFtaW5lIGFzIHRoYXQgc2VlbXMgdG8gYmUgd2hlcmUgdGhlIHJlYWwgd29yayBvZiBzdG9wcGluZyB0aGUgYXJyYXkgaXMgY2FycmllZCBvdXQuIFxuXG5Gcm9tIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGF0IGBkb19tZF9zdG9wYCBhcHBlYXJzIHRvIGJlIGxpbmtlZCB0byB0aGUgZGV2aWNlIG1hcHBlciBpbnRlcmZhY2UsIG1lYW5pbmcgdGhhdCBpdCBpcyBsaW5rZWQgdG8gdGhpbmdzIGxpa2UgYFNUT1BfQVJSQVlgIGFuZCBgU1RPUF9BUlJBWV9ST2AgaW9jdGxzLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgd2hlbiBJIGFuYWx5emUgaG93IHRoZXNlIHRyaWdnZXJzIGFyZSBhY3RpdmF0ZWQuIEkgYWxzbyBuZWVkIHRvIGNoZWNrIHRoZSBzeXNmcyBgYXJyYXlfc3RhdGVgIHN0b3JlIGFzIHRoYXQgYWxzbyBjb3VsZCB0cmlnZ2VyIHRoZSBjYWxscyB0aGF0IGludGVyZXN0IG1lLlxuXG5MZXQncyB0cmFjZSBhbGwgY2FsbHMgdG8gYGRvX21kX3N0b3BgIHRvIGJ1aWxkIGEgY29tcGxldGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkzMCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjM3Ljg5MTMwOTE2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NDI2MTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRvX21kX3N0b3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZC9tZC5jPTYzOD1zdGF0aWMgdm9pZCBfX21kZGV2X3B1dChzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jLTY0NS1cXHQgKiBJZiBhcnJheSBpcyBmcmVlZCBieSBzdG9wcGluZyBhcnJheSwgTURfREVMRVRFRCBpcyBzZXQgYnlcXG5kcml2ZXJzL21kL21kLmM6NjQ2OlxcdCAqIGRvX21kX3N0b3AoKSwgTURfREVMRVRFRCBpcyBzdGlsbCBzZXQgaGVyZSBpbiBjYXNlIG1kZGV2IGlzIGZyZWVkXFxuZHJpdmVycy9tZC9tZC5jLTY0Ny1cXHQgKiBkaXJlY3RseSBieSBjbG9zaW5nIGEgbWRkZXYgdGhhdCBpcyBjcmVhdGVkIGJ5IGNyZWF0ZV9vbl9vcGVuLlxcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTkxNT12b2lkIG1kZGV2X3VubG9jayhzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jLTk3Ny1cXHRcXHQgKiBBbmQgTURfREVMRVRFRCBpcyBvbmx5IHVzZWQgZm9yIG1kIHJhaWQgd2hpY2ggaXMgc2V0IGluXFxuZHJpdmVycy9tZC9tZC5jOjk3ODpcXHRcXHQgKiBkb19tZF9zdG9wLiBkbSByYWlkIG9ubHkgdXNlcyBtZF9zdG9wIHRvIHN0b3AuIFNvIGRtIHJhaWRcXG5kcml2ZXJzL21kL21kLmMtOTc5LVxcdFxcdCAqIGRvZXNuJ3QgbmVlZCB0byBjaGVjayBNRF9ERUxFVEVEIHdoZW4gZ2V0dGluZyByZWNvbmZpZyBsb2NrXFxuLS1cXG5kcml2ZXJzL21kL21kLmM9NDYxMz1hcnJheV9zdGF0ZV9zaG93KHN0cnVjdCBtZGRldiAqbWRkZXYsIGNoYXIgKnBhZ2UpXFxuLS1cXG5kcml2ZXJzL21kL21kLmMtNDY1MC1cXG5kcml2ZXJzL21kL21kLmM6NDY1MTpzdGF0aWMgaW50IGRvX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldiwgaW50IHJvKTtcXG5kcml2ZXJzL21kL21kLmMtNDY1Mi1zdGF0aWMgaW50IG1kX3NldF9yZWFkb25seShzdHJ1Y3QgbWRkZXYgKm1kZGV2KTtcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYz00NjU2PWFycmF5X3N0YXRlX3N0b3JlKHN0cnVjdCBtZGRldiAqbWRkZXYsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy00NzEyLVxcdFxcdGlmIChtZGRldi1cXHUwMDNlcGVycylcXG5kcml2ZXJzL21kL21kLmM6NDcxMzpcXHRcXHRcXHRlcnIgPSBkb19tZF9zdG9wKG1kZGV2LCAyKTtcXG5kcml2ZXJzL21kL21kLmMtNDcxNC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL21kL21kLmMtNDcxNS1cXHRjYXNlIGNsZWFyOlxcbmRyaXZlcnMvbWQvbWQuYzo0NzE2OlxcdFxcdGVyciA9IGRvX21kX3N0b3AobWRkZXYsIDApO1xcbmRyaXZlcnMvbWQvbWQuYy00NzE3LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTcxMjI9c3RhdGljIGludCBtZF9zZXRfcmVhZG9ubHkoc3RydWN0IG1kZGV2ICptZGRldilcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy03MTY5LSAqL1xcbmRyaXZlcnMvbWQvbWQuYzo3MTcwOnN0YXRpYyBpbnQgZG9fbWRfc3RvcChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBpbnQgbW9kZSlcXG5kcml2ZXJzL21kL21kLmMtNzE3MS17XFxuLS1cXG5kcml2ZXJzL21kL21kLmM9NzI0Mj1zdGF0aWMgdm9pZCBhdXRvcnVuX2FycmF5KHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuLS1cXG5kcml2ZXJzL21kL21kLmMtNzI1OS1cXHRcXHRwcl93YXJuKFxcXCJtZDogZG9fbWRfcnVuKCkgcmV0dXJuZWQgJWRcXFxcblxcXCIsIGVycik7XFxuZHJpdmVycy9tZC9tZC5jOjcyNjA6XFx0XFx0ZG9fbWRfc3RvcChtZGRldiwgMCk7XFxuZHJpdmVycy9tZC9tZC5jLTcyNjEtXFx0fVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTgzNTA9c3RhdGljIGludCBtZF9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXFxuLS1cXG5kcml2ZXJzL21kL21kLmMtODQ0My1cXHRjYXNlIFNUT1BfQVJSQVk6XFxuZHJpdmVycy9tZC9tZC5jOjg0NDQ6XFx0XFx0ZXJyID0gZG9fbWRfc3RvcChtZGRldiwgMCk7XFxuZHJpdmVycy9tZC9tZC5jLTg0NDUtXFx0XFx0Z290byB1bmxvY2s7XFxuLS1cXG5kcml2ZXJzL21kL21kLmg9NDA3PXN0cnVjdCBtZGRldiB7XFxuLS1cXG5kcml2ZXJzL21kL21kLmgtNTE0LVxcdGludFxcdFxcdFxcdFxcdGluX3N5bmM7XFx0Lyoga25vdyB0byBub3QgbmVlZCByZXN5bmMgKi9cXG5kcml2ZXJzL21kL21kLmg6NTE1OlxcdC8qICdvcGVuX211dGV4JyBhdm9pZHMgcmFjZXMgYmV0d2VlbiAnbWRfb3BlbicgYW5kICdkb19tZF9zdG9wJywgc29cXG5kcml2ZXJzL21kL21kLmgtNTE2LVxcdCAqIHRoYXQgd2UgYXJlIG5ldmVyIHN0b3BwaW5nIGFuIGFycmF5IHdoaWxlIGl0IGlzIG9wZW4uXFxuLS1cXG5kcml2ZXJzL21kL21kLmg9NzA5PXN0YXRpYyBpbmxpbmUgaW50IF9fbXVzdF9jaGVjayBtZGRldl9sb2NrKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuLS1cXG5kcml2ZXJzL21kL21kLmgtNzE0LVxcbmRyaXZlcnMvbWQvbWQuaDo3MTU6XFx0LyogTURfREVMRVRFRCBpcyBzZXQgaW4gZG9fbWRfc3RvcCB3aXRoIHJlY29uZmlnX211dGV4LlxcbmRyaXZlcnMvbWQvbWQuaC03MTYtXFx0ICogU28gY2hlY2sgaXQgaGVyZS5cXG4tLVxcbmRyaXZlcnMvbWQvbWQuaC03MjktICogaG9sZHMgdGhlIGxvY2sgaGVyZSBjYW4ndCBiZSBzdG9wcGVkLiBBbmQgYWxsIHBhdGhzIGNhbid0XFxuZHJpdmVycy9tZC9tZC5oOjczMDogKiBjYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgZG9fbWRfc3RvcC5cXG5kcml2ZXJzL21kL21kLmgtNzMxLSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMjowMDozNy45NDk3NDg2MDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODU5NDcxNTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKktjb25maWcgRGVlcCBEaXZlIGZvciBNRCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIEtjb25maWcgb3B0aW9ucyB0aGF0IGFyZSAqYWJzb2x1dGVseSogZXNzZW50aWFsIGZvciB0aGUgTUQgKE11bHRpcGxlIERldmljZSkgc3Vic3lzdGVtLiBJIGtub3cgdGhpcyBzdHVmZiwgYnV0IEkgYWx3YXlzIHN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZS4gVGltZSB0byBkaWcgaW50byB0aGUgc291cmNlIGNvZGUhIExldCdzIGdldCByaWdodCB0byB0aGUgc291cmNlIGFuZCBzZWUgd2hhdCdzIHdoYXQuIE15IGZpcnN0IHN0b3AgaXMgZGVmaW5pdGVseSBgZHJpdmVycy9tZC9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgZnVuZGFtZW50YWwgTUQgY29uZmlndXJhdGlvbiBvcHRpb25zIHNob3VsZCBsaXZlLiBJJ2xsIHBvcmUgb3ZlciB0aGF0IGZpbGUsIHRha2luZyBub3RlcyBhbmQgbWFraW5nIGNvbm5lY3Rpb25zIGluIG15IGhlYWQuIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBidWlsZGluZyBibG9ja3MsIHRoZSBmdW5kYW1lbnRhbCBvcHRpb25zIHRoYXQgZW5hYmxlIGFuZCBjb25maWd1cmUgdGhlIE1EIGxheWVyLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgYnVpbGQgbXkgbWVudGFsIG1vZGVsLCB0aGlzIGlzIGdvbm5hIGJlIGFuIGludGVyZXN0aW5nIHJldmlldy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQxNiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjM5LjgwOTIyMjY1OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU0MTE3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1EXFxcXGJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZC9LY29uZmlnLTUtXFxuZHJpdmVycy9tZC9LY29uZmlnOjY6bWVudWNvbmZpZyBNRFxcbmRyaXZlcnMvbWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIk11bHRpcGxlIGRldmljZXMgZHJpdmVyIHN1cHBvcnQgKFJBSUQgYW5kIExWTSlcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjM5Ljg2NDY0OTM5OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTc1NTgyNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQnVpbGQgUHJvY2VzcyBmb3IgYGRyaXZlcnMvbWQvbWQuY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyBgZHJpdmVycy9tZC9tZC5jYCBnZXRzIGJ1aWx0LiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgZmlyc3QgcGxhY2UgSSdkIGxvb2sgaXMgdXN1YWxseSB0aGUgb2J2aW91czogdGhlIHJlbGV2YW50IGBNYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL21kYCBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgY2hlY2sgYGRyaXZlcnMvbWQvTWFrZWZpbGVgIHRvIHNlZSBpZiB0aGVyZSdzIGEgZGlyZWN0IHJ1bGUgdGhhdCBleHBsaWNpdGx5IG1lbnRpb25zIHRoZSBjb21waWxhdGlvbiBvZiBgbWQuY2AuIElmIG5vdCwgSSdsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBkZXBlbmRlbmNpZXMgb3IgaW1wbGljaXQgcnVsZXMgdGhhdCBtaWdodCB0cmlnZ2VyIGl0cyBidWlsZC4gSSB3b3VsZCBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgYXMgd2VsbC4gVGhpcyB3aWxsIHNob3cgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIGluZmx1ZW5jZSB3aGV0aGVyIGl0J3MgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIGtlcm5lbCBpbWFnZSwgaWYgaXQncyBjb25kaXRpb25hbC4gVGhlc2UgYXJlIHVzdWFsbHkgdGhlIHByaW1hcnkgbWVjaGFuaXNtcyB0aGF0IGRldGVybWluZSB3aGljaCBtb2R1bGVzIG9yIHNvdXJjZSBmaWxlcyBhcmUgYWN0dWFsbHkgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkIGJhc2VkIG9uIHRoZSBjdXJyZW50IGtlcm5lbCBjb25maWd1cmF0aW9uLiBXaXRoIGFueSBsdWNrLCBvbmUgb2YgdGhvc2UgdHdvIGZpbGVzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njk5LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6NDIuNDQwMjM1NjU4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTUyMzQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZFxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21kL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21kL01ha2VmaWxlPTI4PWRtLXpvbmVkLXlcXHQrPSBkbS16b25lZC10YXJnZXQubyBkbS16b25lZC1tZXRhZGF0YS5vIGRtLXpvbmVkLXJlY2xhaW0ub1xcbmRyaXZlcnMvbWQvTWFrZWZpbGUtMjktXFxuZHJpdmVycy9tZC9NYWtlZmlsZTozMDptZC1tb2QteVxcdCs9IG1kLm9cXG5kcml2ZXJzL21kL01ha2VmaWxlLTMxLW1kLW1vZC0kKENPTkZJR19NRF9CSVRNQVApXFx0Kz0gbWQtYml0bWFwLm9cXG4tLVxcbmRyaXZlcnMvbWQvTWFrZWZpbGU9MzQ9bGluZWFyLXkgICAgICAgKz0gbWQtbGluZWFyLm9cXG4tLVxcbmRyaXZlcnMvbWQvTWFrZWZpbGUtMzYtIyBOb3RlOiBsaW5rIG9yZGVyIGlzIGltcG9ydGFudC4gIEFsbCByYWlkIHBlcnNvbmFsaXRpZXNcXG5kcml2ZXJzL21kL01ha2VmaWxlOjM3OiMgYW5kIG11c3QgY29tZSBiZWZvcmUgbWQubywgYXMgdGhleSBlYWNoIGluaXRpYWxpc2VcXG5kcml2ZXJzL21kL01ha2VmaWxlOjM4OiMgdGhlbXNlbHZlcywgYW5kIG1kLm8gbWF5IHVzZSB0aGUgcGVyc29uYWxpdGllcyB3aGVuIGl0XFxuZHJpdmVycy9tZC9NYWtlZmlsZS0zOS0jIGF1dG8taW5pdGlhbGlzZWQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjQyLjQ5NTc2NjYwN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDM5MTExMDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIFJBSUQgRHJpdmVyIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFJBSUQgZHJpdmVyIGlzIGJlaW5nIGJ1aWx0LCBzcGVjaWZpY2FsbHkgd2hhdCdzIGhhcHBlbmluZyBpbiBgZHJpdmVycy9tZC9NYWtlZmlsZWAgYXJvdW5kIGxpbmVzIDIwLTQwLiBJJ20gdGhpbmtpbmcgdGhhdCdzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIGFuZCBvYmplY3QgZmlsZSBpbmNsdXNpb24gZm9yIHRoZSBtb2R1bGUgcmVzaWRlLiBJJ2xsIG5lZWQgdG8gcGlucG9pbnQgYW55IGRlcGVuZGVuY2llcywgY29uZGl0aW9uYWwgY29tcGlsYXRpb25zLCBvciBzcGVjaWFsIGZsYWdzIGRlZmluZWQgdGhlcmUuIFRoaXMgc2VjdGlvbiBwcm9iYWJseSBoYW5kbGVzIHRoZSBjb3JlIG1vZHVsZXMgYW5kIHBlcmhhcHMgYW55IGRldmljZS1zcGVjaWZpYyBkcml2ZXJzIHVuZGVyIHRoZSBSQUlEIHN1YnN5c3RlbS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBjcml0aWNhbCBnbHVlIHRoYXQgdGllcyB0aGUgc291cmNlIGNvZGUgZmlsZXMgaW50byBhIGxvYWRhYmxlIG1vZHVsZS4gVGhhdCdzIGxpa2VseSB3aGVyZSBJJ2xsIGZpbmQgaG93IHRoaW5ncyBhcmUgYmVpbmcgY29tcGlsZWQgYW5kIGxpbmtlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB0byB0cm91Ymxlc2hvb3QgYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCB0aGUgbW9kdWxlJ3MgbG9hZGluZywgb3IgYSBjb25maWd1cmF0aW9uIGNvbmZsaWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTk4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6NDQuOTM0ODgxMzI4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWQvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1ha2VmaWxlIGZvciB0aGUga2VybmVsIHNvZnR3YXJlIFJBSUQgYW5kIExWTSBkcml2ZXJzLlxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRkbS1tb2QteVxcdCs9IGRtLm8gZG0tdGFibGUubyBkbS10YXJnZXQubyBkbS1saW5lYXIubyBkbS1zdHJpcGUubyBcXFxcXFxuICAgNzpcXHRcXHRcXHQgICBkbS1pb2N0bC5vIGRtLWlvLm8gZG0ta2NvcHlkLm8gZG0tc3lzZnMubyBkbS1zdGF0cy5vIFxcXFxcXG4gICA4OlxcdFxcdFxcdCAgIGRtLXJxLm8gZG0taW8tcmV3aW5kLm9cXG4gICA5OlxcdGRtLW11bHRpcGF0aC15XFx0Kz0gZG0tcGF0aC1zZWxlY3Rvci5vIGRtLW1wYXRoLm9cXG4gIDEwOlxcdGRtLWhpc3RvcmljYWwtc2VydmljZS10aW1lLXkgKz0gZG0tcHMtaGlzdG9yaWNhbC1zZXJ2aWNlLXRpbWUub1xcbiAgMTE6XFx0ZG0taW8tYWZmaW5pdHkteSArPSBkbS1wcy1pby1hZmZpbml0eS5vXFxuICAxMjpcXHRkbS1xdWV1ZS1sZW5ndGgteSArPSBkbS1wcy1xdWV1ZS1sZW5ndGgub1xcbiAgMTM6XFx0ZG0tcm91bmQtcm9iaW4teSArPSBkbS1wcy1yb3VuZC1yb2Jpbi5vXFxuICAxNDpcXHRkbS1zZXJ2aWNlLXRpbWUteSArPSBkbS1wcy1zZXJ2aWNlLXRpbWUub1xcbiAgMTU6XFx0ZG0tc25hcHNob3QteVxcdCs9IGRtLXNuYXAubyBkbS1leGNlcHRpb24tc3RvcmUubyBkbS1zbmFwLXRyYW5zaWVudC5vIFxcXFxcXG4gIDE2OlxcdFxcdFxcdCAgICBkbS1zbmFwLXBlcnNpc3RlbnQub1xcbiAgMTc6XFx0ZG0tbWlycm9yLXlcXHQrPSBkbS1yYWlkMS5vXFxuICAxODpcXHRkbS1sb2ctdXNlcnNwYWNlLXkgKz0gZG0tbG9nLXVzZXJzcGFjZS1iYXNlLm8gZG0tbG9nLXVzZXJzcGFjZS10cmFuc2Zlci5vXFxuICAxOTpcXHRkbS1iaW8tcHJpc29uLXkgKz0gZG0tYmlvLXByaXNvbi12MS5vIGRtLWJpby1wcmlzb24tdjIub1xcbiAgMjA6XFx0ZG0tdGhpbi1wb29sLXlcXHQrPSBkbS10aGluLm8gZG0tdGhpbi1tZXRhZGF0YS5vXFxuICAyMTpcXHRkbS1jYWNoZS15XFx0Kz0gZG0tY2FjaGUtdGFyZ2V0Lm8gZG0tY2FjaGUtbWV0YWRhdGEubyBkbS1jYWNoZS1wb2xpY3kubyBcXFxcXFxuICAyMjpcXHRcXHRcXHQgICAgZG0tY2FjaGUtYmFja2dyb3VuZC10cmFja2VyLm9cXG4gIDIzOlxcdGRtLWNhY2hlLXNtcS15XFx0Kz0gZG0tY2FjaGUtcG9saWN5LXNtcS5vXFxuICAyNDpcXHRkbS1lYnMteVxcdCs9IGRtLWVicy10YXJnZXQub1xcbiAgMjU6XFx0ZG0tZXJhLXlcXHQrPSBkbS1lcmEtdGFyZ2V0Lm9cXG4gIDI2OlxcdGRtLWNsb25lLXlcXHQrPSBkbS1jbG9uZS10YXJnZXQubyBkbS1jbG9uZS1tZXRhZGF0YS5vXFxuICAyNzpcXHRkbS12ZXJpdHkteVxcdCs9IGRtLXZlcml0eS10YXJnZXQub1xcbiAgMjg6XFx0ZG0tem9uZWQteVxcdCs9IGRtLXpvbmVkLXRhcmdldC5vIGRtLXpvbmVkLW1ldGFkYXRhLm8gZG0tem9uZWQtcmVjbGFpbS5vXFxuICAyOTpcXHRcXG4gIDMwOlxcdG1kLW1vZC15XFx0Kz0gbWQub1xcbiAgMzE6XFx0bWQtbW9kLSQoQ09ORklHX01EX0JJVE1BUClcXHQrPSBtZC1iaXRtYXAub1xcbiAgMzI6XFx0bWQtbW9kLSQoQ09ORklHX01EX0xMQklUTUFQKVxcdCs9IG1kLWxsYml0bWFwLm9cXG4gIDMzOlxcdHJhaWQ0NTYteVxcdCs9IHJhaWQ1Lm8gcmFpZDUtY2FjaGUubyByYWlkNS1wcGwub1xcbiAgMzQ6XFx0bGluZWFyLXkgICAgICAgKz0gbWQtbGluZWFyLm9cXG4gIDM1OlxcdFxcbiAgMzY6XFx0IyBOb3RlOiBsaW5rIG9yZGVyIGlzIGltcG9ydGFudC4gIEFsbCByYWlkIHBlcnNvbmFsaXRpZXNcXG4gIDM3OlxcdCMgYW5kIG11c3QgY29tZSBiZWZvcmUgbWQubywgYXMgdGhleSBlYWNoIGluaXRpYWxpc2VcXG4gIDM4OlxcdCMgdGhlbXNlbHZlcywgYW5kIG1kLm8gbWF5IHVzZSB0aGUgcGVyc29uYWxpdGllcyB3aGVuIGl0XFxuICAzOTpcXHQjIGF1dG8taW5pdGlhbGlzZWQuXFxuICA0MDpcXHRcXG4gIDQxOlxcdG9iai0kKENPTkZJR19NRF9MSU5FQVIpXFx0XFx0Kz0gbGluZWFyLm9cXG4gIDQyOlxcdG9iai0kKENPTkZJR19NRF9SQUlEMClcXHRcXHQrPSByYWlkMC5vXFxuICA0MzpcXHRvYmotJChDT05GSUdfTURfUkFJRDEpXFx0XFx0Kz0gcmFpZDEub1xcbiAgNDQ6XFx0b2JqLSQoQ09ORklHX01EX1JBSUQxMClcXHRcXHQrPSByYWlkMTAub1xcbiAgNDU6XFx0b2JqLSQoQ09ORklHX01EX1JBSUQ0NTYpXFx0Kz0gcmFpZDQ1Ni5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjQ0LjkzNDk1NTY1OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTIyMTg0NjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQnVpbGQgUHJvY2VzcyBmb3IgYG1kLW1vZGAqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIGBtZC1tb2RgLiBUaGlzIGlzIGEgY29yZSBjb21wb25lbnQsIGFuZCBJJ20gc3VyZSBpdCdzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBlbnRpcmUgUkFJRCBzeXN0ZW0gaXMgcHV0IHRvZ2V0aGVyLiBUbyBnZXQgdG8gdGhlIGhlYXJ0IG9mIGl0LCBJJ2xsIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSBrbm93IHRoZSBgZHJpdmVycy9tZC9NYWtlZmlsZWAgaXMgdGhlIHBsYWNlIHRvIHN0YXJ0LCBhbmQgbGluZXMgNDYgdGhyb3VnaCA2MCBhcmUgbGlrZWx5IHdoZXJlIHRoZSByZWxldmFudCBidWlsZCBydWxlcyBhcmUgZGVmaW5lZC4gVGhhdCBzZWN0aW9uIHdpbGwgcHJvYmFibHkgcHJvdmlkZSB0aGUgY2xlYXJlc3QgcGljdHVyZSBvZiB3aGF0IGRlcGVuZGVuY2llcyBhcmUgbmVlZGVkLCBhbnkgcHJlLXByb2Nlc3Npbmcgc3RlcHMsIGFuZCB0aGUgZmluYWwgbGlua2luZyBwcm9jZWR1cmUgZm9yIHRoZSBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gaGF2ZSBhIHNvbGlkIGdyYXNwIG9mIGhvdyBpdCB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQwNiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6NDguMDU3MTQzMzU5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWQvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogNDUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDU6XFx0b2JqLSQoQ09ORklHX01EX1JBSUQ0NTYpXFx0Kz0gcmFpZDQ1Ni5vXFxuICA0NjpcXHRvYmotJChDT05GSUdfTURfQ0xVU1RFUilcXHQrPSBtZC1jbHVzdGVyLm9cXG4gIDQ3OlxcdG9iai0kKENPTkZJR19CQ0FDSEUpXFx0XFx0Kz0gYmNhY2hlL1xcbiAgNDg6XFx0b2JqLSQoQ09ORklHX0JMS19ERVZfTUQpXFx0Kz0gbWQtbW9kLm9cXG4gIDQ5OlxcdGlmZXEgKCQoQ09ORklHX0JMS19ERVZfTUQpLHkpXFxuICA1MDpcXHRvYmoteVxcdFxcdFxcdFxcdCs9IG1kLWF1dG9kZXRlY3Qub1xcbiAgNTE6XFx0ZW5kaWZcXG4gIDUyOlxcdG9iai0kKENPTkZJR19CTEtfREVWX0RNKVxcdCs9IGRtLW1vZC5vXFxuICA1MzpcXHRvYmotJChDT05GSUdfQkxLX0RFVl9ETV9CVUlMVElOKSArPSBkbS1idWlsdGluLm9cXG4gIDU0OlxcdG9iai0kKENPTkZJR19ETV9VTlNUUklQRUQpXFx0Kz0gZG0tdW5zdHJpcGUub1xcbiAgNTU6XFx0b2JqLSQoQ09ORklHX0RNX0JVRklPKVxcdFxcdCs9IGRtLWJ1ZmlvLm9cXG4gIDU2OlxcdG9iai0kKENPTkZJR19ETV9CSU9fUFJJU09OKVxcdCs9IGRtLWJpby1wcmlzb24ub1xcbiAgNTc6XFx0b2JqLSQoQ09ORklHX0RNX0NSWVBUKVxcdFxcdCs9IGRtLWNyeXB0Lm9cXG4gIDU4OlxcdG9iai0kKENPTkZJR19ETV9JTkxJTkVDUllQVClcXHQrPSBkbS1pbmxpbmVjcnlwdC5vXFxuICA1OTpcXHRvYmotJChDT05GSUdfRE1fREVMQVkpXFx0XFx0Kz0gZG0tZGVsYXkub1xcbiAgNjA6XFx0b2JqLSQoQ09ORklHX0RNX0RVU1QpXFx0XFx0Kz0gZG0tZHVzdC5vXFxuICA2MTpcXHRvYmotJChDT05GSUdfRE1fRkxBS0VZKVxcdFxcdCs9IGRtLWZsYWtleS5vXFxuICA2MjpcXHRvYmotJChDT05GSUdfRE1fTVVMVElQQVRIKVxcdCs9IGRtLW11bHRpcGF0aC5vIGRtLXJvdW5kLXJvYmluLm9cXG4gIDYzOlxcdG9iai0kKENPTkZJR19ETV9NVUxUSVBBVEhfUUwpXFx0Kz0gZG0tcXVldWUtbGVuZ3RoLm9cXG4gIDY0OlxcdG9iai0kKENPTkZJR19ETV9NVUxUSVBBVEhfU1QpXFx0Kz0gZG0tc2VydmljZS10aW1lLm9cXG4gIDY1OlxcdG9iai0kKENPTkZJR19ETV9NVUxUSVBBVEhfSFNUKVxcdCs9IGRtLWhpc3RvcmljYWwtc2VydmljZS10aW1lLm9cXG4gIDY2OlxcdG9iai0kKENPTkZJR19ETV9NVUxUSVBBVEhfSU9BKVxcdCs9IGRtLWlvLWFmZmluaXR5Lm9cXG4gIDY3OlxcdG9iai0kKENPTkZJR19ETV9TV0lUQ0gpXFx0XFx0Kz0gZG0tc3dpdGNoLm9cXG4gIDY4OlxcdG9iai0kKENPTkZJR19ETV9TTkFQU0hPVClcXHQrPSBkbS1zbmFwc2hvdC5vXFxuICA2OTpcXHRvYmotJChDT05GSUdfRE1fUEVSU0lTVEVOVF9EQVRBKSArPSBwZXJzaXN0ZW50LWRhdGEvXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAwOjQ4LjA1NzIyMDA3OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzAwNjU3NDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipDaGVja2luZyB0aGUgTWV0YWRhdGEgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgc3RhdHVzIG9mIGBCTEtfREVWX01EYC4gSSBpbW1lZGlhdGVseSB0aGluayB0byBjaGVjayB0aGUgYGRyaXZlcnMvbWQvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyBpdCdzIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlIHNwZWNpZmljYWxseSBmb3IgdGhlIE11bHRpcGxlIERldmljZSAoTUQpIHN1YnN5c3RlbS4gSSdtIGFzc3VtaW5nIHRoYXQgaWYgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHNldCwgaXQgd2lsbCBiZSBkZWZpbmVkIGFuZCBjb250cm9sbGVkIGluIHRoZSBLY29uZmlnIGZpbGUuIEknbGwgbmVlZCB0byBzZWUgaWYgaXQncyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgcGVyaGFwcyBwYXJ0IG9mIGEgbW9yZSBjb21wbGV4IGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIHRoYXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI0MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6NDkuNzU3ODgwMjUyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzY0NTgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9NRFxcXFxiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWQvS2NvbmZpZz0xMz1pZiBNRFxcbmRyaXZlcnMvbWQvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL21kL0tjb25maWc6MTU6Y29uZmlnIEJMS19ERVZfTURcXG5kcml2ZXJzL21kL0tjb25maWctMTYtXFx0dHJpc3RhdGUgXFxcIlJBSUQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDA6NDkuODE1NTMzMTYxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5MTc3NzkzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgTGFieXJpbnRoIG9mIEtlcm5lbCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgUkFJRCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciB0aGVtIGlzLCBvZiBjb3Vyc2UsIHRoZSBgS2NvbmZpZ2AgZmlsZXMuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhcmUgZGVmaW5lZC4gSSBoYXZlIGEgaHVuY2ggdGhlIHJlbGV2YW50IG9wdGlvbnMgYXJlIGluIHRoZSBgZHJpdmVycy9tZC9gIGRpcmVjdG9yeSwgY29uc2lkZXJpbmcgaXQncyB0aGUgaG9tZSBvZiB0aGUgTXVsdGlwbGUgRGV2aWNlIGRyaXZlciBjb2RlLiBMZXQgbWUgc3BlY2lmaWNhbGx5IGNoZWNrIGBkcml2ZXJzL21kL0tjb25maWdgIGFuZCB6b29tIGluIG9uLCBzYXksIGxpbmUgMTMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGp1bXBpbmctb2ZmIHBvaW50IHRvIHNlZSBob3cgZXZlcnl0aGluZyBpcyBsYWlkIG91dCBhbmQgaG93IHRoZSBSQUlEIG9wdGlvbnMgYXJlIGV4cG9zZWQuIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IGZpZ3VyaW5nIG91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBwaXRmYWxscy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBsaW5lcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCBzY29waW5nIG9mIHRoZSBvcHRpb25zIGJlaW5nIGNvbnNpZGVyZWQuIExldCdzIHNlZSB3aGF0IHdlIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MTMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMjowMDo1MS43MzMzMTQ5M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDc3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21kL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgQmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgTURcXG4gICA3OlxcdFxcdGJvb2wgXFxcIk11bHRpcGxlIGRldmljZXMgZHJpdmVyIHN1cHBvcnQgKFJBSUQgYW5kIExWTSlcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIEJMT0NLXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIFN1cHBvcnQgbXVsdGlwbGUgcGh5c2ljYWwgc3BpbmRsZXMgdGhyb3VnaCBhIHNpbmdsZSBsb2dpY2FsIGRldmljZS5cXG4gIDExOlxcdFxcdCAgUmVxdWlyZWQgZm9yIFJBSUQgYW5kIGxvZ2ljYWwgdm9sdW1lIG1hbmFnZW1lbnQuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGlmIE1EXFxuICAxNDpcXHRcXG4gIDE1OlxcdGNvbmZpZyBCTEtfREVWX01EXFxuICAxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiUkFJRCBzdXBwb3J0XFxcIlxcbiAgMTc6XFx0XFx0c2VsZWN0IEJMT0NLX0hPTERFUl9ERVBSRUNBVEVEIGlmIFNZU0ZTXFxuICAxODpcXHRcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG4gIDE5OlxcdFxcdCMgQkxPQ0tfTEVHQUNZX0FVVE9MT0FEIHJlcXVpcmVtZW50IHNob3VsZCBiZSByZW1vdmVkXFxuICAyMDpcXHRcXHQjIGFmdGVyIHJlbGV2YW50IG1kYWRtIGVuaGFuY2VtZW50cyAtIHRvIG1ha2UgXFxcIm5hbWVzPXllc1xcXCJcXG4gIDIxOlxcdFxcdCMgdGhlIGRlZmF1bHQgLSBhcmUgd2lkZWx5IGF2YWlsYWJsZS5cXG4gIDIyOlxcdFxcdHNlbGVjdCBCTE9DS19MRUdBQ1lfQVVUT0xPQURcXG4gIDIzOlxcdFxcdGhlbHBcXG4gIDI0OlxcdFxcdCAgVGhpcyBkcml2ZXIgbGV0cyB5b3UgY29tYmluZSBzZXZlcmFsIGhhcmQgZGlzayBwYXJ0aXRpb25zIGludG8gb25lXFxuICAyNTpcXHRcXHQgIGxvZ2ljYWwgYmxvY2sgZGV2aWNlLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHNpbXBseSBhcHBlbmQgb25lXFxuICAyNjpcXHRcXHQgIHBhcnRpdGlvbiB0byBhbm90aGVyIG9uZSBvciB0byBjb21iaW5lIHNldmVyYWwgcmVkdW5kYW50IGhhcmQgZGlza3NcXG4gIDI3OlxcdFxcdCAgaW50byBhIFJBSUQxLzQvNSBkZXZpY2Ugc28gYXMgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgaGFyZFxcbiAgMjg6XFx0XFx0ICBkaXNrIGZhaWx1cmVzLiBUaGlzIGlzIGNhbGxlZCBcXFwiU29mdHdhcmUgUkFJRFxcXCIgc2luY2UgdGhlIGNvbWJpbmluZyBvZlxcbiAgMjk6XFx0XFx0ICB0aGUgcGFydGl0aW9ucyBpcyBkb25lIGJ5IHRoZSBrZXJuZWwuIFxcXCJIYXJkd2FyZSBSQUlEXFxcIiBtZWFucyB0aGF0IHRoZVxcbiAgMzA6XFx0XFx0ICBjb21iaW5pbmcgaXMgZG9uZSBieSBhIGRlZGljYXRlZCBjb250cm9sbGVyOyBpZiB5b3UgaGF2ZSBzdWNoIGFcXG4gIDMxOlxcdFxcdCAgY29udHJvbGxlciwgeW91IGRvIG5vdCBuZWVkIHRvIHNheSBZIGhlcmUuXFxuICAzMjpcXHRcXG4gIDMzOlxcdFxcdCAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCBTb2Z0d2FyZSBSQUlEIG9uIExpbnV4IGlzIGNvbnRhaW5lZCBpbiB0aGVcXG4gIDM0OlxcdFxcdCAgU29mdHdhcmUgUkFJRCBtaW5pLUhPV1RPLCBhdmFpbGFibGUgZnJvbVxcbiAgMzU6XFx0XFx0ICBcXHUwMDNjaHR0cHM6Ly93d3cudGxkcC5vcmcvZG9jcy5odG1sI2hvd3RvXFx1MDAzZS4gVGhlcmUgeW91IHdpbGwgYWxzbyBsZWFyblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMjowMDo1MS43MzMzOTcyOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4NzQ3NTgwOTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBgbWRfc3RvcGAgcGF0aCBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSB0aGUgdmlhYmlsaXR5IG9mIGZ1enppbmcgdGhlIGBtZF9zdG9wYCBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSByZXNldCBvZiByZXNoYXBlIHBhcmFtZXRlcnMgd2l0aGluIHRoZSBgX19tZF9zdG9wYCBmdW5jdGlvbi5cblxuRmlyc3QsIEkgc2VlIHRoYXQgdGhlIGNvZGUgSSdtIGludGVyZXN0ZWQgaW4sIHRoZSBmdW5jdGlvbiBgX19tZF9zdG9wYCwgbGl2ZXMgd2l0aGluIGBkcml2ZXJzL21kL21kLmNgLCBhbmQgaXQncyBjYWxsZWQgYnkgYG1kX3N0b3BgLiBgX19tZF9zdG9wYCBpcyBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0J3Mgbm90IGRpcmVjdGx5IGV4cG9ydGVkLCBidXQgYG1kX3N0b3BgIGlzLiBXZSBhbHNvIGhhdmUgYGRvX21kX3N0b3BgIHRoYXQgaXMgc3RhdGljIGFzIHdlbGwuXG5cblRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyB0aGUgcmVzZXQgb2YgcmVzaGFwZSBwYXJhbWV0ZXJzIChgZGVsdGFfZGlza3NgLCBgcmVzaGFwZV9iYWNrd2FyZHNgLCBldGMuKSB3aGVuIGEgcmVzaGFwZSBvcGVyYXRpb24gaGFzIGNvbXBsZXRlZCAoYXMgaW5kaWNhdGVkIGJ5IGBtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcmApIGFuZCB0aGUgYXJyYXkgaXMgc3RvcHBlZC4gVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgdGhpcyByZXNldCBtaWdodCBiZSBhIGdvb2QgYXJlYSBmb3IgZnV6emluZy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYF9fbWRfc3RvcGAgKGFuZCBgbWRfc3RvcGApIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGAvZGV2L21kKmAgZGV2aWNlcyBhcmUgYXZhaWxhYmxlIGluIFFFTVUvc3l6a2FsbGVyIGFuZCB0aGUgTUQgc3RhY2sgY2FuIGJlIG1hbmlwdWxhdGVkIHZpYSBpb2N0bCBjYWxscyAobGlrZSBgU1RPUF9BUlJBWWAgb3IgYFNUT1BfQVJSQVlfUk9gKSwgc3lzZnMgaW50ZXJhY3Rpb25zIChgYXJyYXlfc3RhdGVgIHdyaXRpbmcgXCJjbGVhclwiIG9yIFwiaW5hY3RpdmVcIiBvciBcInN0b3BcIiksIGFuZCBldmVuIGRtLXJhaWQgdGVhcmRvd24uIFN5emthbGxlcidzIGNvdmVyYWdlIG9mIG1kIGlvY3RscyBhbmQgc3lzZnMgbWFrZXMgaXQgYSBncmVhdCB0ZXN0aW5nIHBsYXRmb3JtLlxuXG5UbyB2ZXJpZnkgcmVhY2hhYmlsaXR5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gYEJMS19ERVZfTURgIGlzIGNydWNpYWwsIGFzIGl0IGRpcmVjdGx5IGVuYWJsZXMgdGhlIGBtZC5jYCBtb2R1bGUuIFRoZW4sIHRvIG1ha2UgcmVzaGFwZSByZWxldmFudCwgSSBuZWVkIGVpdGhlciBgTURfUkFJRDQ1NmAgb3IgYE1EX1JBSUQxMGAsIGJlY2F1c2UgdGhlc2UgUkFJRCBwZXJzb25hbGl0aWVzIHN1cHBvcnQgcmVzaGFwaW5nLiBUaGUgbW9yZSBnZW5lcmFsIGBDT05GSUdfTURgIHdvdWxkIGVuYWJsZSBgbWQuY2AsIGJ1dCB0aGUgc3BlY2lmaWMgUkFJRCBwZXJzb25hbGl0aWVzIGVuYWJsZSB0aGUgcmVzaGFwaW5nIGNvZGUuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgYEJMS19ERVZfRE1gIGFuZCBgRE1fUkFJRGAgYWxzbyBjYWxsIGBtZF9zdG9wYC5cblxuVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gc2V0IGBfX21kX3N0b3BgLCBgZG9fbWRfc3RvcGAsIGFuZCBgbWRfc3RvcGAgYXMgbXkgRm9jdXNTeW1ib2xzLiBUaGUgZW5hYmxpbmcgY29uZmlncyBhcmUgYEJMS19ERVZfTURgLCBgTURfUkFJRDQ1NmAsIGFuZCBgTURfUkFJRDEwYC4gV2l0aCB0aGVzZSBjb21wb25lbnRzIGluIHBsYWNlLCBhbmQgYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGFuZCBNRCBpcyBmdWxseSBzdXBwb3J0ZWQgaW4gdGhlc2UgZW52aXJvbm1lbnRzLCBJIGJlbGlldmUgdGhpcyBpcyBhIHZhbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNzEsIk91dHB1dFRva2VucyI6MTkzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAxOjAwLjQ4MDk4MTUxMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5OTQ5NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX01EXCIsXG4gICAgXCJNRF9SQUlENDU2XCIsXG4gICAgXCJNRF9SQUlEMTBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX21kX3N0b3BcIixcbiAgICBcImRvX21kX3N0b3BcIixcbiAgICBcIm1kX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBfX21kX3N0b3AoKSBpbiB0aGUgTUQgKE11bHRpcGxlIERldmljZXMgLyBTb2Z0d2FyZSBSQUlEKSBkcml2ZXIgdG8gcmVzZXQgcmVzaGFwZSBzdGF0ZSAoZGVsdGFfZGlza3MsIHJlc2hhcGVfYmFja3dhcmRzLCBuZXdfbGV2ZWwsIG5ld19sYXlvdXQsIG5ld19jaHVua19zZWN0b3JzKSB3aGVuIHN0b3BwaW5nIGFuIGFycmF5IGFmdGVyIGEgcmVzaGFwZSBvcGVyYXRpb24gaGFzIGZpbmlzaGVkIChyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcikuIFRoaXMgY29kZSBpcyBmdWxseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtZCBpb2N0bCAoZS5nLiwgU1RPUF9BUlJBWSksIHN5c2ZzIGFycmF5X3N0YXRlIGF0dHJpYnV0ZXMsIG9yIGRtLXJhaWQgdGVhcmRvd24sIGFuZCB3YXJyYW50cyBmdXp6aW5nIGZvciBwb3RlbnRpYWwgc3RhdGUgbWFuYWdlbWVudCByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9NRFwiLFxuICAgIFwiTURfUkFJRDQ1NlwiLFxuICAgIFwiTURfUkFJRDEwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19tZF9zdG9wXCIsXG4gICAgXCJkb19tZF9zdG9wXCIsXG4gICAgXCJtZF9zdG9wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgX19tZF9zdG9wKCkgaW4gdGhlIE1EIChNdWx0aXBsZSBEZXZpY2VzIC8gU29mdHdhcmUgUkFJRCkgZHJpdmVyIHRvIHJlc2V0IHJlc2hhcGUgc3RhdGUgKGRlbHRhX2Rpc2tzLCByZXNoYXBlX2JhY2t3YXJkcywgbmV3X2xldmVsLCBuZXdfbGF5b3V0LCBuZXdfY2h1bmtfc2VjdG9ycykgd2hlbiBzdG9wcGluZyBhbiBhcnJheSBhZnRlciBhIHJlc2hhcGUgb3BlcmF0aW9uIGhhcyBmaW5pc2hlZCAocmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpLiBUaGlzIGNvZGUgaXMgZnVsbHkgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWQgaW9jdGwgKGUuZy4sIFNUT1BfQVJSQVkpLCBzeXNmcyBhcnJheV9zdGF0ZSBhdHRyaWJ1dGVzLCBvciBkbS1yYWlkIHRlYXJkb3duLCBhbmQgd2FycmFudHMgZnV6emluZyBmb3IgcG90ZW50aWFsIHN0YXRlIG1hbmFnZW1lbnQgcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMjowMTowMC41NzA5NDA0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg0MDQ2MjA0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAxOjAwLjU3MTUzMjE2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjI4Mzk4NjQyNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX21kX3N0b3AoKWAgaW4gYGRyaXZlcnMvbWQvbWQuY2AgdG8gcmVzZXQgcmVzaGFwZSBjb25maWd1cmF0aW9uIGZpZWxkcyAoYGRlbHRhX2Rpc2tzYCwgYHJlc2hhcGVfYmFja3dhcmRzYCwgYG5ld19sZXZlbGAsIGBuZXdfbGF5b3V0YCwgYG5ld19jaHVua19zZWN0b3JzYCkgaW4gYHN0cnVjdCBtZGRldmAgd2hlbiBzdG9wcGluZyBhbiBtZCBhcnJheSB3aGVyZSBgcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3JgLlxcblxcbkFsbCBhc3NpZ25lZCB2YWx1ZXMgYXJlIGVpdGhlciBjb25zdGFudCB6ZXJvZXMgb3IgZGVyaXZlZCBmcm9tIGV4aXN0aW5nLCBpbml0aWFsaXplZCBmaWVsZHMgb2YgYG1kZGV2YC4gVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBkYXRhLCBkb2VzIG5vdCBhbHRlciBjb3B5LXRvLXVzZXIgb3BlcmF0aW9ucywgYW5kIGRvZXMgbm90IGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCB3YXJyYW50IGEgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRjNmFlYzM3NGMwNDdlOGEyMjBhZTFkZjdjZWZmOTMzODdkYTkyNmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCA5IDIyOjAwOjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9tZC5jIGIvZHJpdmVycy9tZC9tZC5jXG5pbmRleCA2ODBiMzRhNjNjYjNkLi4zOGFiNDFiYmNkMGVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tZC9tZC5jXG4rKysgYi9kcml2ZXJzL21kL21kLmNcbkBAIC03MDk1LDYgKzcwOTUsMTQgQEAgc3RhdGljIHZvaWQgX19tZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpXG4gXHRtZGRldi1cdTAwM2Vwcml2YXRlID0gTlVMTDtcbiBcdHB1dF9wZXJzKHBlcnMpO1xuIFx0Y2xlYXJfYml0KE1EX1JFQ09WRVJZX0ZST1pFTiwgXHUwMDI2bWRkZXYtXHUwMDNlcmVjb3ZlcnkpO1xuK1xuK1x0aWYgKG1kZGV2LVx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKSB7XG4rXHRcdG1kZGV2LVx1MDAzZWRlbHRhX2Rpc2tzID0gMDtcbitcdFx0bWRkZXYtXHUwMDNlcmVzaGFwZV9iYWNrd2FyZHMgPSAwO1xuK1x0XHRtZGRldi1cdTAwM2VuZXdfbGV2ZWwgPSBtZGRldi1cdTAwM2VsZXZlbDtcbitcdFx0bWRkZXYtXHUwMDNlbmV3X2xheW91dCA9IG1kZGV2LVx1MDAzZWxheW91dDtcbitcdFx0bWRkZXYtXHUwMDNlbmV3X2NodW5rX3NlY3RvcnMgPSBtZGRldi1cdTAwM2VjaHVua19zZWN0b3JzO1xuK1x0fVxuIH1cbiBcbiB2b2lkIG1kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAxOjAwLjU3MTUzNDU4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5Njk1MDI2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGluLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyBhbHdheXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjaGFuZ2VzIGRpcmVjdGx5LiBJJ20gZ29pbmcgdG8gZmlyZSB1cCBteSB1c3VhbCB0b29scyBhbmQgc3RhcnQgYnkgaW5zcGVjdGluZyB0aGUgcGF0Y2ggaXRzZWxmLCBzZWVpbmcgd2hhdCBpdCdzIHRvdWNoaW5nLiBBaCwgYGRyaXZlcnMvbWQvbWQuY2Ag4oCTIHRoYXQncyBpbnRlcmVzdGluZy4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2UgaXMgd2l0aGluIHRoZSBgX19tZF9zdG9wYCBmdW5jdGlvbi4gTm93LCB0aGF0J3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZywgSSdsbCBuZWVkIHRvIHNlZSBob3cgYF9fbWRfc3RvcGAgd29ya3MgYW5kIGl0cyBpbW1lZGlhdGUgY29udGV4dCB0byBmdWxseSBncmFzcCB0aGUgY2hhbmdlLiBMZXQgbWUgZ28gZGlyZWN0bHkgdG8gYXJvdW5kIGxpbmUgNzA5NSBpbiBgZHJpdmVycy9tZC9tZC5jYCB0byByZWFkIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2UuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGxheSBvZiB0aGUgbGFuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDE6MDcuNTQxMDQwMTNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWQvbWQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MDgwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI3MDgwOlxcdFxcdGlmICghbWRkZXZfaXNfZG0obWRkZXYpKVxcbjcwODE6XFx0XFx0XFx0YmxrX3N5bmNfcXVldWUobWRkZXYtXFx1MDAzZWdlbmRpc2stXFx1MDAzZXF1ZXVlKTtcXG43MDgyOlxcdH1cXG43MDgzOlxcdFxcbjcwODQ6XFx0c3RhdGljIHZvaWQgX19tZF9zdG9wKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuNzA4NTpcXHR7XFxuNzA4NjpcXHRcXHRzdHJ1Y3QgbWRfcGVyc29uYWxpdHkgKnBlcnMgPSBtZGRldi1cXHUwMDNlcGVycztcXG43MDg3OlxcdFxcbjcwODg6XFx0XFx0bWRkZXZfZGV0YWNoKG1kZGV2KTtcXG43MDg5OlxcdFxcdG1kX2JpdG1hcF9kZXN0cm95KG1kZGV2KTtcXG43MDkwOlxcdFxcdHNwaW5fbG9jayhcXHUwMDI2bWRkZXYtXFx1MDAzZWxvY2spO1xcbjcwOTE6XFx0XFx0bWRkZXYtXFx1MDAzZXBlcnMgPSBOVUxMO1xcbjcwOTI6XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNm1kZGV2LVxcdTAwM2Vsb2NrKTtcXG43MDkzOlxcdFxcdGlmIChtZGRldi1cXHUwMDNlcHJpdmF0ZSlcXG43MDk0OlxcdFxcdFxcdHBlcnMtXFx1MDAzZWZyZWUobWRkZXYsIG1kZGV2LVxcdTAwM2Vwcml2YXRlKTtcXG43MDk1OlxcdFxcdG1kZGV2LVxcdTAwM2Vwcml2YXRlID0gTlVMTDtcXG43MDk2OlxcdFxcdHB1dF9wZXJzKHBlcnMpO1xcbjcwOTc6XFx0XFx0Y2xlYXJfYml0KE1EX1JFQ09WRVJZX0ZST1pFTiwgXFx1MDAyNm1kZGV2LVxcdTAwM2VyZWNvdmVyeSk7XFxuNzA5ODpcXHRcXG43MDk5OlxcdFxcdGlmIChtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcXG43MTAwOlxcdFxcdFxcdG1kZGV2LVxcdTAwM2VkZWx0YV9kaXNrcyA9IDA7XFxuNzEwMTpcXHRcXHRcXHRtZGRldi1cXHUwMDNlcmVzaGFwZV9iYWNrd2FyZHMgPSAwO1xcbjcxMDI6XFx0XFx0XFx0bWRkZXYtXFx1MDAzZW5ld19sZXZlbCA9IG1kZGV2LVxcdTAwM2VsZXZlbDtcXG43MTAzOlxcdFxcdFxcdG1kZGV2LVxcdTAwM2VuZXdfbGF5b3V0ID0gbWRkZXYtXFx1MDAzZWxheW91dDtcXG43MTA0OlxcdFxcdFxcdG1kZGV2LVxcdTAwM2VuZXdfY2h1bmtfc2VjdG9ycyA9IG1kZGV2LVxcdTAwM2VjaHVua19zZWN0b3JzO1xcbjcxMDU6XFx0XFx0fVxcbjcxMDY6XFx0fVxcbjcxMDc6XFx0XFxuNzEwODpcXHR2b2lkIG1kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcXG43MTA5OlxcdHtcXG43MTEwOlxcdFxcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNm1kZGV2LVxcdTAwM2VyZWNvbmZpZ19tdXRleCk7XFxuNzExMTpcXHRcXG43MTEyOlxcdFxcdC8qIHN0b3AgdGhlIGFycmF5IGFuZCBmcmVlIGFuIGF0dGFjaGVkIGRhdGEgc3RydWN0dXJlcy5cXG43MTEzOlxcdFxcdCAqIFRoaXMgaXMgY2FsbGVkIGZyb20gZG0tcmFpZFxcbjcxMTQ6XFx0XFx0ICovXFxuNzExNTpcXHRcXHRfX21kX3N0b3Bfd3JpdGVzKG1kZGV2KTtcXG43MTE2OlxcdFxcdF9fbWRfc3RvcChtZGRldik7XFxuNzExNzpcXHR9XFxuNzExODpcXHRcXG43MTE5OlxcdEVYUE9SVF9TWU1CT0xfR1BMKG1kX3N0b3ApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMjowMTowNy41NDE2MzY4M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDg0NjEyNDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2h5IHdhcyB0aGlzIGNoYW5nZSBldmVuIG5lY2Vzc2FyeT9cIi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgbW90aXZhdGlvbiBhbmQgdGhlIHByb2JsZW0gaXQncyB0cnlpbmcgdG8gc29sdmUuIEknbSBnb2luZyB0byBzdGFydCBieSBnb2luZyBzdHJhaWdodCB0byB0aGUgY29kZS4gSSdsbCByZWFjaCBmb3IgYGdyZXBgLCBiZWNhdXNlIEknbSBsb29raW5nIGZvciBzcGVjaWZpYyBrZXl3b3JkcyB0aGF0IHdpbGwgaW1tZWRpYXRlbHkgaWxsdW1pbmF0ZSB0aGUgY29udGV4dC4gVGhpbmdzIGxpa2UgYHJlc2hhcGVfcG9zaXRpb25gIG9yIGBuZXdfbGV2ZWxgIGFyZSBsaWtlbHkgY2FuZGlkYXRlcy4gSWYgSSBjYW4gZ2V0IG15IGhhbmRzIG9uIHRoZSBnaXQgbG9nLCB0aGF0J3MgaWRlYWw7IGNvbW1pdCBtZXNzYWdlcyBhcmUgdXN1YWxseSBnb2xkLiBJZiB0aG9zZSBxdWljayBzZWFyY2hlcyBmYWlsLCBJJ2xsIGJyb2FkZW4gbXkgc2NvcGUgYW5kIHN0YXJ0IGxvb2tpbmcgYXQgcmVsYXRlZCBjb21taXRzLCBvciBzdXJyb3VuZGluZyBmdW5jdGlvbnMuIEkgd2FudCB0byBidWlsZCBhIHF1aWNrIG1lbnRhbCBtYXAgb2YgdGhlIGNoYW5nZSdzIG9yaWdpbiBhbmQgcHVycG9zZS4gR290dGEgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4MSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjI6MDE6MDkuNjI2MjUyNDQ2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjU4NTMxMDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21kL21kLmM9MTYwND1zdGF0aWMgdm9pZCBzdXBlcl85MF9zeW5jKHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBtZF9yZGV2ICpyZGV2KVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jLTE2NDgtXFxuZHJpdmVycy9tZC9tZC5jOjE2NDk6XFx0aWYgKG1kZGV2LVxcdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcilcXG5kcml2ZXJzL21kL21kLmMtMTY1MC1cXHRcXHRzYi1cXHUwMDNlbWlub3JfdmVyc2lvbiA9IDkwO1xcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTQzNjg9bGF5b3V0X3N0b3JlKHN0cnVjdCBtZGRldiAqbWRkZXYsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy00MzkyLVxcdFxcdG1kZGV2LVxcdTAwM2VuZXdfbGF5b3V0ID0gbjtcXG5kcml2ZXJzL21kL21kLmM6NDM5MzpcXHRcXHRpZiAobWRkZXYtXFx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKVxcbmRyaXZlcnMvbWQvbWQuYy00Mzk0LVxcdFxcdFxcdG1kZGV2LVxcdTAwM2VsYXlvdXQgPSBuO1xcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTQ0ODE9Y2h1bmtfc2l6ZV9zdG9yZShzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXFxuLS1cXG5kcml2ZXJzL21kL21kLmMtNDUwNS1cXHRcXHRtZGRldi1cXHUwMDNlbmV3X2NodW5rX3NlY3RvcnMgPSBuIFxcdTAwM2VcXHUwMDNlIDk7XFxuZHJpdmVycy9tZC9tZC5jOjQ1MDY6XFx0XFx0aWYgKG1kZGV2LVxcdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcilcXG5kcml2ZXJzL21kL21kLmMtNDUwNy1cXHRcXHRcXHRtZGRldi1cXHUwMDNlY2h1bmtfc2VjdG9ycyA9IG4gXFx1MDAzZVxcdTAwM2UgOTtcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYz01MjQyPXN0YXRpYyBpbnQgbWRkZXZfc3RhcnRfcmVzaGFwZShzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxcbi0tXFxuZHJpdmVycy9tZC9tZC5jLTUyNDgtXFxuZHJpdmVycy9tZC9tZC5jOjUyNDk6XFx0aWYgKG1kZGV2LVxcdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvciB8fFxcbmRyaXZlcnMvbWQvbWQuYy01MjUwLVxcdCAgICBtZGRldi1cXHUwMDNlcGVycy1cXHUwMDNlY2hlY2tfcmVzaGFwZSA9PSBOVUxMIHx8XFxuLS1cXG5kcml2ZXJzL21kL21kLmM9NzA4ND1zdGF0aWMgdm9pZCBfX21kX3N0b3Aoc3RydWN0IG1kZGV2ICptZGRldilcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy03MDk4LVxcbmRyaXZlcnMvbWQvbWQuYzo3MDk5OlxcdGlmIChtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcXG5kcml2ZXJzL21kL21kLmMtNzEwMC1cXHRcXHRtZGRldi1cXHUwMDNlZGVsdGFfZGlza3MgPSAwO1xcbi0tXFxuZHJpdmVycy9tZC9tZC5jPTEwMjY0PXN0YXRpYyB2b2lkIG1kX3N0YXJ0X3N5bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3cylcXG4tLVxcbmRyaXZlcnMvbWQvbWQuYy0xMDI3NS1cXHQgKi9cXG5kcml2ZXJzL21kL21kLmM6MTAyNzY6XFx0aWYgKChtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IgfHwgIW1kX2lzX3Jkd3IobWRkZXYpKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbWQvbWQuYy0xMDI3Ny1cXHQgICAgbWRfc3BhcmVzX25lZWRfY2hhbmdlKG1kZGV2KSkge1xcbi0tXFxuZHJpdmVycy9tZC9tZC5jLTEwMjg4LVxcdCAqL1xcbmRyaXZlcnMvbWQvbWQuYzoxMDI4OTpcXHRpZiAoIXN1c3BlbmQgXFx1MDAyNlxcdTAwMjYgKG1kZGV2LVxcdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvciB8fCAhbWRfaXNfcmR3cihtZGRldikpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9tZC9tZC5jLTEwMjkwLVxcdCAgICBtZF9zcGFyZXNfbmVlZF9jaGFuZ2UobWRkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL21kL21kLmg9NjkwPXN0YXRpYyBpbmxpbmUgYm9vbCByZXNoYXBlX2ludGVycnVwdGVkKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuLS1cXG5kcml2ZXJzL21kL21kLmgtNjkyLVxcdC8qIHJlc2hhcGUgbmV2ZXIgc3RhcnQgKi9cXG5kcml2ZXJzL21kL21kLmg6NjkzOlxcdGlmIChtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpXFxuZHJpdmVycy9tZC9tZC5oLTY5NC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL21kL3JhaWQxMC5jPTMxNDE9c3RhdGljIHNlY3Rvcl90IHJhaWQxMF9zeW5jX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLFxcbi0tXFxuZHJpdmVycy9tZC9yYWlkMTAuYy0zMTU5LVxcdCAgICBtZGRldi1cXHUwMDNlcmVzeW5jX29mZnNldCA9PSBNYXhTZWN0b3IgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL21kL3JhaWQxMC5jOjMxNjA6XFx0ICAgIG1kZGV2LVxcdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvciBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbWQvcmFpZDEwLmMtMzE2MS1cXHQgICAgIXRlc3RfYml0KE1EX1JFQ09WRVJZX1NZTkMsIFxcdTAwMjZtZGRldi1cXHUwMDNlcmVjb3ZlcnkpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL21kL3JhaWQxMC5jPTM4Mjg9c3RhdGljIHN0cnVjdCByMTBjb25mICpzZXR1cF9jb25mKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuLS1cXG5kcml2ZXJzL21kL3JhaWQxMC5jLTM4NzQtXFx0Y2FsY19zZWN0b3JzKGNvbmYsIG1kZGV2LVxcdTAwM2VkZXZfc2VjdG9ycyk7XFxuZHJpdmVycy9tZC9yYWlkMTAuYzozODc1OlxcdGlmIChtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcXG5kcml2ZXJzL21kL3JhaWQxMC5jLTM4NzYtXFx0XFx0Y29uZi1cXHUwMDNlcHJldiA9IGNvbmYtXFx1MDAzZWdlbztcXG4tLVxcbmRyaXZlcnMvbWQvcmFpZDEwLmM9NDkyOD1zdGF0aWMgdm9pZCByYWlkMTBfdXBkYXRlX3Jlc2hhcGVfcG9zKHN0cnVjdCBtZGRldiAqbWRkZXYpXFxuLS1cXG5kcml2ZXJzL21kL3JhaWQxMC5jLTQ5MzQtXFx0aWYgKCgobWRkZXYtXFx1MDAzZXJlc2hhcGVfcG9zaXRpb24gXFx1MDAzYz0gaGkpIFxcdTAwMjZcXHUwMDI2IChtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiBcXHUwMDNlPSBsbykpXFxuZHJpdmVycy9tZC9yYWlkMTAuYzo0OTM1OlxcdCAgICB8fCBtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpXFxuZHJpdmVycy9tZC9yYWlkMTAuYy00OTM2LVxcdFxcdGNvbmYtXFx1MDAzZXJlc2hhcGVfcHJvZ3Jlc3MgPSBtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbjtcXG4tLVxcbmRyaXZlcnMvbWQvcmFpZDUuYz02MjE4PXN0YXRpYyBib29sIHJhaWQ1X21ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogYmkpXFxuLS1cXG5kcml2ZXJzL21kL3JhaWQ1LmMtNjI0OS1cXHRpZiAocncgPT0gUkVBRCBcXHUwMDI2XFx1MDAyNiBtZGRldi1cXHUwMDNlZGVncmFkZWQgPT0gMCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbWQvcmFpZDUuYzo2MjUwOlxcdCAgICBtZGRldi1cXHUwMDNlcmVzaGFwZV9wb3NpdGlvbiA9PSBNYXhTZWN0b3IpIHtcXG5kcml2ZXJzL21kL3JhaWQ1LmMtNjI1MS1cXHRcXHRiaSA9IGNodW5rX2FsaWduZWRfcmVhZChtZGRldiwgYmkpO1xcbi0tXFxuZHJpdmVycy9tZC9yYWlkNS5jPTc2MzM9c3RhdGljIHN0cnVjdCByNWNvbmYgKnNldHVwX2NvbmYoc3RydWN0IG1kZGV2ICptZGRldilcXG4tLVxcbmRyaXZlcnMvbWQvcmFpZDUuYy03NzI1LVxcdGNvbmYtXFx1MDAzZXJhaWRfZGlza3MgPSBtZGRldi1cXHUwMDNlcmFpZF9kaXNrcztcXG5kcml2ZXJzL21kL3JhaWQ1LmM6NzcyNjpcXHRpZiAobWRkZXYtXFx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKVxcbmRyaXZlcnMvbWQvcmFpZDUuYy03NzI3LVxcdFxcdGNvbmYtXFx1MDAzZXByZXZpb3VzX3JhaWRfZGlza3MgPSBtZGRldi1cXHUwMDNlcmFpZF9kaXNrcztcXG4tLVxcbmRyaXZlcnMvbWQvcmFpZDUuYz04NDQ0PXN0YXRpYyBpbnQgcmFpZDVfYWRkX2Rpc2soc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IG1kX3JkZXYgKnJkZXYpXFxuLS1cXG5kcml2ZXJzL21kL3JhaWQ1LmMtODUwNy1cXHRcXHRpZiAodGVzdF9iaXQoV2FudFJlcGxhY2VtZW50LCBcXHUwMDI2dG1wLVxcdTAwM2VmbGFncykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL21kL3JhaWQ1LmM6ODUwODpcXHRcXHQgICAgbWRkZXYtXFx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9tZC9yYWlkNS5jLTg1MDktXFx0XFx0ICAgIHAtXFx1MDAzZXJlcGxhY2VtZW50ID09IE5VTEwpIHtcXG4tLVxcbmRyaXZlcnMvbWQvcmFpZDUuYz04NTg2PXN0YXRpYyBpbnQgY2hlY2tfcmVzaGFwZShzdHJ1Y3QgbWRkZXYgKm1kZGV2KVxcbi0tXFxuZHJpdmVycy9tZC9yYWlkNS5jLTg1OTktXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9tZC9yYWlkNS5jOjg2MDA6XFx0aWYgKG1kZGV2LVxcdTAwM2VkZWx0YV9kaXNrcyBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgbWRkZXYtXFx1MDAzZXJlc2hhcGVfcG9zaXRpb24gPT0gTWF4U2VjdG9yKSB7XFxuZHJpdmVycy9tZC9yYWlkNS5jLTg2MDEtXFx0XFx0LyogV2UgbWlnaHQgYmUgYWJsZSB0byBzaHJpbmssIGJ1dCB0aGUgZGV2aWNlcyBtdXN0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAxOjA5Ljg5MjExNzIxMloiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMzUxOTI1MzkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBBbmFseXNpcyBvZiBgX19tZF9zdG9wYCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgZGVhbGluZyB3aXRoIHRoZSBgX19tZF9zdG9wYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGhvdyBpdCBoYW5kbGVzIHRoZSByZXNldCBvZiByZXNoYXBlLXJlbGF0ZWQgcGFyYW1ldGVycyB3aXRoaW4gdGhlIGBtZGRldmAgc3RydWN0dXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uZmlybSBob3cgdGhpcyBpcyB3b3JraW5nIGFuZCBpZiB0aGlzIGV4cG9zZXMgYW55IHJpc2tzLlxuXG5UaGUgY3JpdGljYWwgY29uZGl0aW9uIGZvciB0aGlzIHJlc2V0IGlzIGBtZGRldi1cdTAwM2VyZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcmAsIHdoaWNoIGluZGljYXRlcyB0aGF0IGEgcmVzaGFwZSBvcGVyYXRpb24gaXNuJ3QgYWN0aXZlIG9yIHdhc24ndCBldmVuIHN0YXJ0ZWQuIFVuZGVyIHRoaXMgY29uZGl0aW9uLCB0aGUgcGF0Y2ggaXMgcmVzZXR0aW5nIGBkZWx0YV9kaXNrc2AsIGByZXNoYXBlX2JhY2t3YXJkc2AsIGBuZXdfbGV2ZWxgLCBgbmV3X2xheW91dGAsIGFuZCBgbmV3X2NodW5rX3NlY3RvcnNgLlxuXG5NeSBjb25jZXJuIGltbWVkaWF0ZWx5IHR1cm5zIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJcyB0aGVyZSBhbnkgcmlzayBoZXJlPyBBZnRlciBhIHF1aWNrIGNvZGUgcmV2aWV3LCBpdCBzZWVtcyBjbGVhciB0aGF0IGBtZGRldmAgaXMgYW4gZXhpc3RpbmcsIGhlYXAtYWxsb2NhdGVkIHN0cnVjdHVyZSwgbWVhbmluZyBpdHMgbWVtYmVycyBhcmUgbGlrZWx5IGFscmVhZHkgaW5pdGlhbGl6ZWQuIFRoZSBwYXRjaCBvdmVyd3JpdGVzIHNwZWNpZmljIGZpZWxkcyAqd2l0aGluKiB0aGF0IHN0cnVjdHVyZSB3aXRoIGVpdGhlciB6ZXJvIHZhbHVlcyBvciB2YWx1ZXMgdGFrZW4gZnJvbSBvdGhlciBhbHJlYWR5LWluaXRpYWxpemVkIGBtZGRldmAgZmllbGRzLiBObyBuZXcgbWVtb3J5IGlzIGJlaW5nIGFsbG9jYXRlZC4gSSdtIG5vdCBzZWVpbmcgYW55IHNjZW5hcmlvcyB3aGVyZSB1bmluaXRpYWxpemVkIGRhdGEgaXMgYmVpbmcgY29waWVkIHRvIHVzZXJzcGFjZSwgb3Igd2hlcmUgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgYXJlIGJlaW5nIHVzZWQgaW4gYW55IGJyYW5jaGluZyBsb2dpYy4gVGhpcyBwcmltYXJpbHkgc2VlbXMgdG8gYmUgYSBjbGVhbnVwIG9wZXJhdGlvbiB0byBlbnN1cmUgdGhhdCBzdGFsZSByZXNoYXBlIHBhcmFtZXRlcnMgYXJlbid0IGNhcnJpZWQgb3ZlciBhZnRlciBhbiBhcnJheSBzdG9wIGlmIGEgcmVzaGFwZSB3YXMgbmV2ZXIgYWN0dWFsbHkgZW5nYWdlZC5cblxuR2l2ZW4gdGhhdCwgSSBkb24ndCBzZWUgYW55IG9idmlvdXMgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCB0cmlnZ2VyIEtNU0FOLiBXZSdyZSBub3Qgc2VuZGluZyBrZXJuZWwgc3RydWN0dXJlcyB0byB1c2Vyc3BhY2UsIHdlIGFyZW4ndCB1c2luZyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBhbnkgZGVjaXNpb24gcG9pbnRzLCB0aGVyZSBhcmUgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyBnb2luZyBvbiB3aXRob3V0IGluaXRpYWxpemF0aW9uLCBhbmQgdGhlIHBhdGNoIGlzbid0IG1vZGlmeWluZyBib3VuZHMgb3IgbGVuZ3RocyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuVG8gYmUgY29tcGxldGVseSB0aG9yb3VnaCwgbGV0J3MgY29udHJhc3QgS0FTQU4gYW5kIEtNU0FOLiBUaGlzIHBhdGNoIGZvY3VzZXMgb24gcmVzZXR0aW5nIHJlc2hhcGUtcmVsYXRlZCBmaWVsZHMgd2l0aGluIGBtZGRldmAuIFRoZSBtb2RpZmljYXRpb25zIGFyZSBzb2xlbHkgd2l0aGluIHRoZSBgc3RydWN0IG1kZGV2YCwgYW5kIHRoZXNlIGZpZWxkcyBhcmUgYXNzaWduZWQgZWl0aGVyIGNvbnN0YW50IHplcm9lcyBvciB2YWx1ZXMgZGVyaXZlZCBmcm9tIGFscmVhZHkgaW5pdGlhbGl6ZWQgZmllbGRzIHdpdGhpbiBgbWRkZXZgLiBUaGVyZSBhcmUgbm8gbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlcnMsIGRhdGEgbGVha3MgdG8gdXNlcnNwYWNlLCB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgdmFyaWFibGVzLCBvciBhbnkgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBQb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIGFycmF5IGxpZmVjeWNsZSBtYW5hZ2VtZW50LCBzdGF0ZSB0cmFuc2l0aW9ucywgb3IgbWVtb3J5IHNhZmV0eSwgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIG9yIGxvY2tpbmcgaXNzdWVzLCB3b3VsZCBmYWxsIHVuZGVyIHRoZSBzY29wZSBvZiBLQVNBTi9MT0NLREVQLCBub3QgS01TQU4uIFRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgY2xlYXJseSBLTVNBTi1zYWZlLlxuXG5BbHJpZ2h0LCB0aGF0IGNvdmVycyBpdC4gSSdtIGNvbWZvcnRhYmxlIHdpdGggdGhlIEtNU0FOIGFzcGVjdHMuIExldCdzIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NzcsIk91dHB1dFRva2VucyI6MTc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIyOjAxOjIzLjQxMTM3NTQzOFoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWRfc3RvcCgpYCBpbiBgZHJpdmVycy9tZC9tZC5jYCB0byByZXNldCByZXNoYXBlIGNvbmZpZ3VyYXRpb24gZmllbGRzIChgZGVsdGFfZGlza3NgLCBgcmVzaGFwZV9iYWNrd2FyZHNgLCBgbmV3X2xldmVsYCwgYG5ld19sYXlvdXRgLCBgbmV3X2NodW5rX3NlY3RvcnNgKSBpbiBgc3RydWN0IG1kZGV2YCB3aGVuIHN0b3BwaW5nIGFuIG1kIGFycmF5IHdoZXJlIGByZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcmAuXFxuXFxuQWxsIGFzc2lnbmVkIHZhbHVlcyBhcmUgZWl0aGVyIGNvbnN0YW50IHplcm9lcyBvciBkZXJpdmVkIGZyb20gZXhpc3RpbmcsIGluaXRpYWxpemVkIGZpZWxkcyBvZiBgbWRkZXZgLiBUaGUgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGRvZXMgbm90IGFsdGVyIGNvcHktdG8tdXNlciBvcGVyYXRpb25zLCBhbmQgZG9lcyBub3QgYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHdhcnJhbnQgYSBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWRfc3RvcCgpYCBpbiBgZHJpdmVycy9tZC9tZC5jYCB0byByZXNldCByZXNoYXBlIGNvbmZpZ3VyYXRpb24gZmllbGRzIChgZGVsdGFfZGlza3NgLCBgcmVzaGFwZV9iYWNrd2FyZHNgLCBgbmV3X2xldmVsYCwgYG5ld19sYXlvdXRgLCBgbmV3X2NodW5rX3NlY3RvcnNgKSBpbiBgc3RydWN0IG1kZGV2YCB3aGVuIHN0b3BwaW5nIGFuIG1kIGFycmF5IHdoZXJlIGByZXNoYXBlX3Bvc2l0aW9uID09IE1heFNlY3RvcmAuXFxuXFxuQWxsIGFzc2lnbmVkIHZhbHVlcyBhcmUgZWl0aGVyIGNvbnN0YW50IHplcm9lcyBvciBkZXJpdmVkIGZyb20gZXhpc3RpbmcsIGluaXRpYWxpemVkIGZpZWxkcyBvZiBgbWRkZXZgLiBUaGUgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGRvZXMgbm90IGFsdGVyIGNvcHktdG8tdXNlciBvcGVyYXRpb25zLCBhbmQgZG9lcyBub3QgYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHdhcnJhbnQgYSBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowp94ht[1] Phase: Succeeded StartedAt: 2026-09-09 22:01:35 +0000 UTC FinishedAt: 2026-09-09 22:01:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-09 22:01:35 +0000 UTC FinishedAt: 2026-09-09 22:01:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2] Phase: Succeeded StartedAt: 2026-09-09 22:01:35 +0000 UTC FinishedAt: 2026-09-10 01:42:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-09 22:01:35 +0000 UTC FinishedAt: 2026-09-10 01:42:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-09 22:01:35 +0000 UTC FinishedAt: 2026-09-09 22:01:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-09 22:01:35 +0000 UTC FinishedAt: 2026-09-09 22:01:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowp94ht/series-workflowp94ht-convert-artifact-2926303591/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-09 22:01:45 +0000 UTC FinishedAt: 2026-09-09 22:17:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-09 22:01:45 +0000 UTC FinishedAt: 2026-09-09 22:17:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*8f458dfb-5c79-442e-b3b6-9556443a9d13,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-workflowp94ht/series-workflowp94ht-convert-artifact-2926303591/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": "c4d34c97-b8ef-4d6d-9c75-fbde9bf18286", "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-workflowp94ht/series-workflowp94ht-build-action-2905001981/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-09 22:01:45 +0000 UTC FinishedAt: 2026-09-09 22:17:40 +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:*8f458dfb-5c79-442e-b3b6-9556443a9d13,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-workflowp94ht/series-workflowp94ht-convert-artifact-2926303591/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": "c4d34c97-b8ef-4d6d-9c75-fbde9bf18286", "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-workflowp94ht/series-workflowp94ht-build-action-2905001981/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-09 22:17:50 +0000 UTC FinishedAt: 2026-09-09 22:17:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-09 22:17:50 +0000 UTC FinishedAt: 2026-09-09 22:17:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-09 22:17:50 +0000 UTC FinishedAt: 2026-09-09 22:18:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-09 22:17:50 +0000 UTC FinishedAt: 2026-09-09 22:17:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowp94ht/series-workflowp94ht-convert-artifact-2573861142/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-09 22:18:01 +0000 UTC FinishedAt: 2026-09-09 22:20:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-09 22:18:01 +0000 UTC FinishedAt: 2026-09-09 22:20:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c4d34c97-b8ef-4d6d-9c75-fbde9bf18286,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-workflowp94ht/series-workflowp94ht-build-action-2905001981/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-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-09 22:20:13 +0000 UTC FinishedAt: 2026-09-09 22:20:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-09 22:20:13 +0000 UTC FinishedAt: 2026-09-09 22:20:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-09 22:20:13 +0000 UTC FinishedAt: 2026-09-09 22:38:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-09 22:20:13 +0000 UTC FinishedAt: 2026-09-09 22:38:34 +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:*8f458dfb-5c79-442e-b3b6-9556443a9d13,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-workflowp94ht/series-workflowp94ht-convert-artifact-2573861142/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": "6e2317ac-3e22-496c-81c7-938e56830c18", "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-workflowp94ht/series-workflowp94ht-build-action-58245658/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-09 22:20:13 +0000 UTC FinishedAt: 2026-09-09 22:38:24 +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:*8f458dfb-5c79-442e-b3b6-9556443a9d13,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-workflowp94ht/series-workflowp94ht-convert-artifact-2573861142/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": "6e2317ac-3e22-496c-81c7-938e56830c18", "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-workflowp94ht/series-workflowp94ht-build-action-58245658/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-09 22:38:34 +0000 UTC FinishedAt: 2026-09-09 22:38:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-09 22:38:34 +0000 UTC FinishedAt: 2026-09-09 22:38:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-09 22:38:34 +0000 UTC FinishedAt: 2026-09-09 22:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-09 22:38:34 +0000 UTC FinishedAt: 2026-09-09 22:40:39 +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:*6e2317ac-3e22-496c-81c7-938e56830c18,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-workflowp94ht/series-workflowp94ht-build-action-58245658/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-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-09 22:40:49 +0000 UTC FinishedAt: 2026-09-10 01:42:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-09 22:40:49 +0000 UTC FinishedAt: 2026-09-10 01:42:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_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:*c4d34c97-b8ef-4d6d-9c75-fbde9bf18286,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6e2317ac-3e22-496c-81c7-938e56830c18,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-workflowp94ht/series-workflowp94ht-build-action-2905001981/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-workflowp94ht/series-workflowp94ht-build-action-58245658/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-09 22:40:49 +0000 UTC FinishedAt: 2026-09-09 22:40:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-09 22:40:49 +0000 UTC FinishedAt: 2026-09-09 22:40:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_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-workflowp94ht/series-workflowp94ht-convert-artifact-1847843771/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-09 22:40:49 +0000 UTC FinishedAt: 2026-09-09 22:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-09 22:40:49 +0000 UTC FinishedAt: 2026-09-09 22:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-09 22:40:49 +0000 UTC FinishedAt: 2026-09-09 22:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-09 22:40:59 +0000 UTC FinishedAt: 2026-09-10 01:42:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp94ht[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__md_stop","do_md_stop","md_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_MD","MD_RAID456","MD_RAID10"],"series_id":"601948d0-5cb5-4e95-9dac-538b86534e9e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-09 22:40:59 +0000 UTC FinishedAt: 2026-09-10 01:42:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c4d34c97-b8ef-4d6d-9c75-fbde9bf18286,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6e2317ac-3e22-496c-81c7-938e56830c18,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-workflowp94ht/series-workflowp94ht-build-action-2905001981/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-workflowp94ht/series-workflowp94ht-build-action-58245658/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-workflowp94ht/series-workflowp94ht-convert-artifact-1847843771/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,}