Name: series-workflowp64x9 Phase: Succeeded StartedAt: 2026-09-08 02:39:23 +0000 UTC FinishedAt: 2026-09-08 03:28:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp64x9[0] Phase: Succeeded StartedAt: 2026-09-08 02:39:23 +0000 UTC FinishedAt: 2026-09-08 03:03:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp64x9[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 02:39:23 +0000 UTC FinishedAt: 2026-09-08 03:03:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "944a035ecca915ae947905dcfb03f2b9dc6d032c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BUFFER_HEAD", "BLOCK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "944a035ecca915ae947905dcfb03f2b9dc6d032c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BUFFER_HEAD", "BLOCK" ], "series_id": "0bfde347-d2a8-4d3f-829d-7e242426e8f2" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "__bh_submit", "bh_submit", "__block_write_full_folio" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JVRkZFUl9IRUFEJiMzNDssCiAgICAmIzM0O0JMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19iaF9zdWJtaXQmIzM0OywKICAgICYjMzQ7Ymhfc3VibWl0JiMzNDssCiAgICAmIzM0O19fYmxvY2tfd3JpdGVfZnVsbF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBOVUxMIGNoZWNrIGZvciBgYmgtXHUwMDNlYl9mb2xpb2AgYmVmb3JlIGNhbGxpbmcgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cdTAwM2ViX2ZvbGlvKWAgaW4gYF9fYmhfc3VibWl0KClgIHRvIHByZXZlbnQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBzdWJtaXR0aW5nIGJ1ZmZlciBoZWFkcyB0aGF0IGxhY2sgYW4gYXNzb2NpYXRlZCBmb2xpbyAoZS5nLiBidWZmZXJzIGJhY2tlZCBieSBgYmgtXHUwMDNlYl9kYXRhYCkuXG5cblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcsIHdoaWNoIGlzIGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdGlvbiAvIHBhZ2UgZmF1bHQgaGFuZGxlcnMgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgZG9lcyBub3QgcmVhZCBvciBicmFuY2ggb24gdW5pbml0aWFsaXplZCBtZW1vcnksIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIHRvIHVzZXJzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGJ1ZmZlciBsZW5ndGggY2FsY3VsYXRpb25zLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gX19iaF9zdWJtaXQoKSBieSBjaGVja2luZyBpZiBiaC1cdTAwM2ViX2ZvbGlvIGlzIG5vbi1OVUxMIGJlZm9yZSBjYWxsaW5nIGZvbGlvX3Rlc3RfZHJvcGJlaGluZCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgYnVmZmVyIGhlYWQgSS9PIHN1Ym1pc3Npb24gbG9naWMgaW4gZnMvYnVmZmVyLmMsIHdoaWNoIGlzIGRpcmVjdGx5IHJlYWNoYWJsZSBieSBzdGFuZGFyZCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDM6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5ZmVjOTVlY2JhYjY5NzRlYWE0MTEwZTcwMjdiYmQyZDkxZjc1ODJhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAwMzowMjo1OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9idWZmZXIuYyBiL2ZzL2J1ZmZlci5jXG5pbmRleCA0MjdkOGE4MTdjZDU2Li5mNDZmYTY0MTMwMzJkIDEwMDY0NFxuLS0tIGEvZnMvYnVmZmVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2J1ZmZlci5jXG5AQCAtMTEwNiw3ICYjNDM7MTEwNiw4IEBAIHN0YXRpYyB2b2lkIF9fYmhfc3VibWl0KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcGYsXG4gXG4gXHRiaW8gPSBiaW9fYWxsb2MoYmgtXHUwMDNlYl9iZGV2LCAxLCBvcGYsIEdGUF9OT0lPKTtcbiBcbi1cdGlmIChmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtXHUwMDNlYl9mb2xpbykgXHUwMDI2XHUwMDI2IG9wX2lzX3dyaXRlKG9wZikpXG4mIzQzO1x0aWYgKGJoLVx1MDAzZWJfZm9saW8gXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cdTAwM2ViX2ZvbGlvKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgb3BfaXNfd3JpdGUob3BmKSlcbiBcdFx0YmlvX3NldF9mbGFnKGJpbywgQklPX0NPTVBMRVRFX0lOX1RBU0spO1xuIFxuIFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0ZTX0VOQ1JZUFRJT04pKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JVRkZFUl9IRUFEJiMzNDssCiAgICAmIzM0O0JMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19iaF9zdWJtaXQmIzM0OywKICAgICYjMzQ7Ymhfc3VibWl0JiMzNDssCiAgICAmIzM0O19fYmxvY2tfd3JpdGVfZnVsbF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gX19iaF9zdWJtaXQoKSBieSBjaGVja2luZyBpZiBiaC1cdTAwM2ViX2ZvbGlvIGlzIG5vbi1OVUxMIGJlZm9yZSBjYWxsaW5nIGZvbGlvX3Rlc3RfZHJvcGJlaGluZCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgYnVmZmVyIGhlYWQgSS9PIHN1Ym1pc3Npb24gbG9naWMgaW4gZnMvYnVmZmVyLmMsIHdoaWNoIGlzIGRpcmVjdGx5IHJlYWNoYWJsZSBieSBzdGFuZGFyZCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZmVjOTVlY2JhYjY5NzRlYWE0MTEwZTcwMjdiYmQyZDkxZjc1ODJhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgOCAwMzowMjo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2J1ZmZlci5jIGIvZnMvYnVmZmVyLmMKaW5kZXggNDI3ZDhhODE3Y2Q1Ni4uZjQ2ZmE2NDEzMDMyZCAxMDA2NDQKLS0tIGEvZnMvYnVmZmVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvYnVmZmVyLmMKQEAgLTExMDYsNyAmIzQzOzExMDYsOCBAQCBzdGF0aWMgdm9pZCBfX2JoX3N1Ym1pdChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BmLAogCiAJYmlvID0gYmlvX2FsbG9jKGJoLSZndDtiX2JkZXYsIDEsIG9wZiwgR0ZQX05PSU8pOwogCi0JaWYgKGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC0mZ3Q7Yl9mb2xpbykgJmFtcDsmYW1wOyBvcF9pc193cml0ZShvcGYpKQomIzQzOwlpZiAoYmgtJmd0O2JfZm9saW8gJmFtcDsmYW1wOyBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtJmd0O2JfZm9saW8pICZhbXA7JmFtcDsKJiM0MzsJICAgIG9wX2lzX3dyaXRlKG9wZikpCiAJCWJpb19zZXRfZmxhZyhiaW8sIEJJT19DT01QTEVURV9JTl9UQVNLKTsKIAogCWlmIChJU19FTkFCTEVEKENPTkZJR19GU19FTkNSWVBUSU9OKSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDM6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwMgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCdWZmZXIgSGVhZCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGZzL2J1ZmZlci5jYC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IGl0IHNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgb3B0aW1pemF0aW9uIG9yIGJ1ZyBmaXggcmVsYXRlZCB0byBgYnVmZmVyX2hlYWRgIG9wZXJhdGlvbnMuIEkgc2VlIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgYF9fYmhfc3VibWl0YCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGhvdyBCSU9zIGFyZSBhbGxvY2F0ZWQgYW5kIGNvbmZpZ3VyZWQuCgpUaGUgY3J1eCBvZiB0aGUgY2hhbmdlIGlzIGFyb3VuZCB0aGUgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZGAgY2hlY2suIFByZXZpb3VzbHksIGl0IGxvb2tzIGxpa2UgdGhpcyBjaGVjayB3YXMgaW1wbGljaXRseSBhc3N1bWluZyBhIHZhbGlkIGZvbGlvIGV4aXN0ZWQgZm9yIHRoZSBgYnVmZmVyX2hlYWRgLiBUaGUgcGF0Y2ggYWRkcyBhbiBleHBsaWNpdCBgYmgtJmd0O2JfZm9saW9gIGNoZWNrIGJlZm9yZSBjYWxsaW5nIGBmb2xpb190ZXN0X2Ryb3BiZWhpbmRgLiBUaGlzIGlzIHRoZSBpbXBvcnRhbnQgcGFydCAtIGl0JiMzOTtzIGEgc2FmZXR5IG1lYXN1cmUsIGxpa2VseSB0byBwcmV2ZW50IGEgcG90ZW50aWFsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIGNvbmRpdGlvbmFsIGBvcF9pc193cml0ZShvcGYpYCBpbmRpY2F0ZXMgdGhlIG9wdGltaXphdGlvbiBpcyBzcGVjaWZpYyB0byB3cml0ZSBvcGVyYXRpb25zLiBJIHVuZGVyc3RhbmQgdGhhdCB0aGUgYEJJT19DT01QTEVURV9JTl9UQVNLYCBmbGFnIG9wdGltaXplcyB3cml0ZSBvcGVyYXRpb25zIGJ5IGNvbXBsZXRpbmcgdGhlbSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIHN1Ym1pdHRpbmcgdGFzayBpZiBgZHJvcGJlaGluZGAgaXMgZW5hYmxlZCBvbiB0aGUgYGZvbGlvYC4KClRoZSBgaWYgKGJoLSZndDtiX2ZvbGlvKWAgY29uZGl0aW9uYWwgaXMgYSBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBwcmFjdGljZS4gSXQgZW5zdXJlcyB0aGF0IHdlIGFyZSBub3Qgb3BlcmF0aW5nIG9uIGEgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBvciBmcmVlZCBgYnVmZmVyX2hlYWRgIG9yIGZvbGlvLCB3aGljaCBjYW4gbGVhZCB0byBjcmFzaGVzLiBJJiMzOTtkIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgYnVmZmVyIGhlYWQgaGFuZGxpbmcgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIG51bGwgZm9saW8gY29uZGl0aW9uIG1pZ2h0IGFyaXNlLCBidXQgdGhpcyBwYXRjaCBjbGVhcmx5IGFkZHJlc3NlcyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LiBJdCYjMzk7cyBhIGNsZWFuLCBzYWZlIGZpeCwgYW5kIEkgYXBwcmVjaWF0ZSB0aGUgY2F1dGlvbi4gSXQmIzM5O3MgYWx3YXlzIGJldHRlciB0byBiZSBleHBsaWNpdCBhYm91dCB0aGVzZSBjaGVja3MsIGVzcGVjaWFsbHkgaW4ga2VybmVsIGNvZGUuIE5vdyBJJiMzOTtkIGxpa2UgdG8gY2hlY2sgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBlbHNld2hlcmUsIGluIHRoZSBgZnMvYnVmZmVyLmNgIGZpbGUgYW5kIGFsc28gaW4gb3RoZXIgcGxhY2VzIGluIHRoZSBrZXJuZWwgdXNpbmcgYSBjcm9zcy1yZWZlcmVuY2Ugc2VhcmNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvYnVmZmVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQ1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwOTU6XHRcdEJVR19PTighYnVmZmVyX2xvY2tlZChiaCkpO1xuMTA5NjpcdFx0QlVHX09OKCFidWZmZXJfbWFwcGVkKGJoKSk7XG4xMDk3Olx0XHRCVUdfT04oYnVmZmVyX2RlbGF5KGJoKSk7XG4xMDk4Olx0XHRCVUdfT04oYnVmZmVyX3Vud3JpdHRlbihiaCkpO1xuMTA5OTpcdFxuMTEwMDpcdFx0c2V0X2J1ZmZlcl9yZXEoYmgpO1xuMTEwMTpcdFxuMTEwMjpcdFx0aWYgKGJ1ZmZlcl9tZXRhKGJoKSlcbjExMDM6XHRcdFx0b3BmIHw9IFJFUV9NRVRBO1xuMTEwNDpcdFx0aWYgKGJ1ZmZlcl9wcmlvKGJoKSlcbjExMDU6XHRcdFx0b3BmIHw9IFJFUV9QUklPO1xuMTEwNjpcdFxuMTEwNzpcdFx0YmlvID0gYmlvX2FsbG9jKGJoLVx1MDAzZWJfYmRldiwgMSwgb3BmLCBHRlBfTk9JTyk7XG4xMTA4Olx0XG4xMTA5Olx0XHRpZiAoYmgtXHUwMDNlYl9mb2xpbyBcdTAwMjZcdTAwMjYgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVx1MDAzZWJfZm9saW8pIFx1MDAyNlx1MDAyNlxuMTExMDpcdFx0ICAgIG9wX2lzX3dyaXRlKG9wZikpXG4xMTExOlx0XHRcdGJpb19zZXRfZmxhZyhiaW8sIEJJT19DT01QTEVURV9JTl9UQVNLKTtcbjExMTI6XHRcbjExMTM6XHRcdGlmIChJU19FTkFCTEVEKENPTkZJR19GU19FTkNSWVBUSU9OKSlcbjExMTQ6XHRcdFx0YnVmZmVyX3NldF9jcnlwdG9fY3R4KGJpbywgYmgsIEdGUF9OT0lPKTtcbjExMTU6XHRcbjExMTY6XHRcdGJpby1cdTAwM2ViaV9pdGVyLmJpX3NlY3RvciA9IGJoLVx1MDAzZWJfYmxvY2tuciAqIChiaC1cdTAwM2ViX3NpemUgXHUwMDNlXHUwMDNlIDkpO1xuMTExNzpcdFx0YmlvLVx1MDAzZWJpX3dyaXRlX2hpbnQgPSB3cml0ZV9oaW50O1xuMTExODpcdFxuMTExOTpcdFx0aWYgKGJoLVx1MDAzZWJfZm9saW8pXG4xMTIwOlx0XHRcdGJpb19hZGRfZm9saW9fbm9mYWlsKGJpbywgYmgtXHUwMDNlYl9mb2xpbywgYmgtXHUwMDNlYl9zaXplLFxuMTEyMTpcdFx0XHRcdFx0ICAgICBiaF9vZmZzZXQoYmgpKTtcbjExMjI6XHRcdGVsc2VcbjExMjM6XHRcdFx0YmlvX2FkZF92aXJ0X25vZmFpbChiaW8sIGJoLVx1MDAzZWJfZGF0YSwgYmgtXHUwMDNlYl9zaXplKTtcbjExMjQ6XHRcbjExMjU6XHRcdGJpby1cdTAwM2ViaV9lbmRfaW8gPSBlbmRfYmlvO1xuMTEyNjpcdFx0YmlvLVx1MDAzZWJpX3ByaXZhdGUgPSBiaDtcbjExMjc6XHRcbjExMjg6XHRcdC8qIFRha2UgY2FyZSBvZiBiaCYjMzk7cyB0aGF0IHN0cmFkZGxlIHRoZSBlbmQgb2YgdGhlIGRldmljZSAqL1xuMTEyOTpcdFx0Z3VhcmRfYmlvX2VvZChiaW8pO1xuMTEzMDpcdFxuMTEzMTpcdFx0aWYgKHdiYykge1xuMTEzMjpcdFx0XHR3YmNfaW5pdF9iaW8od2JjLCBiaW8pO1xuMTEzMzpcdFx0XHRpZiAoYmgtXHUwMDNlYl9mb2xpbylcbjExMzQ6XHRcdFx0XHR3YmNfYWNjb3VudF9jZ3JvdXBfb3duZXIod2JjLCBiaC1cdTAwM2ViX2ZvbGlvLCBiaC1cdTAwM2ViX3NpemUpO1xuMTEzNTpcdFx0fVxuMTEzNjpcdFxuMTEzNzpcdFx0YmxrX2NyeXB0b19zdWJtaXRfYmlvKGJpbyk7XG4xMTM4Olx0fVxuMTEzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMDcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYF9fYmhfc3VibWl0YCBDYWxsZXJzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgX19iaF9zdWJtaXRgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBJdCYjMzk7cyBsaWtlbHkgYSBib3R0b20taGFsZiBoYW5kbGVyIHN1Ym1pc3Npb24gZnVuY3Rpb24sIHByb2JhYmx5IGhhbmRsaW5nIGRlZmVycmVkIHdvcmsgaW4gdGhlIGtlcm5lbC4gTm93LCBsZXQmIzM5O3MgdHJhY2UgdGhlIGNhbGxlcnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGVyZSogYW5kICp3aHkqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC4gV2hhdCBzY2VuYXJpb3MgdHJpZ2dlciB0aGUgbmVlZCB0byBkZWZlciBwcm9jZXNzaW5nIHZpYSBhIGJvdHRvbS1oYWxmIG1lY2hhbmlzbT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgaW50ZXJydXB0IGhhbmRsZXJzLCBzb2Z0aXJxcywgdGFza2xldHMsIHdvcmtxdWV1ZXMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHF1aWNrIGNvZGUgZGl2ZSBzaG91bGQgcmV2ZWFsIHRoZSBjYWxsIHNpdGVzLCBhbmQgZnJvbSB0aGVyZSwgSSBjYW4gaW5mZXIgdGhlIGNvbnRleHQgb2YgdGhlIHN1Ym1pc3Npb25zLgoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcGF0dGVybnM6IGFyZSB0aGUgY2FsbGVycyByZWxhdGVkIHRvIG5ldHdvcmsgcHJvY2Vzc2luZywgZGlzayBJL08sIGRldmljZSBkcml2ZXJzLCBvciBzb21lIG90aGVyIHN1YnN5c3RlbT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBvciBsb2NraW5nIGNvbnNpZGVyYXRpb25zIGluIHRoZSBjYWxsIHBhdGhzPyBLbm93aW5nIHRoZSBjYWxsZXJzIGdpdmVzIG1lIHRoZSBjcnVjaWFsIGNvbnRleHQgdG8gYXNzZXNzIHRoZSBmdW5jdGlvbiYjMzk7cyBvdmVyYWxsIGltcGFjdCBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzLiBUaGlzIGludmVzdGlnYXRpb24gd2lsbCBwcm9iYWJseSBoaWdobGlnaHQgdGhlIGNyaXRpY2FsIHNlY3Rpb25zIGd1YXJkZWQgYnkgQkggbG9ja3MgYW5kIGVuYWJsZSBtZSB0byBzcG90IGFueSBjb250ZW50aW9uIG9yIHJhY2UgY29uZGl0aW9ucyBpbiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fYmhfc3VibWl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYnVmZmVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYnVmZmVyLmM9MTA3MD1zdGF0aWMgdm9pZCBidWZmZXJfc2V0X2NyeXB0b19jdHgoc3RydWN0IGJpbyAqYmlvLCBjb25zdCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLFxuLS1cbmZzL2J1ZmZlci5jLTEwODgtXG5mcy9idWZmZXIuYzoxMDg5OnN0YXRpYyB2b2lkIF9fYmhfc3VibWl0KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcGYsXG5mcy9idWZmZXIuYy0xMDkwLVx0XHRlbnVtIHJ3X2hpbnQgd3JpdGVfaGludCwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMsXG4tLVxuZnMvYnVmZmVyLmM9MTE0OT12b2lkIGJoX3N1Ym1pdChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BmLCBiaW9fZW5kX2lvX3QgZW5kX2lvKVxuZnMvYnVmZmVyLmMtMTE1MC17XG5mcy9idWZmZXIuYzoxMTUxOlx0X19iaF9zdWJtaXQoYmgsIG9wZiwgV1JJVEVfTElGRV9OT1RfU0VULCBOVUxMLCBlbmRfaW8pO1xuZnMvYnVmZmVyLmMtMTE1Mi19XG4tLVxuZnMvYnVmZmVyLmM9MTcyNj1pbnQgX19ibG9ja193cml0ZV9mdWxsX2ZvbGlvKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxuZnMvYnVmZmVyLmMtMTgyMS1cdFx0aWYgKGJ1ZmZlcl9hc3luY193cml0ZShiaCkpIHtcbmZzL2J1ZmZlci5jOjE4MjI6XHRcdFx0X19iaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSB8IHdyaXRlX2ZsYWdzLFxuZnMvYnVmZmVyLmMtMTgyMy1cdFx0XHRcdFx0aW5vZGUtXHUwMDNlaV93cml0ZV9oaW50LCB3YmMsXG4tLVxuZnMvYnVmZmVyLmMtMTg3Ni1cdFx0XHRjbGVhcl9idWZmZXJfZGlydHkoYmgpO1xuZnMvYnVmZmVyLmM6MTg3NzpcdFx0XHRfX2JoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgd3JpdGVfZmxhZ3MsXG5mcy9idWZmZXIuYy0xODc4LVx0XHRcdFx0XHRpbm9kZS1cdTAwM2VpX3dyaXRlX2hpbnQsIHdiYyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDMzCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMjU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYF9fYmhfc3VibWl0YCBhbmQgYGJoX3N1Ym1pdGAgQ29kZSBQYXRocyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBfX2JoX3N1Ym1pdGAgaXMgdGhlIHdvcmtob3JzZSBoZXJlLCBjYWxsZWQgZGlyZWN0bHkgYnkgYGJoX3N1Ym1pdGAgYW5kLCBpbnRlcmVzdGluZ2x5LCBhbHNvIGJ5IGBfX2Jsb2NrX3dyaXRlX2Z1bGxfZm9saW9gLiBUaGF0JiMzOTtzIGdvb2QgdG8ga2VlcCBpbiBtaW5kLCB3ZSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byBsb29rIGF0IGJvdGggY29kZSBwYXRocy4KCkkmIzM5O20gbm90aWNpbmcgc29tZXRoaW5nIHRoYXQgaW1tZWRpYXRlbHkgc3RhbmRzIG91dDogdGhlIGNvbmRpdGlvbmFsIGluIHRoZSBjb2RlIHNuaXBwZXQuIEl0IGV4cGxpY2l0bHkgY2hlY2tzIGBiaC0mZ3Q7Yl9mb2xpb2AuIFRoZSBpbXBsaWNhdGlvbiBoZXJlIGlzIHRoYXQgYGJoLSZndDtiX2ZvbGlvYCAqY2FuKiBiZSBOVUxMLiBTcGVjaWZpY2FsbHk6CgpgYGBjCmlmIChiaC0mZ3Q7Yl9mb2xpbykKICAgIGJpb19hZGRfZm9saW9fbm9mYWlsKGJpbywgYmgtJmd0O2JfZm9saW8sIGJoLSZndDtiX3NpemUsIGJoX29mZnNldChiaCkpOwplbHNlCiAgICBiaW9fYWRkX3ZpcnRfbm9mYWlsKGJpbywgYmgtJmd0O2JfZGF0YSwgYmgtJmd0O2Jfc2l6ZSk7CmBgYAoKVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBCdWZmZXIgaGVhZHMgYXJlbiYjMzk7dCAqYWx3YXlzKiBiYWNrZWQgYnkgZm9saW9zLiBTb21ldGltZXMgdGhleSYjMzk7cmUgdXNpbmcgdmlydHVhbCBtZW1vcnksIGxpa2Ugd2hlbiBkZWFsaW5nIHdpdGggZmlsZXN5c3RlbSBtZXRhZGF0YSBvciBqb3VybmFsIGRhdGEgKHRoaW5rIGpiZDIpLCB3aGVyZSBrbWFsbG9jIG9yIHNpbWlsYXIgYWxsb2NhdGlvbiBtZWNoYW5pc21zIGFyZSB1c2VkLgoKQW5kIGhlcmUmIzM5O3MgdGhlIHByb2JsZW06IFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBtYWtpbmcgYW4gdW5jb25kaXRpb25hbCBjYWxsIHRvIGBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtJmd0O2JfZm9saW8pYC4gSWYgYGJoLSZndDtiX2ZvbGlvYCB3YXMgTlVMTCwgdGhhdCYjMzk7cyBhIGNsYXNzaWMgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLiBUaGUgZml4LCB0aGVyZWZvcmUsIGlzIGNsZWFyIGFuZCBjb25jaXNlOiBvbmx5IGNhbGwgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZGAgaWYgYGJoLSZndDtiX2ZvbGlvYCBpcyBhY3R1YWxseSBhIHZhbGlkIHBvaW50ZXIuCgpTbyB0aGUgZml4IG9mIGFkZGluZyBgYmgtJmd0O2JfZm9saW8gJmFtcDsmYW1wOyBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtJmd0O2JfZm9saW8pYCBpcyBjbGVhbiBhbmQgc29sdmVzIHRoZSBwcm9ibGVtIGluIGBfX2JoX3N1Ym1pdCgpYC4gTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGNhbGxlcnMgb2YgYGJoX3N1Ym1pdGAgYW5kIGBfX2JoX3N1Ym1pdGAgYW5kIG1ha2Ugc3VyZSB3ZSBkb24mIzM5O3QgaGF2ZSB0aGlzIG9yIHNpbWlsYXIgcG90ZW50aWFsIGlzc3VlcyBlbHNld2hlcmUgaW4gdGhlIHJlbGF0ZWQgYnVmZmVyIGhlYWQgc3VibWlzc2lvbiBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JoX3N1Ym1pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3Q9MTU3OD1mdW5jdGlvbi10cmFjZSwgd2UgZ2V0IGEgbXVjaCBsYXJnZXIgb3V0cHV0Ojpcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3QtMTYzMC0gICA9XHUwMDNlIHN1Ym1pdF9iaW9cbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdDoxNjMxOiAgID1cdTAwM2UgYmhfc3VibWl0XG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3QtMTYzMi0gICA9XHUwMDNlIF9fZXh0M19nZXRfaW5vZGVfbG9jXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0PTE4NzE9dHJhY2Vycy5cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3QtMTkxNS0gICA9XHUwMDNlIHN1Ym1pdF9iaW9cbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdDoxOTE2OiAgID1cdTAwM2UgYmhfc3VibWl0XG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3QtMTkxNy0gICA9XHUwMDNlIGV4dDNfYnJlYWRcbi0tXG5kcml2ZXJzL21kL21kLWJpdG1hcC5jPTUxNz1zdGF0aWMgdm9pZCB3cml0ZV9maWxlX3BhZ2Uoc3RydWN0IGJpdG1hcCAqYml0bWFwLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IHdhaXQpXG4tLVxuZHJpdmVycy9tZC9tZC1iaXRtYXAuYy01MjQtXHRcdHNldF9idWZmZXJfbWFwcGVkKGJoKTtcbmRyaXZlcnMvbWQvbWQtYml0bWFwLmM6NTI1Olx0XHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSB8IFJFUV9TWU5DLCBlbmRfYml0bWFwX3dyaXRlKTtcbmRyaXZlcnMvbWQvbWQtYml0bWFwLmMtNTI2LVx0XHRiaCA9IGJoLVx1MDAzZWJfdGhpc19wYWdlO1xuLS1cbmRyaXZlcnMvbWQvbWQtYml0bWFwLmM9NTU4PXN0YXRpYyBpbnQgcmVhZF9maWxlX3BhZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgsXG4tLVxuZHJpdmVycy9tZC9tZC1iaXRtYXAuYy02MDAtXHRcdFx0c2V0X2J1ZmZlcl9tYXBwZWQoYmgpO1xuZHJpdmVycy9tZC9tZC1iaXRtYXAuYzo2MDE6XHRcdFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCwgZW5kX2JpdG1hcF93cml0ZSk7XG5kcml2ZXJzL21kL21kLWJpdG1hcC5jLTYwMi1cdFx0fVxuLS1cbmZzL2J1ZmZlci5jPTEyMz1zdGF0aWMgdm9pZCBidWZmZXJfaW9fZXJyb3Ioc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgY2hhciAqbXNnKVxuLS1cbmZzL2J1ZmZlci5jLTEzNi0gKiBDYWxsIHRoaXMgaW4geW91ciBiaW9fZW5kX2lvIGhhbmRsZXIgdG8gcmV0cmlldmUgdGhlIGJ1ZmZlcl9oZWFkXG5mcy9idWZmZXIuYzoxMzc6ICogc3VibWl0dGVkIGluIGJoX3N1Ym1pdCgpLiAgSWYgeW91IGRpZCBub3QgY2FsbCBiaF9zdWJtaXQoKSwgZG8gbm90XG5mcy9idWZmZXIuYy0xMzgtICogY2FsbCB0aGlzIGZ1bmN0aW9uOyBpdCB3aWxsIHJldHVybiBnYXJiYWdlLlxuLS1cbmZzL2J1ZmZlci5jPTE1Nz1FWFBPUlRfU1lNQk9MKGJpb19lbmRpb19iaCk7XG4tLVxuZnMvYnVmZmVyLmMtMTYzLSAqXG5mcy9idWZmZXIuYzoxNjQ6ICogSWYgYSBidWZmZXIgaXMgcmVhZCB0aHJvdWdoIGEgbWVjaGFuaXNtIHRoYXQgaXNuJiMzOTt0IGJoX3N1Ym1pdCgpLCB5b3VcbmZzL2J1ZmZlci5jLTE2NS0gKiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIGZpbmlzaCB0aGUgcmVhZC5cbi0tXG5mcy9idWZmZXIuYz0xNzc9RVhQT1JUX1NZTUJPTChlbmRfYnVmZmVyX3JlYWRfc3luYyk7XG4tLVxuZnMvYnVmZmVyLmMtMTgyLSAqXG5mcy9idWZmZXIuYzoxODM6ICogUGFzcyB0aGlzIGZ1bmN0aW9uIHRvIGJoX3N1Ym1pdCgpIGlmIHlvdSYjMzk7cmUgcmVhZGluZyBpbnRvIHRoZSBidWZmZXIsXG5mcy9idWZmZXIuYy0xODQtICogdW5sZXNzIHlvdSBuZWVkIHlvdXIgb3duIHNwZWNpYWwgSS9PIGVuZCBoYW5kbGVyLlxuLS1cbmZzL2J1ZmZlci5jPTE5Mj1FWFBPUlRfU1lNQk9MKGJoX2VuZF9yZWFkKTtcbi0tXG5mcy9idWZmZXIuYy0xOTctICpcbmZzL2J1ZmZlci5jOjE5ODogKiBQYXNzIHRoaXMgZnVuY3Rpb24gdG8gYmhfc3VibWl0KCkgaWYgeW91JiMzOTtyZSB3cml0aW5nIGZyb20gdGhlIGJ1ZmZlcixcbmZzL2J1ZmZlci5jLTE5OS0gKiB1bmxlc3MgeW91IG5lZWQgeW91ciBvd24gc3BlY2lhbCBJL08gZW5kIGhhbmRsZXIuXG4tLVxuZnMvYnVmZmVyLmM9MzYyPXN0YXRpYyB2b2lkIGJoX2VuZF9hc3luY19yZWFkKHN0cnVjdCBiaW8gKmJpbylcbi0tXG5mcy9idWZmZXIuYy0zOTItICpcbmZzL2J1ZmZlci5jOjM5MzogKiBQYXNzIHRoaXMgZnVuY3Rpb24gdG8gYmhfc3VibWl0KCkgaWYgeW91JiMzOTtyZSBkb2luZyB0aGUgZXF1aXZhbGVudCBvZlxuZnMvYnVmZmVyLmMtMzk0LSAqIGJsb2NrX3dyaXRlX2Z1bGxfZm9saW8oKS4gIFRoYXQgaXMsIHRoZSBmb2xpbyBpcyB1bmxvY2tlZCwgYW5kIHdpbGxcbi0tXG5mcy9idWZmZXIuYz0xMDcwPXN0YXRpYyB2b2lkIGJ1ZmZlcl9zZXRfY3J5cHRvX2N0eChzdHJ1Y3QgYmlvICpiaW8sIGNvbnN0IHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsXG4tLVxuZnMvYnVmZmVyLmMtMTA4OC1cbmZzL2J1ZmZlci5jOjEwODk6c3RhdGljIHZvaWQgX19iaF9zdWJtaXQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgYmxrX29wZl90IG9wZixcbmZzL2J1ZmZlci5jLTEwOTAtXHRcdGVudW0gcndfaGludCB3cml0ZV9oaW50LCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYyxcbi0tXG5mcy9idWZmZXIuYy0xMTQwLS8qKlxuZnMvYnVmZmVyLmM6MTE0MTogKiBiaF9zdWJtaXQgLSBTdGFydCBJL08gYWdhaW5zdCBhIGJ1ZmZlciBoZWFkXG5mcy9idWZmZXIuYy0xMTQyLSAqIEBiaDogVGhlIGJ1ZmZlciBoZWFkIHRvIHBlcmZvcm0gSS9PIG9uLlxuLS1cbmZzL2J1ZmZlci5jLTExNDgtICovXG5mcy9idWZmZXIuYzoxMTQ5OnZvaWQgYmhfc3VibWl0KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcGYsIGJpb19lbmRfaW9fdCBlbmRfaW8pXG5mcy9idWZmZXIuYy0xMTUwLXtcbmZzL2J1ZmZlci5jOjExNTE6XHRfX2JoX3N1Ym1pdChiaCwgb3BmLCBXUklURV9MSUZFX05PVF9TRVQsIE5VTEwsIGVuZF9pbyk7XG5mcy9idWZmZXIuYy0xMTUyLX1cbmZzL2J1ZmZlci5jOjExNTM6RVhQT1JUX1NZTUJPTChiaF9zdWJtaXQpO1xuZnMvYnVmZmVyLmMtMTE1NC1cbmZzL2J1ZmZlci5jPTExNTU9c3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqX19icmVhZF9zbG93KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpXG4tLVxuZnMvYnVmZmVyLmMtMTE2MS1cdH0gZWxzZSB7XG5mcy9idWZmZXIuYzoxMTYyOlx0XHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9SRUFELCBiaF9lbmRfcmVhZCk7XG5mcy9idWZmZXIuYy0xMTYzLVx0XHR3YWl0X29uX2J1ZmZlcihiaCk7XG4tLVxuZnMvYnVmZmVyLmM9MTY4Mj1zdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpmb2xpb19jcmVhdGVfYnVmZmVycyhzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuLS1cbmZzL2J1ZmZlci5jLTE3MTgtICogaGFzIGEgbG9ja2VkIGJ1ZmZlci4gICBUaGlzIG9ubHkgY2FuIGhhcHBlbiBpZiBzb21lb25lIGhhcyB3cml0dGVuXG5mcy9idWZmZXIuYzoxNzE5OiAqIHRoZSBidWZmZXIgZGlyZWN0bHksIHdpdGggYmhfc3VibWl0KCkuICBBdCB0aGUgYWRkcmVzc19zcGFjZSBsZXZlbFxuZnMvYnVmZmVyLmMtMTcyMC0gKiB0aGUgZm9saW8gd3JpdGViYWNrIGZsYWcgcHJldmVudHMgdGhpcyBjb250ZW50aW9uIGZyb20gb2NjdXJyaW5nLlxuLS1cbmZzL2J1ZmZlci5jPTE3MjY9aW50IF9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpbyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuLS1cbmZzL2J1ZmZlci5jLTE4MjEtXHRcdGlmIChidWZmZXJfYXN5bmNfd3JpdGUoYmgpKSB7XG5mcy9idWZmZXIuYzoxODIyOlx0XHRcdF9fYmhfc3VibWl0KGJoLCBSRVFfT1BfV1JJVEUgfCB3cml0ZV9mbGFncyxcbmZzL2J1ZmZlci5jLTE4MjMtXHRcdFx0XHRcdGlub2RlLVx1MDAzZWlfd3JpdGVfaGludCwgd2JjLFxuLS1cbmZzL2J1ZmZlci5jLTE4MzYtXHRcdCAqIGNsZWFuLiAgU29tZW9uZSB3cm90ZSB0aGVtIGJhY2sgYnkgaGFuZCB3aXRoXG5mcy9idWZmZXIuYzoxODM3Olx0XHQgKiB3cml0ZV9kaXJ0eV9idWZmZXIvYmhfc3VibWl0LiAgQSByYXJlIGNhc2UuXG5mcy9idWZmZXIuYy0xODM4LVx0XHQgKi9cbi0tXG5mcy9idWZmZXIuYy0xODc2LVx0XHRcdGNsZWFyX2J1ZmZlcl9kaXJ0eShiaCk7XG5mcy9idWZmZXIuYzoxODc3Olx0XHRcdF9fYmhfc3VibWl0KGJoLCBSRVFfT1BfV1JJVEUgfCB3cml0ZV9mbGFncyxcbmZzL2J1ZmZlci5jLTE4NzgtXHRcdFx0XHRcdGlub2RlLVx1MDAzZWlfd3JpdGVfaGludCwgd2JjLFxuLS1cbmZzL2J1ZmZlci5jPTIyODI9aW50IGJsb2NrX3JlYWRfZnVsbF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBnZXRfYmxvY2tfdCAqZ2V0X2Jsb2NrKVxuLS1cbmZzL2J1ZmZlci5jLTIzNjMtXHRcdGlmIChwcmV2KVxuZnMvYnVmZmVyLmM6MjM2NDpcdFx0XHRiaF9zdWJtaXQocHJldiwgUkVRX09QX1JFQUQsIGJoX2VuZF9hc3luY19yZWFkKTtcbmZzL2J1ZmZlci5jLTIzNjUtXHRcdHByZXYgPSBiaDtcbi0tXG5mcy9idWZmZXIuYy0yMzc3LVx0aWYgKHByZXYpXG5mcy9idWZmZXIuYzoyMzc4Olx0XHRiaF9zdWJtaXQocHJldiwgUkVRX09QX1JFQUQsIGJoX2VuZF9hc3luY19yZWFkKTtcbmZzL2J1ZmZlci5jLTIzNzktXHRlbHNlXG4tLVxuZnMvYnVmZmVyLmM9MjY4Nj12b2lkIHdyaXRlX2RpcnR5X2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BfZmxhZ3MpXG4tLVxuZnMvYnVmZmVyLmMtMjY5Mi1cdH1cbmZzL2J1ZmZlci5jOjI2OTM6XHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSB8IG9wX2ZsYWdzLCBiaF9lbmRfd3JpdGUpO1xuZnMvYnVmZmVyLmMtMjY5NC19XG4tLVxuZnMvYnVmZmVyLmM9MjcwMj1pbnQgX19zeW5jX2RpcnR5X2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BfZmxhZ3MpXG4tLVxuZnMvYnVmZmVyLmMtMjcxNS1cbmZzL2J1ZmZlci5jOjI3MTY6XHRcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgb3BfZmxhZ3MsIGJoX2VuZF93cml0ZSk7XG5mcy9idWZmZXIuYy0yNzE3LVx0XHR3YWl0X29uX2J1ZmZlcihiaCk7XG4tLVxuZnMvYnVmZmVyLmM9Mjk0Mj1pbnQgX19iaF9yZWFkKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcF9mbGFncywgYm9vbCB3YWl0KVxuLS1cbmZzL2J1ZmZlci5jLTI5NDctXG5mcy9idWZmZXIuYzoyOTQ4Olx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCB8IG9wX2ZsYWdzLCBiaF9lbmRfcmVhZCk7XG5mcy9idWZmZXIuYy0yOTQ5LVx0aWYgKHdhaXQpIHtcbi0tXG5mcy9idWZmZXIuYz0yOTY4PXZvaWQgX19iaF9yZWFkX2JhdGNoKGludCBuciwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaHNbXSxcbi0tXG5mcy9idWZmZXIuYy0yOTg5LVxuZnMvYnVmZmVyLmM6Mjk5MDpcdFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCB8IG9wX2ZsYWdzLCBiaF9lbmRfcmVhZCk7XG5mcy9idWZmZXIuYy0yOTkxLVx0fVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYz02NjQ9c3RhdGljIHZvaWQgZXh0NF9mY19zdWJtaXRfYmgoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgYm9vbCBpc190YWlsKVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy02NzQtXHRzZXRfYnVmZmVyX3VwdG9kYXRlKGJoKTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYzo2NzU6XHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSB8IHdyaXRlX2ZsYWdzLCBiaF9lbmRfd3JpdGUpO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTY3Ni1cdEVYVDRfU0Ioc2IpLVx1MDAzZXNfZmNfYmggPSBOVUxMO1xuLS1cbmZzL2V4dDQvbW1wLmM9NDI9c3RhdGljIGludCB3cml0ZV9tbXBfYmxvY2tfdGhhd2VkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvZXh0NC9tbXAuYy00OC1cdGxvY2tfYnVmZmVyKGJoKTtcbmZzL2V4dDQvbW1wLmM6NDk6XHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSB8IFJFUV9TWU5DIHwgUkVRX01FVEEgfCBSRVFfUFJJTyxcbmZzL2V4dDQvbW1wLmMtNTAtXHRcdFx0YmhfZW5kX3dyaXRlKTtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MTYzPXN0YXRpYyBpbmxpbmUgdm9pZCBfX2V4dDRfcmVhZF9iaChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BfZmxhZ3MsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTE4MC1cdFx0ZW5kX2lvID0gYmhfZW5kX3JlYWQ7XG5mcy9leHQ0L3N1cGVyLmM6MTgxOlx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCB8IG9wX2ZsYWdzLCBlbmRfaW8pO1xuZnMvZXh0NC9zdXBlci5jLTE4Mi19XG4tLVxuZnMvZXh0NC9zdXBlci5jPTYzMjU9c3RhdGljIGludCBleHQ0X2NvbW1pdF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy02MzU2LVx0Y2xlYXJfYnVmZmVyX2RpcnR5KHNiaCk7XG5mcy9leHQ0L3N1cGVyLmM6NjM1NzpcdGJoX3N1Ym1pdChzYmgsIFJFUV9PUF9XUklURSB8IFJFUV9TWU5DIHxcbmZzL2V4dDQvc3VwZXIuYy02MzU4LVx0XHQgICh0ZXN0X29wdChzYiwgQkFSUklFUikgPyBSRVFfRlVBIDogMCksIGJoX2VuZF93cml0ZSk7XG4tLVxuZnMvZ2ZzMi9ibWFwLmM9Mjk3PXN0YXRpYyB2b2lkIGdmczJfbWV0YXBhdGhfcmEoc3RydWN0IGdmczJfZ2xvY2sgKmdsLCBfX2JlNjQgKnN0YXJ0LCBfX2JlNjQgKmVuZClcbi0tXG5mcy9nZnMyL2JtYXAuYy0zMDktXHRcdFx0aWYgKCFidWZmZXJfdXB0b2RhdGUocmFiaCkpIHtcbmZzL2dmczIvYm1hcC5jOjMxMDpcdFx0XHRcdGJoX3N1Ym1pdChyYWJoLFxuZnMvZ2ZzMi9ibWFwLmMtMzExLVx0XHRcdFx0XHRSRVFfT1BfUkVBRCB8IFJFUV9SQUhFQUQgfCBSRVFfTUVUQSB8XG4tLVxuZnMvZ2ZzMi9kaXIuYz0xNDkyPXN0YXRpYyB2b2lkIGdmczJfZGlyX3JlYWRhaGVhZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBoc2l6ZSwgdTMyIGluZGV4LFxuLS1cbmZzL2dmczIvZGlyLmMtMTUyMC1cdFx0XHR9IGVsc2Uge1xuZnMvZ2ZzMi9kaXIuYzoxNTIxOlx0XHRcdFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCB8IFJFUV9SQUhFQUQgfFxuZnMvZ2ZzMi9kaXIuYy0xNTIyLVx0XHRcdFx0XHRcdFJFUV9NRVRBIHwgUkVRX1BSSU8sXG4tLVxuZnMvZ2ZzMi9tZXRhX2lvLmM9MzM9c3RhdGljIHZvaWQgZ2ZzMl9hc3BhY2Vfd3JpdGVfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5mcy9nZnMyL21ldGFfaW8uYy03Ny1cdFx0aWYgKGJ1ZmZlcl9hc3luY193cml0ZShiaCkpIHtcbmZzL2dmczIvbWV0YV9pby5jOjc4Olx0XHRcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgd3JpdGVfZmxhZ3MsXG5mcy9nZnMyL21ldGFfaW8uYy03OS1cdFx0XHRcdFx0YmhfZW5kX2FzeW5jX3dyaXRlKTtcbi0tXG5mcy9nZnMyL21ldGFfaW8uYz0yMDI9c3RhdGljIHZvaWQgZ2ZzMl9tZXRhX3JlYWRfZW5kaW8oc3RydWN0IGJpbyAqYmlvKVxuLS1cbmZzL2dmczIvbWV0YV9pby5jLTIyNC0gKiBTdWJtaXQgc2V2ZXJhbCBjb25zZWN1dGl2ZSBidWZmZXIgaGVhZCBJL08gcmVxdWVzdHMgYXMgYSBzaW5nbGUgYmlvIEkvT1xuZnMvZ2ZzMi9tZXRhX2lvLmM6MjI1OiAqIHJlcXVlc3QuICAoU2VlIGJoX3N1Ym1pdC4pXG5mcy9nZnMyL21ldGFfaW8uYy0yMjYtICovXG4tLVxuZnMvamJkMi9jb21taXQuYz0xMTQ9c3RhdGljIGludCBqb3VybmFsX3N1Ym1pdF9jb21taXRfcmVjb3JkKGpvdXJuYWxfdCAqam91cm5hbCxcbi0tXG5mcy9qYmQyL2NvbW1pdC5jLTE1NC1cbmZzL2piZDIvY29tbWl0LmM6MTU1Olx0Ymhfc3VibWl0KGJoLCB3cml0ZV9mbGFncywgam91cm5hbF9lbmRfYnVmZmVyX2lvX3N5bmMpO1xuZnMvamJkMi9jb21taXQuYy0xNTYtXHQqY2JoID0gYmg7XG4tLVxuZnMvamJkMi9jb21taXQuYz0zNzY9dm9pZCBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uKGpvdXJuYWxfdCAqam91cm5hbClcbi0tXG5mcy9qYmQyL2NvbW1pdC5jLTc1MC1cdFx0XHRcdHNldF9idWZmZXJfdXB0b2RhdGUoYmgpO1xuZnMvamJkMi9jb21taXQuYzo3NTE6XHRcdFx0XHRiaF9zdWJtaXQoYmgsXG5mcy9qYmQyL2NvbW1pdC5jLTc1Mi1cdFx0XHRcdFx0UkVRX09QX1dSSVRFIHwgSkJEMl9KT1VSTkFMX1JFUV9GTEFHUyxcbi0tXG5mcy9qYmQyL2pvdXJuYWwuYz0xNzg4PXN0YXRpYyBpbnQgamJkMl93cml0ZV9zdXBlcmJsb2NrKGpvdXJuYWxfdCAqam91cm5hbCwgYmxrX29wZl90IHdyaXRlX2ZsYWdzKVxuLS1cbmZzL2piZDIvam91cm5hbC5jLTE4MjYtXHRcdHNiLVx1MDAzZXNfY2hlY2tzdW0gPSBqYmQyX3N1cGVyYmxvY2tfY3N1bShzYik7XG5mcy9qYmQyL2pvdXJuYWwuYzoxODI3Olx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfV1JJVEUgfCB3cml0ZV9mbGFncywgYmhfZW5kX3dyaXRlKTtcbmZzL2piZDIvam91cm5hbC5jLTE4MjgtXHR3YWl0X29uX2J1ZmZlcihiaCk7XG4tLVxuZnMvbmlsZnMyL2J0bm9kZS5jPTg3PWludCBuaWxmc19idG5vZGVfc3VibWl0X2Jsb2NrKHN0cnVjdCBhZGRyZXNzX3NwYWNlICpidG5jLCBfX3U2NCBibG9ja25yLFxuLS1cbmZzL25pbGZzMi9idG5vZGUuYy0xMzYtXHRiaC1cdTAwM2ViX2Jsb2NrbnIgPSBwYmxvY2tucjsgLyogc2V0IGJsb2NrIGFkZHJlc3MgZm9yIHJlYWQgKi9cbmZzL25pbGZzMi9idG5vZGUuYzoxMzc6XHRiaF9zdWJtaXQoYmgsIG9wZiwgYmhfZW5kX3JlYWQpO1xuZnMvbmlsZnMyL2J0bm9kZS5jLTEzOC1cdGJoLVx1MDAzZWJfYmxvY2tuciA9IGJsb2NrbnI7IC8qIHNldCBiYWNrIHRvIHRoZSBnaXZlbiBibG9jayBhZGRyZXNzICovXG4tLVxuZnMvbmlsZnMyL2djaW5vZGUuYz01NT1pbnQgbmlsZnNfZ2NjYWNoZV9zdWJtaXRfcmVhZF9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHNlY3Rvcl90IGJsa29mZixcbi0tXG5mcy9uaWxmczIvZ2Npbm9kZS5jLTg1LVx0YmgtXHUwMDNlYl9ibG9ja25yID0gcGJuO1xuZnMvbmlsZnMyL2djaW5vZGUuYzo4NjpcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1JFQUQsIGJoX2VuZF9yZWFkKTtcbmZzL25pbGZzMi9nY2lub2RlLmMtODctXHRpZiAodmJuKVxuLS1cbmZzL25pbGZzMi9tZHQuYz0xMTY9bmlsZnNfbWR0X3N1Ym1pdF9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBsb25nIGJsa29mZiwgYmxrX29wZl90IG9wZixcbi0tXG5mcy9uaWxmczIvbWR0LmMtMTUwLVxuZnMvbmlsZnMyL21kdC5jOjE1MTpcdGJoX3N1Ym1pdChiaCwgb3BmLCBiaF9lbmRfcmVhZCk7XG5mcy9uaWxmczIvbWR0LmMtMTUyLVx0cmV0ID0gMDtcbi0tXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jPTM4PWludCBvY2ZzMl93cml0ZV9ibG9jayhzdHJ1Y3Qgb2NmczJfc3VwZXIgKm9zYiwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCxcbi0tXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jLTY0LVxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYzo2NTpcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFLCBiaF9lbmRfd3JpdGUpO1xuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYy02Ni1cbi0tXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jPTg5PWludCBvY2ZzMl9yZWFkX2Jsb2Nrc19zeW5jKHN0cnVjdCBvY2ZzMl9zdXBlciAqb3NiLCB1NjQgYmxvY2ssXG4tLVxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYy0xNDctXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jOjE0ODpcdFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCwgYmhfZW5kX3JlYWQpO1xuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYy0xNDktXHR9XG4tLVxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYz0xOTE9aW50IG9jZnMyX3JlYWRfYmxvY2tzKHN0cnVjdCBvY2ZzMl9jYWNoaW5nX2luZm8gKmNpLCB1NjQgYmxvY2ssIGludCBucixcbi0tXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jLTMyNS1cdFx0XHRcdHNldF9idWZmZXJfbmVlZHNfdmFsaWRhdGUoYmgpO1xuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYzozMjY6XHRcdFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCwgYmhfZW5kX3JlYWQpO1xuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYy0zMjctXHRcdFx0Y29udGludWU7XG4tLVxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYz00MjU9aW50IG9jZnMyX3dyaXRlX3N1cGVyX29yX2JhY2t1cChzdHJ1Y3Qgb2NmczJfc3VwZXIgKm9zYixcbi0tXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jLTQ0Ni1cdG9jZnMyX2NvbXB1dGVfbWV0YV9lY2Mob3NiLVx1MDAzZXNiLCBiaC1cdTAwM2ViX2RhdGEsIFx1MDAyNmRpLVx1MDAzZWlfY2hlY2spO1xuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYzo0NDc6XHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSwgYmhfZW5kX3dyaXRlKTtcbmZzL29jZnMyL2J1ZmZlcl9oZWFkX2lvLmMtNDQ4LVxuLS1cbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaD00OD1zdHJ1Y3QgYWRkcmVzc19zcGFjZTtcbi0tXG5pbmNsdWRlL2xpbnV4L2J1ZmZlcl9oZWFkLmgtNTYtICogYSBmb2xpbyAodmlhIGEgZm9saW9fbWFwcGluZykgYW5kIGZvciB3cmFwcGluZyBiaW8gc3VibWlzc2lvblxuaW5jbHVkZS9saW51eC9idWZmZXJfaGVhZC5oOjU3OiAqIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMgKGUuZy4gYmhfc3VibWl0KS5cbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaC01OC0gKi9cbi0tXG5pbmNsdWRlL2xpbnV4L2J1ZmZlcl9oZWFkLmg9MjMwPWJvb2wgYmlvX2VuZGlvX2JoKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGJ1ZmZlcl9oZWFkICoqYmhwKTtcbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaC0yMzEtXG5pbmNsdWRlL2xpbnV4L2J1ZmZlcl9oZWFkLmg6MjMyOi8qIENvbXBsZXRpb24gcm91dGluZXMgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gYmhfc3VibWl0KCkgKi9cbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaC0yMzMtdm9pZCBiaF9lbmRfcmVhZChzdHJ1Y3QgYmlvICpiaW8pO1xuLS1cbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaD0yNjU9dm9pZCB3cml0ZV9kaXJ0eV9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgYmxrX29wZl90IG9wX2ZsYWdzKTtcbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaDoyNjY6dm9pZCBiaF9zdWJtaXQoc3RydWN0IGJ1ZmZlcl9oZWFkICosIGJsa19vcGZfdCwgYmlvX2VuZF9pb190KTtcbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaC0yNjctdm9pZCB3cml0ZV9ib3VuZGFyeV9ibG9jayhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxuLS1cbm1tL3Ztc2Nhbi5jPTEwNzg9c3RhdGljIHVuc2lnbmVkIGludCBzaHJpbmtfZm9saW9fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LFxuLS1cbm1tL3Ztc2Nhbi5jLTE0NzEtXHRcdCAqIFRoaXMgaGFwcGVucyBpZiB0aGUgYnVmZmVycyB3ZXJlIHdyaXR0ZW4gb3V0IGRpcmVjdGx5LFxubW0vdm1zY2FuLmM6MTQ3MjpcdFx0ICogd2l0aCBiaF9zdWJtaXQoKS4gZXh0MyB3aWxsIGRvIHRoaXMsIGFzIHdlbGwgYXNcbm1tL3Ztc2Nhbi5jLTE0NzMtXHRcdCAqIHRoZSBibG9ja2RldiBtYXBwaW5nLiAgZmlsZW1hcF9yZWxlYXNlX2ZvbGlvKCkgd2lsbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODMyCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IEV2YWx1YXRpb246IGZzL2J1ZmZlci5jOl9fYmhfc3VibWl0KCkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IHBvaW50cyB0b3dhcmRzIGBmcy9idWZmZXIuY2AgYW5kIHNwZWNpZmljYWxseSBgX19iaF9zdWJtaXQoKWAgYXMgYSBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXQuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgdG91Y2hlZCBkdXJpbmcgYnVmZmVyIHN1Ym1pc3Npb25zIHRocm91Z2ggYF9fYmhfc3VibWl0KClgIGluIHZhcmlvdXMgYnVmZmVyLWhlYWQtYmFzZWQgZmlsZXN5c3RlbXMgKGV4dDQsIGdmczIsIG5pbGZzMiwgb2NmczIsIGFuZCBvdGhlcnMsIGFsb25nIHdpdGggZ2VuZXJpYyBibG9jayBidWZmZXIgb3BlcmF0aW9ucyBsaWtlIGBfX2JyZWFkYCwgYF9fc3luY19kaXJ0eV9idWZmZXJgLCBldGMuKSBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBpbnRlcmVzdGluZy4gSXQmIzM5O3MgY29yZSBWRlMvYmxvY2sgYnVmZmVyIGxheWVyIGNvZGUsIHNvIHRoYXQmIzM5O3MgYSBkZWZpbml0ZSAmIzM0O3llcyYjMzQ7IG9uIHRoZSAmIzM0O2lzIGl0IHdvcnRoIGZ1enppbmc/JiMzNDsgcXVlc3Rpb24uIFRoaXMgaXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUga2VybmVsIGNvZGUsIGFuZCB3ZSBhbGwga25vdyBob3cgbXVjaCB0aGF0IGNhbiBiaXRlIHlvdS4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgZm9jdXMgc3ltYm9scy4gYF9fYmhfc3VibWl0YCBpcyBzdGF0aWMgd2l0aGluIGBmcy9idWZmZXIuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCYjMzk7cyBjYWxsZWQgYW5kIGlmIHRoZSBjb21waWxlciBpbmxpbmVzIGl0LiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgYmhfc3VibWl0YCB3aGljaCBpcyBleHBvcnRlZCwgYW5kIGFsc28gZnJvbSBgX19ibG9ja193cml0ZV9mdWxsX2ZvbGlvYC4gVGhhdCBtYWtlcyBgYmhfc3VibWl0YCBhbmQgYF9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb2AgZ29vZCBmb2N1cyBzeW1ib2xzIHRvby4gV2UmIzM5O2xsIGluY2x1ZGUgYF9fYmhfc3VibWl0YCwgYGJoX3N1Ym1pdGAsIGBfX2Jsb2NrX3dyaXRlX2Z1bGxfZm9saW9gLCBgd3JpdGVfZGlydHlfYnVmZmVyYCwgYF9fc3luY19kaXJ0eV9idWZmZXJgLCBhbmQgYF9fYmhfcmVhZGAgc2luY2UgdGhleSBhbGwgc2VlbSByZWxldmFudC4gQnV0IHdhaXQsIEkgbmVlZCB0byBwcmlvcml0aXplLCB3aGF0JiMzOTtzIG1vc3Qgc3BlY2lmaWMgYW5kIHVuaXF1ZT8gYGJoX3N1Ym1pdGAgaXMgYSBkaXJlY3QgZW50cnkgcG9pbnQsIGJ1dCBgX19iaF9zdWJtaXRgIGlzIHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzIGRpcmVjdGx5IG1vZGlmaWVkLCBhbmQgYF9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb2AgaXMgYW5vdGhlciBkaXJlY3QgY2FsbGVyLgoKTGFzdGx5LCBhbnkgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXM/IGBmcy9idWZmZXIuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JMT0NLYCBpcyBlbmFibGVkLCBhbmQgYnVmZmVyX2hlYWQgc3VwcG9ydCBpcyBlc3NlbnRpYWwgZm9yIGJsb2NrIGxheWVycyBhbmQgYmxvY2stYmFzZWQgZmlsZXN5c3RlbXMsIHNvIHRoYXTigJlzIGVzc2VudGlhbGx5IGEgZ2l2ZW4uIEkmIzM5O2xsIGRvdWJsZS1jaGVjayBgZnMvTWFrZWZpbGVgIHRvIGNvbmZpcm0sIGJ1dCBJJiMzOTttIHByZXR0eSBjb25maWRlbnQgd2UmIzM5O3JlIGdvb2QgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J1ZmZlclxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvTWFrZWZpbGU9MTA9b2JqLXkgOj1cdG9wZW4ubyByZWFkX3dyaXRlLm8gZmlsZV90YWJsZS5vIHN1cGVyLm8gXFxcbi0tXG5mcy9NYWtlZmlsZS0yMC1cbmZzL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19CVUZGRVJfSEVBRClcdCYjNDM7PSBidWZmZXIubyBtcGFnZS5vXG5mcy9NYWtlZmlsZS0yMi1vYmotJChDT05GSUdfUFJPQ19GUylcdFx0JiM0Mzs9IHByb2NfbmFtZXNwYWNlLm9cbi0tXG5mcy9ocGZzL01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX0hQRlNfRlMpICYjNDM7PSBocGZzLm9cbmZzL2hwZnMvTWFrZWZpbGUtNy1cbmZzL2hwZnMvTWFrZWZpbGU6ODpocGZzLW9ianMgOj0gYWxsb2MubyBhbm9kZS5vIGJ1ZmZlci5vIGRlbnRyeS5vIGRpci5vIGRub2RlLm8gZWEubyBmaWxlLm8gXFxcbmZzL2hwZnMvTWFrZWZpbGUtOS1cdCAgICAgaW5vZGUubyBtYXAubyBuYW1lLm8gbmFtZWkubyBzdXBlci5vXG4tLVxuZnMvbmV0ZnMvTWFrZWZpbGU9Mz1uZXRmcy15IDo9IFxcXG4tLVxuZnMvbmV0ZnMvTWFrZWZpbGUtMTYtXHRyZWFkX3NpbmdsZS5vIFxcXG5mcy9uZXRmcy9NYWtlZmlsZToxNzpcdHJvbGxpbmdfYnVmZmVyLm8gXFxcbmZzL25ldGZzL01ha2VmaWxlLTE4LVx0d3JpdGVfY29sbGVjdC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDM5CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBDT05GSUdfQlVGRkVSX0hFQURgKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGNoZWNrIGBDT05GSUdfQlVGRkVSX0hFQURgIGluIHRoZSBLY29uZmlnLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBvcHRpb24gaW5mbHVlbmNlcyB0aGUgc3lzdGVtLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBkaXJlY3Rpb24gdGhpbmdzIGFyZSBoZWFkaW5nIHdpdGggbW9kZXJuIGZpbGVzeXN0ZW1zIGFuZCBwb3RlbnRpYWwgZm9yIHJlbW92aW5nIGl0IGVudGlyZWx5LiBJIGtub3cgdGhlcmUmIzM5O3MgYSBkZWxpY2F0ZSBiYWxhbmNlIGhlcmUgYmV0d2VlbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBhbmQgYXJjaGl0ZWN0dXJhbCBzaW1wbGlmaWNhdGlvbi4gSSYjMzk7bSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGlmIGFueSByZWNlbnQgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSB0byBpdCAtIHBlcmhhcHMgdGhlcmUmIzM5O3MgYSBtb3ZlIHRvd2FyZCBkZXByZWNhdGlvbiwgb3IgbWF5YmUgc29tZSBuZXcgZGVwZW5kZW5jaWVzIGhhdmUgZW1lcmdlZC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaXRzIGN1cnJlbnQgc3RhdGUgYW5kIGl0cyBmdXR1cmUgcm9sZS4gVGhlIGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgaXRzIGltcG9ydGFuY2UgcmVsYXRpdmUgdG8gbW9kZXJuIGZlYXR1cmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlVGRkVSX0hFQUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZz0yMj1jb25maWcgRlNfU1RBQ0tcbi0tXG5mcy9LY29uZmlnLTI0LVxuZnMvS2NvbmZpZzoyNTpjb25maWcgQlVGRkVSX0hFQURcbmZzL0tjb25maWctMjYtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzA2CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYEJVRkZFUl9IRUFEYCB2cy4gYEJMT0NLYCBTZWxlY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgbG9naWMgdGhhdCBkZWNpZGVzIHdoZXRoZXIgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgQlVGRkVSX0hFQURgIG9yIGBCTE9DS2AuIEkga25vdyB0aGVzZSBhcmUgZnVuZGFtZW50YWwgZGF0YSBzdHJ1Y3R1cmVzLCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMgdG8gZGlzayBJL08sIHNvIHVuZGVyc3RhbmRpbmcgdGhlIHNlbGVjdGlvbiBjcml0ZXJpYSBpcyBjcml0aWNhbC4gSSYjMzk7bSBhc3N1bWluZyB0aGVyZSYjMzk7cyBzb21lIGNvbmRpdGlvbmFsIGxvZ2ljIGluIGhlcmUuIElzIGl0IGJhc2VkIG9uIHRoZSBmaWxlc3lzdGVtIHR5cGU/IEFyZSB3ZSBkZWFsaW5nIHdpdGggY2FjaGVkIGRhdGEgdmVyc3VzIGRpcmVjdCBJL08/IE9yIG1heWJlIGl0IGRlcGVuZHMgb24gdGhlIGJsb2NrIHNpemUgb3Igc2VjdG9yIHNpemUgYmVpbmcgYWNjZXNzZWQ/IEl0IGNvdWxkIGV2ZW4gYmUgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgb3BlcmF0aW9uIGJlaW5nIHBlcmZvcm1lZCDigJMgcmVhZCwgd3JpdGUsIG1ldGFkYXRhIGFjY2VzcywgZXRjLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBjb250cm9sIGZsb3cgdG8gc2VlIHdoYXQgdHJpZ2dlcnMgb25lIGNob2ljZSBvdmVyIHRoZSBvdGhlci4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55IGNvbXBhcmlzb24sIGFzc2lnbm1lbnQsIG9yIGZ1bmN0aW9uIGNhbGwgdGhhdCBoaW5nZXMgb24gd2hldGhlciBgQlVGRkVSX0hFQURgIG9yIGBCTE9DS2AgaXMgdWx0aW1hdGVseSB1c2VkLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5IGludGVyYWN0LiBBcmUgdGhleSBtdXR1YWxseSBleGNsdXNpdmUsIG9yIGNhbiB0aGV5IGJlIHVzZWQgaW4gY29uanVuY3Rpb24/IEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjbGVhciBkZWxpbmVhdGlvbiBiZXR3ZWVuIHRoZSB0d28sIG9yIHBlcmhhcHMgYSBtb3JlIG51YW5jZWQgcmVsYXRpb25zaGlwLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzIGFuZCBmaW5kIHRob3NlIGNvbmRpdGlvbmFsIGJyYW5jaGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgQlVGRkVSX0hFQUQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZC9LY29uZmlnPTE1PWNvbmZpZyBCTEtfREVWX01EXG4tLVxuZHJpdmVycy9tZC9LY29uZmlnLTE3LVx0c2VsZWN0IEJMT0NLX0hPTERFUl9ERVBSRUNBVEVEIGlmIFNZU0ZTXG5kcml2ZXJzL21kL0tjb25maWc6MTg6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmRyaXZlcnMvbWQvS2NvbmZpZy0xOS1cdCMgQkxPQ0tfTEVHQUNZX0FVVE9MT0FEIHJlcXVpcmVtZW50IHNob3VsZCBiZSByZW1vdmVkXG4tLVxuZnMvYWRmcy9LY29uZmlnPTI9Y29uZmlnIEFERlNfRlNcbi0tXG5mcy9hZGZzL0tjb25maWctNC1cdGRlcGVuZHMgb24gQkxPQ0tcbmZzL2FkZnMvS2NvbmZpZzo1Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9hZGZzL0tjb25maWctNi1cdGhlbHBcbi0tXG5mcy9hZmZzL0tjb25maWc9Mj1jb25maWcgQUZGU19GU1xuLS1cbmZzL2FmZnMvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBCTE9DS1xuZnMvYWZmcy9LY29uZmlnOjU6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL2FmZnMvS2NvbmZpZy02LVx0c2VsZWN0IExFR0FDWV9ESVJFQ1RfSU9cbi0tXG5mcy9iZWZzL0tjb25maWc9Mj1jb25maWcgQkVGU19GU1xuLS1cbmZzL2JlZnMvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBCTE9DS1xuZnMvYmVmcy9LY29uZmlnOjU6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL2JlZnMvS2NvbmZpZy02LVx0c2VsZWN0IE5MU1xuLS1cbmZzL2Jmcy9LY29uZmlnPTI9Y29uZmlnIEJGU19GU1xuLS1cbmZzL2Jmcy9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEJMT0NLXG5mcy9iZnMvS2NvbmZpZzo1Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9iZnMvS2NvbmZpZy02LVx0aGVscFxuLS1cbmZzL2V4ZmF0L0tjb25maWc9Mz1jb25maWcgRVhGQVRfRlNcbmZzL2V4ZmF0L0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O2V4RkFUIGZpbGVzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuZnMvZXhmYXQvS2NvbmZpZzo1Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9leGZhdC9LY29uZmlnLTYtXHRzZWxlY3QgTkxTXG4tLVxuZnMvZXh0Mi9LY29uZmlnPTI9Y29uZmlnIEVYVDJfRlNcbmZzL2V4dDIvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U2Vjb25kIGV4dGVuZGVkIGZzIHN1cHBvcnQgKERFUFJFQ0FURUQpXCYjMzQ7XG5mcy9leHQyL0tjb25maWc6NDpcdHNlbGVjdCBCVUZGRVJfSEVBRFxuZnMvZXh0Mi9LY29uZmlnLTUtXHRzZWxlY3QgRlNfSU9NQVBcbi0tXG5mcy9leHQ0L0tjb25maWc9Mj1jb25maWcgRVhUNF9GU1xuZnMvZXh0NC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtUaGUgRXh0ZW5kZWQgNCAoZXh0NCkgZmlsZXN5c3RlbVwmIzM0O1xuZnMvZXh0NC9LY29uZmlnOjQ6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL2V4dDQvS2NvbmZpZy01LVx0c2VsZWN0IEpCRDJcbi0tXG5mcy9mMmZzL0tjb25maWc9Mj1jb25maWcgRjJGU19GU1xuLS1cbmZzL2YyZnMvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBCTE9DS1xuZnMvZjJmcy9LY29uZmlnOjU6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL2YyZnMvS2NvbmZpZy02LVx0c2VsZWN0IE5MU1xuLS1cbmZzL2ZhdC9LY29uZmlnPTI9Y29uZmlnIEZBVF9GU1xuZnMvZmF0L0tjb25maWctMy1cdHRyaXN0YXRlXG5mcy9mYXQvS2NvbmZpZzo0Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9mYXQvS2NvbmZpZy01LVx0c2VsZWN0IE5MU1xuLS1cbmZzL2dmczIvS2NvbmZpZz0yPWNvbmZpZyBHRlMyX0ZTXG5mcy9nZnMyL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dGUzIgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuZnMvZ2ZzMi9LY29uZmlnOjQ6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL2dmczIvS2NvbmZpZy01LVx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuLS1cbmZzL2hmcy9LY29uZmlnPTI9Y29uZmlnIEhGU19GU1xuLS1cbmZzL2hmcy9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEJMT0NLXG5mcy9oZnMvS2NvbmZpZzo1Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9oZnMvS2NvbmZpZy02LVx0c2VsZWN0IE5MU1xuLS1cbmZzL2hmc3BsdXMvS2NvbmZpZz0yPWNvbmZpZyBIRlNQTFVTX0ZTXG4tLVxuZnMvaGZzcGx1cy9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEJMT0NLXG5mcy9oZnNwbHVzL0tjb25maWc6NTpcdHNlbGVjdCBCVUZGRVJfSEVBRFxuZnMvaGZzcGx1cy9LY29uZmlnLTYtXHRzZWxlY3QgTkxTXG4tLVxuZnMvaHBmcy9LY29uZmlnPTI9Y29uZmlnIEhQRlNfRlNcbi0tXG5mcy9ocGZzL0tjb25maWctNC1cdGRlcGVuZHMgb24gQkxPQ0tcbmZzL2hwZnMvS2NvbmZpZzo1Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9ocGZzL0tjb25maWctNi1cdHNlbGVjdCBGU19JT01BUFxuLS1cbmZzL2lzb2ZzL0tjb25maWc9Mj1jb25maWcgSVNPOTY2MF9GU1xuZnMvaXNvZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SVNPIDk2NjAgQ0RST00gZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuZnMvaXNvZnMvS2NvbmZpZzo0Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9pc29mcy9LY29uZmlnLTUtXHRoZWxwXG4tLVxuZnMvamZzL0tjb25maWc9Mj1jb25maWcgSkZTX0ZTXG5mcy9qZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SkZTIGZpbGVzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuZnMvamZzL0tjb25maWc6NDpcdHNlbGVjdCBCVUZGRVJfSEVBRFxuZnMvamZzL0tjb25maWctNS1cdHNlbGVjdCBOTFNcbi0tXG5mcy9taW5peC9LY29uZmlnPTI9Y29uZmlnIE1JTklYX0ZTXG4tLVxuZnMvbWluaXgvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBCTE9DS1xuZnMvbWluaXgvS2NvbmZpZzo1Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9taW5peC9LY29uZmlnLTYtXHRoZWxwXG4tLVxuZnMvbmlsZnMyL0tjb25maWc9Mj1jb25maWcgTklMRlMyX0ZTXG5mcy9uaWxmczIvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TklMRlMyIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbmZzL25pbGZzMi9LY29uZmlnOjQ6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL25pbGZzMi9LY29uZmlnLTUtXHRzZWxlY3QgQ1JDMzJcbi0tXG5mcy9udGZzMy9LY29uZmlnPTI9Y29uZmlnIE5URlMzX0ZTXG4tLVxuZnMvbnRmczMvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiAhTlRGU19GUyB8fCBtXG5mcy9udGZzMy9LY29uZmlnOjU6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL250ZnMzL0tjb25maWctNi1cdHNlbGVjdCBOTFNcbi0tXG5mcy9vY2ZzMi9LY29uZmlnPTI9Y29uZmlnIE9DRlMyX0ZTXG4tLVxuZnMvb2NmczIvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBTWVNGUyBcdTAwMjZcdTAwMjYgQ09ORklHRlNfRlNcbmZzL29jZnMyL0tjb25maWc6NTpcdHNlbGVjdCBCVUZGRVJfSEVBRFxuZnMvb2NmczIvS2NvbmZpZy02LVx0c2VsZWN0IEpCRDJcbi0tXG5mcy9vbWZzL0tjb25maWc9Mj1jb25maWcgT01GU19GU1xuLS1cbmZzL29tZnMvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBCTE9DS1xuZnMvb21mcy9LY29uZmlnOjU6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL29tZnMvS2NvbmZpZy02LVx0c2VsZWN0IENSQ19JVFVfVFxuLS1cbmZzL3FueDQvS2NvbmZpZz0yPWNvbmZpZyBRTlg0RlNfRlNcbi0tXG5mcy9xbng0L0tjb25maWctNC1cdGRlcGVuZHMgb24gQkxPQ0tcbmZzL3FueDQvS2NvbmZpZzo1Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9xbng0L0tjb25maWctNi1cdGhlbHBcbi0tXG5mcy9xbng2L0tjb25maWc9Mj1jb25maWcgUU5YNkZTX0ZTXG4tLVxuZnMvcW54Ni9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEJMT0NLIFx1MDAyNlx1MDAyNiBDUkMzMlxuZnMvcW54Ni9LY29uZmlnOjU6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL3FueDYvS2NvbmZpZy02LVx0aGVscFxuLS1cbmZzL3JvbWZzL0tjb25maWc9NTc9Y29uZmlnIFJPTUZTX09OX0JMT0NLXG4tLVxuZnMvcm9tZnMvS2NvbmZpZy01OS1cdGRlZmF1bHQgeSBpZiBST01GU19CQUNLRURfQllfQkxPQ0sgfHwgUk9NRlNfQkFDS0VEX0JZX0JPVEhcbmZzL3JvbWZzL0tjb25maWc6NjA6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL3JvbWZzL0tjb25maWctNjEtXG4tLVxuZnMvdWRmL0tjb25maWc9Mj1jb25maWcgVURGX0ZTXG5mcy91ZGYvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VURGIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbmZzL3VkZi9LY29uZmlnOjQ6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL3VkZi9LY29uZmlnLTUtXHRzZWxlY3QgQ1JDX0lUVV9UXG4tLVxuZnMvdWZzL0tjb25maWc9Mj1jb25maWcgVUZTX0ZTXG4tLVxuZnMvdWZzL0tjb25maWctNC1cdGRlcGVuZHMgb24gQkxPQ0tcbmZzL3Vmcy9LY29uZmlnOjU6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL3Vmcy9LY29uZmlnLTYtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDgyCgkJCQkJCQlvdXRwdXQ6IDEyNQoJCQkJCQkJdGhvdWdodHM6IDE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGaW5hbCBUaG91Z2h0cyBvbiB0aGUgQnVmZmVyIEhlYWQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBpdCYjMzk7cyBsb29raW5nIHByZXR0eSBzb2xpZC4gVGhlIGBCVUZGRVJfSEVBRGAgY29uY2VwdCBpcyBjbGVhcmx5IHNlbGVjdGVkIGFuZCB1c2VkIGFjcm9zcyBzZXZlcmFsIGtleSBmaWxlc3lzdGVtcyDigJMgYEVYVDRfRlNgLCBgRkFUX0ZTYCwgYW5kIHRoZSBsaWtlLiBUaGlzIHRlbGxzIG1lIHRoYXQgYEJVRkZFUl9IRUFEYCAoYW5kIHRoZSByZWxhdGVkIGBCTE9DS2AgY29uZmlndXJhdGlvbikgaXMgYWJzb2x1dGVseSB0aGUgcmlnaHQgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTGV0JiMzOTtzIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGNoZWNrbGlzdCBhZ2Fpbi4gUmVhY2hhYmlsaXR5IGlzIGNvbmZpcm1lZDsgYF9fYmhfc3VibWl0YCB3aXRoaW4gYGZzL2J1ZmZlci5jYCBpcyB0aGUgY2VudHJhbCBwb2ludCBoZXJlLCBhbmQgaXQmIzM5O3MgaW52b2tlZCBkdXJpbmcgZnVuZGFtZW50YWwgZmlsZXN5c3RlbSBvcGVyYXRpb25zLiBUaGF0JiMzOTtzIGEgc29saWQgJiMzNDt5ZXMmIzM0OyBmb3IgYFdvcnRoRnV6emluZ2AuIE91ciBgRm9jdXNTeW1ib2xzYCBhcmUgYXBwcm9wcmlhdGVseSBzY29wZWQsIHRhcmdldGluZyBgX19iaF9zdWJtaXRgLCBgYmhfc3VibWl0YCwgYW5kIGBfX2Jsb2NrX3dyaXRlX2Z1bGxfZm9saW9gLiBUaGVzZSBhbGwgbG9vayBsaWtlIGNyaXRpY2FsIGVudHJ5IHBvaW50cyBmb3IgYnVmZmVyIGhlYWQgaW50ZXJhY3Rpb25zLiBGaW5hbGx5LCBgRW5hYmxlQ29uZmlnc2A6IGBCVUZGRVJfSEVBRGAsIGBCTE9DS2AuLi4gY2hlY2suCgpFdmVyeXRoaW5nIGNoZWNrcyBvdXQuIEkmIzM5O20gc2F0aXNmaWVkLiBUaW1lIHRvIGdvIGFoZWFkIGFuZCBydW4gYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JVRkZFUl9IRUFEJiMzNDssCiAgICAmIzM0O0JMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19iaF9zdWJtaXQmIzM0OywKICAgICYjMzQ7Ymhfc3VibWl0JiMzNDssCiAgICAmIzM0O19fYmxvY2tfd3JpdGVfZnVsbF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gX19iaF9zdWJtaXQoKSBieSBjaGVja2luZyBpZiBiaC1cdTAwM2ViX2ZvbGlvIGlzIG5vbi1OVUxMIGJlZm9yZSBjYWxsaW5nIGZvbGlvX3Rlc3RfZHJvcGJlaGluZCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgYnVmZmVyIGhlYWQgSS9PIHN1Ym1pc3Npb24gbG9naWMgaW4gZnMvYnVmZmVyLmMsIHdoaWNoIGlzIGRpcmVjdGx5IHJlYWNoYWJsZSBieSBzdGFuZGFyZCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JVRkZFUl9IRUFEJiMzNDssCiAgICAmIzM0O0JMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19iaF9zdWJtaXQmIzM0OywKICAgICYjMzQ7Ymhfc3VibWl0JiMzNDssCiAgICAmIzM0O19fYmxvY2tfd3JpdGVfZnVsbF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gX19iaF9zdWJtaXQoKSBieSBjaGVja2luZyBpZiBiaC1cdTAwM2ViX2ZvbGlvIGlzIG5vbi1OVUxMIGJlZm9yZSBjYWxsaW5nIGZvbGlvX3Rlc3RfZHJvcGJlaGluZCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgYnVmZmVyIGhlYWQgSS9PIHN1Ym1pc3Npb24gbG9naWMgaW4gZnMvYnVmZmVyLmMsIHdoaWNoIGlzIGRpcmVjdGx5IHJlYWNoYWJsZSBieSBzdGFuZGFyZCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDM6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgTlVMTCBjaGVjayBmb3IgYGJoLVx1MDAzZWJfZm9saW9gIGJlZm9yZSBjYWxsaW5nIGBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtXHUwMDNlYl9mb2xpbylgIGluIGBfX2JoX3N1Ym1pdCgpYCB0byBwcmV2ZW50IGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gc3VibWl0dGluZyBidWZmZXIgaGVhZHMgdGhhdCBsYWNrIGFuIGFzc29jaWF0ZWQgZm9saW8gKGUuZy4gYnVmZmVycyBiYWNrZWQgYnkgYGJoLVx1MDAzZWJfZGF0YWApLlxuXG5UaGlzIGNoYW5nZSBhZGRyZXNzZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnLCB3aGljaCBpcyBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3Rpb24gLyBwYWdlIGZhdWx0IGhhbmRsZXJzIGFuZCBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIGRvZXMgbm90IHJlYWQgb3IgYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nL2ZpZWxkcyB0byB1c2Vyc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBidWZmZXIgbGVuZ3RoIGNhbGN1bGF0aW9ucy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDlmZWM5NWVjYmFiNjk3NGVhYTQxMTBlNzAyN2JiZDJkOTFmNzU4MmEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDAzOjAyOjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvYnVmZmVyLmMgYi9mcy9idWZmZXIuYwppbmRleCA0MjdkOGE4MTdjZDU2Li5mNDZmYTY0MTMwMzJkIDEwMDY0NAotLS0gYS9mcy9idWZmZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9idWZmZXIuYwpAQCAtMTEwNiw3ICYjNDM7MTEwNiw4IEBAIHN0YXRpYyB2b2lkIF9fYmhfc3VibWl0KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcGYsCiAKIAliaW8gPSBiaW9fYWxsb2MoYmgtJmd0O2JfYmRldiwgMSwgb3BmLCBHRlBfTk9JTyk7CiAKLQlpZiAoZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLSZndDtiX2ZvbGlvKSAmYW1wOyZhbXA7IG9wX2lzX3dyaXRlKG9wZikpCiYjNDM7CWlmIChiaC0mZ3Q7Yl9mb2xpbyAmYW1wOyZhbXA7IGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC0mZ3Q7Yl9mb2xpbykgJmFtcDsmYW1wOwomIzQzOwkgICAgb3BfaXNfd3JpdGUob3BmKSkKIAkJYmlvX3NldF9mbGFnKGJpbywgQklPX0NPTVBMRVRFX0lOX1RBU0spOwogCiAJaWYgKElTX0VOQUJMRUQoQ09ORklHX0ZTX0VOQ1JZUFRJT04pKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExNAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJ1ZmZlciBIZWFkIFN1Ym1pc3Npb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZnMvYnVmZmVyLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX2JoX3N1Ym1pdGAgZnVuY3Rpb24uIExldCYjMzk7cyBzZWUuLi4gaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBiaW8gYWxsb2NhdGlvbiBhbmQgc2V0dXAuIExvb2tzIGxpa2UgdGhlIGNvcmUgY2hhbmdlIGlzIGFuIGFkZGVkIGNoZWNrIHdpdGhpbiB0aGUgY29uZGl0aW9uYWwgdGhhdCBzZXRzIHRoZSBgQklPX0NPTVBMRVRFX0lOX1RBU0tgIGZsYWcuIEkgc2VlIGl0JiMzOTtzIGFkZGVkIGEgY2hlY2sgZm9yIGBiaC0mZ3Q7Yl9mb2xpb2AgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQuCgpPcmlnaW5hbGx5LCB0aGUgY29kZSBjaGVja2VkIGlmIGBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtJmd0O2JfZm9saW8pYCB3YXMgdHJ1ZSBhbmQgdGhlIG9wZXJhdGlvbiB3YXMgYSB3cml0ZS4gTm93LCBpdCBleHBsaWNpdGx5IGNoZWNrcyBpZiBgYmgtJmd0O2JfZm9saW9gIGlzIG5vbi1OVUxMICpiZWZvcmUqIGNhbGxpbmcgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZGAuIFRoaXMgaXMgYSBjbGFzc2ljIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBwcm90ZWN0aW9uLCBJIHByZXN1bWUuIFRoZXJlIG11c3QgaGF2ZSBiZWVuIHNvbWUgc2NlbmFyaW8gd2hlcmUgYGJoLSZndDtiX2ZvbGlvYCBjb3VsZCBiZSBOVUxMLCBsZWFkaW5nIHRvIGEgY3Jhc2ggb3IgdW5kZWZpbmVkIGJlaGF2aW9yIGlmIGBmb2xpb190ZXN0X2Ryb3BiZWhpbmRgIHdhcyBjYWxsZWQgb24gaXQgZGlyZWN0bHkuIEkmIzM5O2QgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvbnRleHRzIHdoZXJlIGBfX2JoX3N1Ym1pdGAgaXMgY2FsbGVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIHJvb3QgY2F1c2UgYW5kIHRoZSBjb25kaXRpb25zIHRoYXQgbWFrZSBgYmgtJmd0O2JfZm9saW9gIHBvdGVudGlhbGx5IE5VTEwuIFBlcmhhcHMgdGhlcmUmIzM5O3MgYSBuZXcgb3IgcHJvYmxlbWF0aWMgY29kZSBwYXRoLiBJdCYjMzk7cyBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZywgYW55d2F5LiBJJiMzOTttIGFzc3VtaW5nIHRoZSBpbnRlbnQgaXMgdG8gcHJldmVudCBhIGtlcm5lbCBwYW5pYyBvciBhIHNpbWlsYXIgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvYnVmZmVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwOTU6XHRcdEJVR19PTighYnVmZmVyX2xvY2tlZChiaCkpO1xuMTA5NjpcdFx0QlVHX09OKCFidWZmZXJfbWFwcGVkKGJoKSk7XG4xMDk3Olx0XHRCVUdfT04oYnVmZmVyX2RlbGF5KGJoKSk7XG4xMDk4Olx0XHRCVUdfT04oYnVmZmVyX3Vud3JpdHRlbihiaCkpO1xuMTA5OTpcdFxuMTEwMDpcdFx0c2V0X2J1ZmZlcl9yZXEoYmgpO1xuMTEwMTpcdFxuMTEwMjpcdFx0aWYgKGJ1ZmZlcl9tZXRhKGJoKSlcbjExMDM6XHRcdFx0b3BmIHw9IFJFUV9NRVRBO1xuMTEwNDpcdFx0aWYgKGJ1ZmZlcl9wcmlvKGJoKSlcbjExMDU6XHRcdFx0b3BmIHw9IFJFUV9QUklPO1xuMTEwNjpcdFxuMTEwNzpcdFx0YmlvID0gYmlvX2FsbG9jKGJoLVx1MDAzZWJfYmRldiwgMSwgb3BmLCBHRlBfTk9JTyk7XG4xMTA4Olx0XG4xMTA5Olx0XHRpZiAoYmgtXHUwMDNlYl9mb2xpbyBcdTAwMjZcdTAwMjYgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVx1MDAzZWJfZm9saW8pIFx1MDAyNlx1MDAyNlxuMTExMDpcdFx0ICAgIG9wX2lzX3dyaXRlKG9wZikpXG4xMTExOlx0XHRcdGJpb19zZXRfZmxhZyhiaW8sIEJJT19DT01QTEVURV9JTl9UQVNLKTtcbjExMTI6XHRcbjExMTM6XHRcdGlmIChJU19FTkFCTEVEKENPTkZJR19GU19FTkNSWVBUSU9OKSlcbjExMTQ6XHRcdFx0YnVmZmVyX3NldF9jcnlwdG9fY3R4KGJpbywgYmgsIEdGUF9OT0lPKTtcbjExMTU6XHRcbjExMTY6XHRcdGJpby1cdTAwM2ViaV9pdGVyLmJpX3NlY3RvciA9IGJoLVx1MDAzZWJfYmxvY2tuciAqIChiaC1cdTAwM2ViX3NpemUgXHUwMDNlXHUwMDNlIDkpO1xuMTExNzpcdFx0YmlvLVx1MDAzZWJpX3dyaXRlX2hpbnQgPSB3cml0ZV9oaW50O1xuMTExODpcdFxuMTExOTpcdFx0aWYgKGJoLVx1MDAzZWJfZm9saW8pXG4xMTIwOlx0XHRcdGJpb19hZGRfZm9saW9fbm9mYWlsKGJpbywgYmgtXHUwMDNlYl9mb2xpbywgYmgtXHUwMDNlYl9zaXplLFxuMTEyMTpcdFx0XHRcdFx0ICAgICBiaF9vZmZzZXQoYmgpKTtcbjExMjI6XHRcdGVsc2VcbjExMjM6XHRcdFx0YmlvX2FkZF92aXJ0X25vZmFpbChiaW8sIGJoLVx1MDAzZWJfZGF0YSwgYmgtXHUwMDNlYl9zaXplKTtcbjExMjQ6XHRcbjExMjU6XHRcdGJpby1cdTAwM2ViaV9lbmRfaW8gPSBlbmRfYmlvO1xuMTEyNjpcdFx0YmlvLVx1MDAzZWJpX3ByaXZhdGUgPSBiaDtcbjExMjc6XHRcbjExMjg6XHRcdC8qIFRha2UgY2FyZSBvZiBiaCYjMzk7cyB0aGF0IHN0cmFkZGxlIHRoZSBlbmQgb2YgdGhlIGRldmljZSAqL1xuMTEyOTpcdFx0Z3VhcmRfYmlvX2VvZChiaW8pO1xuMTEzMDpcdFxuMTEzMTpcdFx0aWYgKHdiYykge1xuMTEzMjpcdFx0XHR3YmNfaW5pdF9iaW8od2JjLCBiaW8pO1xuMTEzMzpcdFx0XHRpZiAoYmgtXHUwMDNlYl9mb2xpbylcbjExMzQ6XHRcdFx0XHR3YmNfYWNjb3VudF9jZ3JvdXBfb3duZXIod2JjLCBiaC1cdTAwM2ViX2ZvbGlvLCBiaC1cdTAwM2ViX3NpemUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzk5CgkJCQkJCQlvdXRwdXQ6IDE3MwoJCQkJCQkJdGhvdWdodHM6IDM4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSB3ZSBoYXZlIGEgZml4IGZvciBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYF9fYmhfc3VibWl0YC4gTXkgYW5hbHlzaXMgc2hvd3MgdGhhdCBgYmgtJmd0O2JfZm9saW9gICpjYW4qIGJlIE5VTEwsIGFuZCB0aGUgb3JpZ2luYWwgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLSZndDtiX2ZvbGlvKWAgY2FsbCwgZGlkbiYjMzk7dCBhY2NvdW50IGZvciB0aGF0IHBvc3NpYmlsaXR5LiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnLCBsZWFkaW5nIHRvIGEgcGFuaWMvY3Jhc2ggd2hlbiBgYmgtJmd0O2JfZm9saW9gIGlzIGluZGVlZCBOVUxMLiBUaGUgcGF0Y2ggY29ycmVjdGx5IGFkZHMgYSBOVUxMIGNoZWNrIGJlZm9yZSBkZXJlZmVyZW5jaW5nLCBtYWtpbmcgdGhlIGNvZGUgc2FmZTogYGJoLSZndDtiX2ZvbGlvICZhbXA7JmFtcDsgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLSZndDtiX2ZvbGlvKWAuIEdvb2QgY2F0Y2guCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgS01TQU4gaW1wbGljYXRpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgZG9lcyB0aGlzIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/IEFuZCB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyAmIzM0O25vLiYjMzQ7IFdlJiMzOTtyZSBub3QgYWxsb2NhdGluZyBuZXcgbWVtb3J5LCB0aGVyZSBhcmUgbm8gcmVhZHMgb3Igd3JpdGVzIHRvIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhpcyBpc24mIzM5O3QgYW4gaW5mby1sZWFrIGlzc3VlIHRvIHVzZXJzcGFjZSBlaXRoZXIuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzaW1wbGUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBhIHNpdHVhdGlvbiB0aGF0IHNob3VsZCBiZSBkZXRlY3RlZCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcywgbGlrZSB0aGUgT29wcy9wYW5pYyBhbmQgS0FTQU4uIEtNU0FOIGlzbiYjMzk7dCBkZXNpZ25lZCB0byBjYXRjaCB0aG9zZSBzdGFuZGFyZCBpc3N1ZXMuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBjaGVja2xpc3QgdG8gY29uZmlybSBteSBhc3Nlc3NtZW50LgoKMS4gIE5vIGtlcm5lbCBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UgaGVyZS4KMi4gIFRoZXJlJiMzOTtzIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gYGJoLSZndDtiX2ZvbGlvYCBpcyBhbiBleGlzdGluZyBmaWVsZCBpbiBgc3RydWN0IGJ1ZmZlcl9oZWFkYCwgYW5kIGl0JiMzOTtzIGluaXRpYWxpemVkLCBlaXRoZXIgdG8gcG9pbnQgdG8gYSBmb2xpbyBvciB0byBOVUxMLgozLiAgV2UmIzM5O3JlIG5vdCBhbGxvY2F0aW5nIG9yIGluaXRpYWxpemluZyBhbnkgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgaGVyZS4KNC4gIE5vIGJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RocyBhcmUgYmVpbmcgaGFuZGxlZCBpbiBhIHdheSB0aGF0IG1pZ2h0IGV4cG9zZSB1bmluaXRpYWxpemVkIGJ5dGVzIHRvIHN1cnJvdW5kaW5nIGNvZGUuCgpTbywgYWxsIGNyaXRlcmlhIGhhdmUgYmVlbiBtZXQuIEJhc2VkIG9uIGFsbCBvZiB0aGlzLCB0aGUgYE5lZWRzS01TQU5gIGlzIGBmYWxzZWAuIFRoaXMgaXMgYSBjbGFzc2ljIGNhc2Ugd2hlcmUgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyBhbmQgS0FTQU4gc2hvdWxkIGJlIHN1ZmZpY2llbnQsIGFuZCBLTVNBTiB3b3VsZCBiZSBvdmVya2lsbC4gSXQgbG9va3MgbGlrZSBzdGFuZGFyZCBkZWZlbnNlcyBhcmUgYWRlcXVhdGUgZm9yIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBOVUxMIGNoZWNrIGZvciBgYmgtXHUwMDNlYl9mb2xpb2AgYmVmb3JlIGNhbGxpbmcgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cdTAwM2ViX2ZvbGlvKWAgaW4gYF9fYmhfc3VibWl0KClgIHRvIHByZXZlbnQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBzdWJtaXR0aW5nIGJ1ZmZlciBoZWFkcyB0aGF0IGxhY2sgYW4gYXNzb2NpYXRlZCBmb2xpbyAoZS5nLiBidWZmZXJzIGJhY2tlZCBieSBgYmgtXHUwMDNlYl9kYXRhYCkuXG5cblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcsIHdoaWNoIGlzIGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdGlvbiAvIHBhZ2UgZmF1bHQgaGFuZGxlcnMgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgZG9lcyBub3QgcmVhZCBvciBicmFuY2ggb24gdW5pbml0aWFsaXplZCBtZW1vcnksIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIHRvIHVzZXJzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGJ1ZmZlciBsZW5ndGggY2FsY3VsYXRpb25zLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIE5VTEwgY2hlY2sgZm9yIGBiaC1cdTAwM2ViX2ZvbGlvYCBiZWZvcmUgY2FsbGluZyBgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVx1MDAzZWJfZm9saW8pYCBpbiBgX19iaF9zdWJtaXQoKWAgdG8gcHJldmVudCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIHN1Ym1pdHRpbmcgYnVmZmVyIGhlYWRzIHRoYXQgbGFjayBhbiBhc3NvY2lhdGVkIGZvbGlvIChlLmcuIGJ1ZmZlcnMgYmFja2VkIGJ5IGBiaC1cdTAwM2ViX2RhdGFgKS5cblxuVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1Zywgd2hpY2ggaXMgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0aW9uIC8gcGFnZSBmYXVsdCBoYW5kbGVycyBhbmQgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCByZWFkIG9yIGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSwgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9maWVsZHMgdG8gdXNlcnNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgYnVmZmVyIGxlbmd0aCBjYWxjdWxhdGlvbnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAzOjAyOjU5LjE0MTAwNjgwNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NjM4MDE4MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJVRkZFUl9IRUFEXCIsXG4gICAgXCJCTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYmhfc3VibWl0XCIsXG4gICAgXCJiaF9zdWJtaXRcIixcbiAgICBcIl9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIE5VTEwgY2hlY2sgZm9yIGBiaC1cXHUwMDNlYl9mb2xpb2AgYmVmb3JlIGNhbGxpbmcgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cXHUwMDNlYl9mb2xpbylgIGluIGBfX2JoX3N1Ym1pdCgpYCB0byBwcmV2ZW50IGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gc3VibWl0dGluZyBidWZmZXIgaGVhZHMgdGhhdCBsYWNrIGFuIGFzc29jaWF0ZWQgZm9saW8gKGUuZy4gYnVmZmVycyBiYWNrZWQgYnkgYGJoLVxcdTAwM2ViX2RhdGFgKS5cXG5cXG5UaGlzIGNoYW5nZSBhZGRyZXNzZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnLCB3aGljaCBpcyBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3Rpb24gLyBwYWdlIGZhdWx0IGhhbmRsZXJzIGFuZCBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIGRvZXMgbm90IHJlYWQgb3IgYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nL2ZpZWxkcyB0byB1c2Vyc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBidWZmZXIgbGVuZ3RoIGNhbGN1bGF0aW9ucy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gX19iaF9zdWJtaXQoKSBieSBjaGVja2luZyBpZiBiaC1cXHUwMDNlYl9mb2xpbyBpcyBub24tTlVMTCBiZWZvcmUgY2FsbGluZyBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoKS4gVGhpcyBtb2RpZmllcyBjb3JlIGJ1ZmZlciBoZWFkIEkvTyBzdWJtaXNzaW9uIGxvZ2ljIGluIGZzL2J1ZmZlci5jLCB3aGljaCBpcyBkaXJlY3RseSByZWFjaGFibGUgYnkgc3RhbmRhcmQgZmlsZXN5c3RlbSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMjo1OS4xNDEwMTI5NDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMDY1MTExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDlmZWM5NWVjYmFiNjk3NGVhYTQxMTBlNzAyN2JiZDJkOTFmNzU4MmFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAwMzowMjo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9idWZmZXIuYyBiL2ZzL2J1ZmZlci5jXFxuaW5kZXggNDI3ZDhhODE3Y2Q1Ni4uZjQ2ZmE2NDEzMDMyZCAxMDA2NDRcXG4tLS0gYS9mcy9idWZmZXIuY1xcbisrKyBiL2ZzL2J1ZmZlci5jXFxuQEAgLTExMDYsNyArMTEwNiw4IEBAIHN0YXRpYyB2b2lkIF9fYmhfc3VibWl0KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcGYsXFxuIFxcbiBcXHRiaW8gPSBiaW9fYWxsb2MoYmgtXFx1MDAzZWJfYmRldiwgMSwgb3BmLCBHRlBfTk9JTyk7XFxuIFxcbi1cXHRpZiAoZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVxcdTAwM2ViX2ZvbGlvKSBcXHUwMDI2XFx1MDAyNiBvcF9pc193cml0ZShvcGYpKVxcbitcXHRpZiAoYmgtXFx1MDAzZWJfZm9saW8gXFx1MDAyNlxcdTAwMjYgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVxcdTAwM2ViX2ZvbGlvKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgb3BfaXNfd3JpdGUob3BmKSlcXG4gXFx0XFx0YmlvX3NldF9mbGFnKGJpbywgQklPX0NPTVBMRVRFX0lOX1RBU0spO1xcbiBcXG4gXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0ZTX0VOQ1JZUFRJT04pKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMjo1OS43NzIzNTM2MTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI4ODM1NTM1ODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJVRkZFUl9IRUFEXCIsXG4gICAgXCJCTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYmhfc3VibWl0XCIsXG4gICAgXCJiaF9zdWJtaXRcIixcbiAgICBcIl9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBfX2JoX3N1Ym1pdCgpIGJ5IGNoZWNraW5nIGlmIGJoLVxcdTAwM2ViX2ZvbGlvIGlzIG5vbi1OVUxMIGJlZm9yZSBjYWxsaW5nIGZvbGlvX3Rlc3RfZHJvcGJlaGluZCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgYnVmZmVyIGhlYWQgSS9PIHN1Ym1pc3Npb24gbG9naWMgaW4gZnMvYnVmZmVyLmMsIHdoaWNoIGlzIGRpcmVjdGx5IHJlYWNoYWJsZSBieSBzdGFuZGFyZCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWZlYzk1ZWNiYWI2OTc0ZWFhNDExMGU3MDI3YmJkMmQ5MWY3NTgyYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMDM6MDI6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9idWZmZXIuYyBiL2ZzL2J1ZmZlci5jXG5pbmRleCA0MjdkOGE4MTdjZDU2Li5mNDZmYTY0MTMwMzJkIDEwMDY0NFxuLS0tIGEvZnMvYnVmZmVyLmNcbisrKyBiL2ZzL2J1ZmZlci5jXG5AQCAtMTEwNiw3ICsxMTA2LDggQEAgc3RhdGljIHZvaWQgX19iaF9zdWJtaXQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgYmxrX29wZl90IG9wZixcbiBcbiBcdGJpbyA9IGJpb19hbGxvYyhiaC1cdTAwM2ViX2JkZXYsIDEsIG9wZiwgR0ZQX05PSU8pO1xuIFxuLVx0aWYgKGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cdTAwM2ViX2ZvbGlvKSBcdTAwMjZcdTAwMjYgb3BfaXNfd3JpdGUob3BmKSlcbitcdGlmIChiaC1cdTAwM2ViX2ZvbGlvIFx1MDAyNlx1MDAyNiBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtXHUwMDNlYl9mb2xpbykgXHUwMDI2XHUwMDI2XG4rXHQgICAgb3BfaXNfd3JpdGUob3BmKSlcbiBcdFx0YmlvX3NldF9mbGFnKGJpbywgQklPX0NPTVBMRVRFX0lOX1RBU0spO1xuIFxuIFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0ZTX0VOQ1JZUFRJT04pKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDM6MDI6NTkuNzcyMzU1NDIzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTI4NzY4NzkzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCdWZmZXIgSGVhZCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBmcy9idWZmZXIuY2AuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCBpdCBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIG9wdGltaXphdGlvbiBvciBidWcgZml4IHJlbGF0ZWQgdG8gYGJ1ZmZlcl9oZWFkYCBvcGVyYXRpb25zLiBJIHNlZSBpdCdzIG1vZGlmeWluZyB0aGUgYF9fYmhfc3VibWl0YCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGhvdyBCSU9zIGFyZSBhbGxvY2F0ZWQgYW5kIGNvbmZpZ3VyZWQuXG5cblRoZSBjcnV4IG9mIHRoZSBjaGFuZ2UgaXMgYXJvdW5kIHRoZSBgZm9saW9fdGVzdF9kcm9wYmVoaW5kYCBjaGVjay4gUHJldmlvdXNseSwgaXQgbG9va3MgbGlrZSB0aGlzIGNoZWNrIHdhcyBpbXBsaWNpdGx5IGFzc3VtaW5nIGEgdmFsaWQgZm9saW8gZXhpc3RlZCBmb3IgdGhlIGBidWZmZXJfaGVhZGAuIFRoZSBwYXRjaCBhZGRzIGFuIGV4cGxpY2l0IGBiaC1cdTAwM2ViX2ZvbGlvYCBjaGVjayBiZWZvcmUgY2FsbGluZyBgZm9saW9fdGVzdF9kcm9wYmVoaW5kYC4gVGhpcyBpcyB0aGUgaW1wb3J0YW50IHBhcnQgLSBpdCdzIGEgc2FmZXR5IG1lYXN1cmUsIGxpa2VseSB0byBwcmV2ZW50IGEgcG90ZW50aWFsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIGNvbmRpdGlvbmFsIGBvcF9pc193cml0ZShvcGYpYCBpbmRpY2F0ZXMgdGhlIG9wdGltaXphdGlvbiBpcyBzcGVjaWZpYyB0byB3cml0ZSBvcGVyYXRpb25zLiBJIHVuZGVyc3RhbmQgdGhhdCB0aGUgYEJJT19DT01QTEVURV9JTl9UQVNLYCBmbGFnIG9wdGltaXplcyB3cml0ZSBvcGVyYXRpb25zIGJ5IGNvbXBsZXRpbmcgdGhlbSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIHN1Ym1pdHRpbmcgdGFzayBpZiBgZHJvcGJlaGluZGAgaXMgZW5hYmxlZCBvbiB0aGUgYGZvbGlvYC5cblxuVGhlIGBpZiAoYmgtXHUwMDNlYl9mb2xpbylgIGNvbmRpdGlvbmFsIGlzIGEgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgcHJhY3RpY2UuIEl0IGVuc3VyZXMgdGhhdCB3ZSBhcmUgbm90IG9wZXJhdGluZyBvbiBhIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgb3IgZnJlZWQgYGJ1ZmZlcl9oZWFkYCBvciBmb2xpbywgd2hpY2ggY2FuIGxlYWQgdG8gY3Jhc2hlcy4gSSdkIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgYnVmZmVyIGhlYWQgaGFuZGxpbmcgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIG51bGwgZm9saW8gY29uZGl0aW9uIG1pZ2h0IGFyaXNlLCBidXQgdGhpcyBwYXRjaCBjbGVhcmx5IGFkZHJlc3NlcyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LiBJdCdzIGEgY2xlYW4sIHNhZmUgZml4LCBhbmQgSSBhcHByZWNpYXRlIHRoZSBjYXV0aW9uLiBJdCdzIGFsd2F5cyBiZXR0ZXIgdG8gYmUgZXhwbGljaXQgYWJvdXQgdGhlc2UgY2hlY2tzLCBlc3BlY2lhbGx5IGluIGtlcm5lbCBjb2RlLiBOb3cgSSdkIGxpa2UgdG8gY2hlY2sgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBlbHNld2hlcmUsIGluIHRoZSBgZnMvYnVmZmVyLmNgIGZpbGUgYW5kIGFsc28gaW4gb3RoZXIgcGxhY2VzIGluIHRoZSBrZXJuZWwgdXNpbmcgYSBjcm9zcy1yZWZlcmVuY2Ugc2VhcmNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTAyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDM6MDM6MDUuMDYwMDQ1MzNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvYnVmZmVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTA5NSxcbiAgXCJMaW5lQ291bnRcIjogNDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTA5NTpcXHRcXHRCVUdfT04oIWJ1ZmZlcl9sb2NrZWQoYmgpKTtcXG4xMDk2OlxcdFxcdEJVR19PTighYnVmZmVyX21hcHBlZChiaCkpO1xcbjEwOTc6XFx0XFx0QlVHX09OKGJ1ZmZlcl9kZWxheShiaCkpO1xcbjEwOTg6XFx0XFx0QlVHX09OKGJ1ZmZlcl91bndyaXR0ZW4oYmgpKTtcXG4xMDk5OlxcdFxcbjExMDA6XFx0XFx0c2V0X2J1ZmZlcl9yZXEoYmgpO1xcbjExMDE6XFx0XFxuMTEwMjpcXHRcXHRpZiAoYnVmZmVyX21ldGEoYmgpKVxcbjExMDM6XFx0XFx0XFx0b3BmIHw9IFJFUV9NRVRBO1xcbjExMDQ6XFx0XFx0aWYgKGJ1ZmZlcl9wcmlvKGJoKSlcXG4xMTA1OlxcdFxcdFxcdG9wZiB8PSBSRVFfUFJJTztcXG4xMTA2OlxcdFxcbjExMDc6XFx0XFx0YmlvID0gYmlvX2FsbG9jKGJoLVxcdTAwM2ViX2JkZXYsIDEsIG9wZiwgR0ZQX05PSU8pO1xcbjExMDg6XFx0XFxuMTEwOTpcXHRcXHRpZiAoYmgtXFx1MDAzZWJfZm9saW8gXFx1MDAyNlxcdTAwMjYgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVxcdTAwM2ViX2ZvbGlvKSBcXHUwMDI2XFx1MDAyNlxcbjExMTA6XFx0XFx0ICAgIG9wX2lzX3dyaXRlKG9wZikpXFxuMTExMTpcXHRcXHRcXHRiaW9fc2V0X2ZsYWcoYmlvLCBCSU9fQ09NUExFVEVfSU5fVEFTSyk7XFxuMTExMjpcXHRcXG4xMTEzOlxcdFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19GU19FTkNSWVBUSU9OKSlcXG4xMTE0OlxcdFxcdFxcdGJ1ZmZlcl9zZXRfY3J5cHRvX2N0eChiaW8sIGJoLCBHRlBfTk9JTyk7XFxuMTExNTpcXHRcXG4xMTE2OlxcdFxcdGJpby1cXHUwMDNlYmlfaXRlci5iaV9zZWN0b3IgPSBiaC1cXHUwMDNlYl9ibG9ja25yICogKGJoLVxcdTAwM2ViX3NpemUgXFx1MDAzZVxcdTAwM2UgOSk7XFxuMTExNzpcXHRcXHRiaW8tXFx1MDAzZWJpX3dyaXRlX2hpbnQgPSB3cml0ZV9oaW50O1xcbjExMTg6XFx0XFxuMTExOTpcXHRcXHRpZiAoYmgtXFx1MDAzZWJfZm9saW8pXFxuMTEyMDpcXHRcXHRcXHRiaW9fYWRkX2ZvbGlvX25vZmFpbChiaW8sIGJoLVxcdTAwM2ViX2ZvbGlvLCBiaC1cXHUwMDNlYl9zaXplLFxcbjExMjE6XFx0XFx0XFx0XFx0XFx0ICAgICBiaF9vZmZzZXQoYmgpKTtcXG4xMTIyOlxcdFxcdGVsc2VcXG4xMTIzOlxcdFxcdFxcdGJpb19hZGRfdmlydF9ub2ZhaWwoYmlvLCBiaC1cXHUwMDNlYl9kYXRhLCBiaC1cXHUwMDNlYl9zaXplKTtcXG4xMTI0OlxcdFxcbjExMjU6XFx0XFx0YmlvLVxcdTAwM2ViaV9lbmRfaW8gPSBlbmRfYmlvO1xcbjExMjY6XFx0XFx0YmlvLVxcdTAwM2ViaV9wcml2YXRlID0gYmg7XFxuMTEyNzpcXHRcXG4xMTI4OlxcdFxcdC8qIFRha2UgY2FyZSBvZiBiaCdzIHRoYXQgc3RyYWRkbGUgdGhlIGVuZCBvZiB0aGUgZGV2aWNlICovXFxuMTEyOTpcXHRcXHRndWFyZF9iaW9fZW9kKGJpbyk7XFxuMTEzMDpcXHRcXG4xMTMxOlxcdFxcdGlmICh3YmMpIHtcXG4xMTMyOlxcdFxcdFxcdHdiY19pbml0X2Jpbyh3YmMsIGJpbyk7XFxuMTEzMzpcXHRcXHRcXHRpZiAoYmgtXFx1MDAzZWJfZm9saW8pXFxuMTEzNDpcXHRcXHRcXHRcXHR3YmNfYWNjb3VudF9jZ3JvdXBfb3duZXIod2JjLCBiaC1cXHUwMDNlYl9mb2xpbywgYmgtXFx1MDAzZWJfc2l6ZSk7XFxuMTEzNTpcXHRcXHR9XFxuMTEzNjpcXHRcXG4xMTM3OlxcdFxcdGJsa19jcnlwdG9fc3VibWl0X2JpbyhiaW8pO1xcbjExMzg6XFx0fVxcbjExMzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAzOjAzOjA1LjA2MDI0MDk5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ2Nzk3MTEyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBfX2JoX3N1Ym1pdGAgQ2FsbGVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBfX2JoX3N1Ym1pdGAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEl0J3MgbGlrZWx5IGEgYm90dG9tLWhhbGYgaGFuZGxlciBzdWJtaXNzaW9uIGZ1bmN0aW9uLCBwcm9iYWJseSBoYW5kbGluZyBkZWZlcnJlZCB3b3JrIGluIHRoZSBrZXJuZWwuIE5vdywgbGV0J3MgdHJhY2UgdGhlIGNhbGxlcnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGVyZSogYW5kICp3aHkqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC4gV2hhdCBzY2VuYXJpb3MgdHJpZ2dlciB0aGUgbmVlZCB0byBkZWZlciBwcm9jZXNzaW5nIHZpYSBhIGJvdHRvbS1oYWxmIG1lY2hhbmlzbT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgaW50ZXJydXB0IGhhbmRsZXJzLCBzb2Z0aXJxcywgdGFza2xldHMsIHdvcmtxdWV1ZXMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHF1aWNrIGNvZGUgZGl2ZSBzaG91bGQgcmV2ZWFsIHRoZSBjYWxsIHNpdGVzLCBhbmQgZnJvbSB0aGVyZSwgSSBjYW4gaW5mZXIgdGhlIGNvbnRleHQgb2YgdGhlIHN1Ym1pc3Npb25zLlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIHBhdHRlcm5zOiBhcmUgdGhlIGNhbGxlcnMgcmVsYXRlZCB0byBuZXR3b3JrIHByb2Nlc3NpbmcsIGRpc2sgSS9PLCBkZXZpY2UgZHJpdmVycywgb3Igc29tZSBvdGhlciBzdWJzeXN0ZW0/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgb3IgbG9ja2luZyBjb25zaWRlcmF0aW9ucyBpbiB0aGUgY2FsbCBwYXRocz8gS25vd2luZyB0aGUgY2FsbGVycyBnaXZlcyBtZSB0aGUgY3J1Y2lhbCBjb250ZXh0IHRvIGFzc2VzcyB0aGUgZnVuY3Rpb24ncyBvdmVyYWxsIGltcGFjdCBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzLiBUaGlzIGludmVzdGlnYXRpb24gd2lsbCBwcm9iYWJseSBoaWdobGlnaHQgdGhlIGNyaXRpY2FsIHNlY3Rpb25zIGd1YXJkZWQgYnkgQkggbG9ja3MgYW5kIGVuYWJsZSBtZSB0byBzcG90IGFueSBjb250ZW50aW9uIG9yIHJhY2UgY29uZGl0aW9ucyBpbiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzA3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzowNy41MjgyMTUwODlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI4NjE5MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fYmhfc3VibWl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2J1ZmZlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2J1ZmZlci5jPTEwNzA9c3RhdGljIHZvaWQgYnVmZmVyX3NldF9jcnlwdG9fY3R4KHN0cnVjdCBiaW8gKmJpbywgY29uc3Qgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCxcXG4tLVxcbmZzL2J1ZmZlci5jLTEwODgtXFxuZnMvYnVmZmVyLmM6MTA4OTpzdGF0aWMgdm9pZCBfX2JoX3N1Ym1pdChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BmLFxcbmZzL2J1ZmZlci5jLTEwOTAtXFx0XFx0ZW51bSByd19oaW50IHdyaXRlX2hpbnQsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjLFxcbi0tXFxuZnMvYnVmZmVyLmM9MTE0OT12b2lkIGJoX3N1Ym1pdChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BmLCBiaW9fZW5kX2lvX3QgZW5kX2lvKVxcbmZzL2J1ZmZlci5jLTExNTAte1xcbmZzL2J1ZmZlci5jOjExNTE6XFx0X19iaF9zdWJtaXQoYmgsIG9wZiwgV1JJVEVfTElGRV9OT1RfU0VULCBOVUxMLCBlbmRfaW8pO1xcbmZzL2J1ZmZlci5jLTExNTItfVxcbi0tXFxuZnMvYnVmZmVyLmM9MTcyNj1pbnQgX19ibG9ja193cml0ZV9mdWxsX2ZvbGlvKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5mcy9idWZmZXIuYy0xODIxLVxcdFxcdGlmIChidWZmZXJfYXN5bmNfd3JpdGUoYmgpKSB7XFxuZnMvYnVmZmVyLmM6MTgyMjpcXHRcXHRcXHRfX2JoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgd3JpdGVfZmxhZ3MsXFxuZnMvYnVmZmVyLmMtMTgyMy1cXHRcXHRcXHRcXHRcXHRpbm9kZS1cXHUwMDNlaV93cml0ZV9oaW50LCB3YmMsXFxuLS1cXG5mcy9idWZmZXIuYy0xODc2LVxcdFxcdFxcdGNsZWFyX2J1ZmZlcl9kaXJ0eShiaCk7XFxuZnMvYnVmZmVyLmM6MTg3NzpcXHRcXHRcXHRfX2JoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgd3JpdGVfZmxhZ3MsXFxuZnMvYnVmZmVyLmMtMTg3OC1cXHRcXHRcXHRcXHRcXHRpbm9kZS1cXHUwMDNlaV93cml0ZV9oaW50LCB3YmMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAzOjAzOjA4LjE1Njg0MDY4NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0NDIyNzMwNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgX19iaF9zdWJtaXRgIGFuZCBgYmhfc3VibWl0YCBDb2RlIFBhdGhzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBfX2JoX3N1Ym1pdGAgaXMgdGhlIHdvcmtob3JzZSBoZXJlLCBjYWxsZWQgZGlyZWN0bHkgYnkgYGJoX3N1Ym1pdGAgYW5kLCBpbnRlcmVzdGluZ2x5LCBhbHNvIGJ5IGBfX2Jsb2NrX3dyaXRlX2Z1bGxfZm9saW9gLiBUaGF0J3MgZ29vZCB0byBrZWVwIGluIG1pbmQsIHdlJ2xsIHByb2JhYmx5IG5lZWQgdG8gbG9vayBhdCBib3RoIGNvZGUgcGF0aHMuXG5cbkknbSBub3RpY2luZyBzb21ldGhpbmcgdGhhdCBpbW1lZGlhdGVseSBzdGFuZHMgb3V0OiB0aGUgY29uZGl0aW9uYWwgaW4gdGhlIGNvZGUgc25pcHBldC4gSXQgZXhwbGljaXRseSBjaGVja3MgYGJoLVx1MDAzZWJfZm9saW9gLiBUaGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IGBiaC1cdTAwM2ViX2ZvbGlvYCAqY2FuKiBiZSBOVUxMLiBTcGVjaWZpY2FsbHk6XG5cbmBgYGNcbmlmIChiaC1cdTAwM2ViX2ZvbGlvKVxuICAgIGJpb19hZGRfZm9saW9fbm9mYWlsKGJpbywgYmgtXHUwMDNlYl9mb2xpbywgYmgtXHUwMDNlYl9zaXplLCBiaF9vZmZzZXQoYmgpKTtcbmVsc2VcbiAgICBiaW9fYWRkX3ZpcnRfbm9mYWlsKGJpbywgYmgtXHUwMDNlYl9kYXRhLCBiaC1cdTAwM2ViX3NpemUpO1xuYGBgXG5cblRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gQnVmZmVyIGhlYWRzIGFyZW4ndCAqYWx3YXlzKiBiYWNrZWQgYnkgZm9saW9zLiBTb21ldGltZXMgdGhleSdyZSB1c2luZyB2aXJ0dWFsIG1lbW9yeSwgbGlrZSB3aGVuIGRlYWxpbmcgd2l0aCBmaWxlc3lzdGVtIG1ldGFkYXRhIG9yIGpvdXJuYWwgZGF0YSAodGhpbmsgamJkMiksIHdoZXJlIGttYWxsb2Mgb3Igc2ltaWxhciBhbGxvY2F0aW9uIG1lY2hhbmlzbXMgYXJlIHVzZWQuXG5cbkFuZCBoZXJlJ3MgdGhlIHByb2JsZW06IFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBtYWtpbmcgYW4gdW5jb25kaXRpb25hbCBjYWxsIHRvIGBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtXHUwMDNlYl9mb2xpbylgLiBJZiBgYmgtXHUwMDNlYl9mb2xpb2Agd2FzIE5VTEwsIHRoYXQncyBhIGNsYXNzaWMgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLiBUaGUgZml4LCB0aGVyZWZvcmUsIGlzIGNsZWFyIGFuZCBjb25jaXNlOiBvbmx5IGNhbGwgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZGAgaWYgYGJoLVx1MDAzZWJfZm9saW9gIGlzIGFjdHVhbGx5IGEgdmFsaWQgcG9pbnRlci5cblxuU28gdGhlIGZpeCBvZiBhZGRpbmcgYGJoLVx1MDAzZWJfZm9saW8gXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cdTAwM2ViX2ZvbGlvKWAgaXMgY2xlYW4gYW5kIHNvbHZlcyB0aGUgcHJvYmxlbSBpbiBgX19iaF9zdWJtaXQoKWAuIE5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGNhbGxlcnMgb2YgYGJoX3N1Ym1pdGAgYW5kIGBfX2JoX3N1Ym1pdGAgYW5kIG1ha2Ugc3VyZSB3ZSBkb24ndCBoYXZlIHRoaXMgb3Igc2ltaWxhciBwb3RlbnRpYWwgaXNzdWVzIGVsc2V3aGVyZSBpbiB0aGUgcmVsYXRlZCBidWZmZXIgaGVhZCBzdWJtaXNzaW9uIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMzMsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDM6MDM6MTEuNTk5MTE2NzIzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzIzMDIyMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmhfc3VibWl0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdD0xNTc4PWZ1bmN0aW9uLXRyYWNlLCB3ZSBnZXQgYSBtdWNoIGxhcmdlciBvdXRwdXQ6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0LTE2MzAtICAgPVxcdTAwM2Ugc3VibWl0X2Jpb1xcbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdDoxNjMxOiAgID1cXHUwMDNlIGJoX3N1Ym1pdFxcbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdC0xNjMyLSAgID1cXHUwMDNlIF9fZXh0M19nZXRfaW5vZGVfbG9jXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3Q9MTg3MT10cmFjZXJzLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0LTE5MTUtICAgPVxcdTAwM2Ugc3VibWl0X2Jpb1xcbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdDoxOTE2OiAgID1cXHUwMDNlIGJoX3N1Ym1pdFxcbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdC0xOTE3LSAgID1cXHUwMDNlIGV4dDNfYnJlYWRcXG4tLVxcbmRyaXZlcnMvbWQvbWQtYml0bWFwLmM9NTE3PXN0YXRpYyB2b2lkIHdyaXRlX2ZpbGVfcGFnZShzdHJ1Y3QgYml0bWFwICpiaXRtYXAsIHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgd2FpdClcXG4tLVxcbmRyaXZlcnMvbWQvbWQtYml0bWFwLmMtNTI0LVxcdFxcdHNldF9idWZmZXJfbWFwcGVkKGJoKTtcXG5kcml2ZXJzL21kL21kLWJpdG1hcC5jOjUyNTpcXHRcXHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSB8IFJFUV9TWU5DLCBlbmRfYml0bWFwX3dyaXRlKTtcXG5kcml2ZXJzL21kL21kLWJpdG1hcC5jLTUyNi1cXHRcXHRiaCA9IGJoLVxcdTAwM2ViX3RoaXNfcGFnZTtcXG4tLVxcbmRyaXZlcnMvbWQvbWQtYml0bWFwLmM9NTU4PXN0YXRpYyBpbnQgcmVhZF9maWxlX3BhZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgsXFxuLS1cXG5kcml2ZXJzL21kL21kLWJpdG1hcC5jLTYwMC1cXHRcXHRcXHRzZXRfYnVmZmVyX21hcHBlZChiaCk7XFxuZHJpdmVycy9tZC9tZC1iaXRtYXAuYzo2MDE6XFx0XFx0XFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCwgZW5kX2JpdG1hcF93cml0ZSk7XFxuZHJpdmVycy9tZC9tZC1iaXRtYXAuYy02MDItXFx0XFx0fVxcbi0tXFxuZnMvYnVmZmVyLmM9MTIzPXN0YXRpYyB2b2lkIGJ1ZmZlcl9pb19lcnJvcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBjaGFyICptc2cpXFxuLS1cXG5mcy9idWZmZXIuYy0xMzYtICogQ2FsbCB0aGlzIGluIHlvdXIgYmlvX2VuZF9pbyBoYW5kbGVyIHRvIHJldHJpZXZlIHRoZSBidWZmZXJfaGVhZFxcbmZzL2J1ZmZlci5jOjEzNzogKiBzdWJtaXR0ZWQgaW4gYmhfc3VibWl0KCkuICBJZiB5b3UgZGlkIG5vdCBjYWxsIGJoX3N1Ym1pdCgpLCBkbyBub3RcXG5mcy9idWZmZXIuYy0xMzgtICogY2FsbCB0aGlzIGZ1bmN0aW9uOyBpdCB3aWxsIHJldHVybiBnYXJiYWdlLlxcbi0tXFxuZnMvYnVmZmVyLmM9MTU3PUVYUE9SVF9TWU1CT0woYmlvX2VuZGlvX2JoKTtcXG4tLVxcbmZzL2J1ZmZlci5jLTE2My0gKlxcbmZzL2J1ZmZlci5jOjE2NDogKiBJZiBhIGJ1ZmZlciBpcyByZWFkIHRocm91Z2ggYSBtZWNoYW5pc20gdGhhdCBpc24ndCBiaF9zdWJtaXQoKSwgeW91XFxuZnMvYnVmZmVyLmMtMTY1LSAqIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gZmluaXNoIHRoZSByZWFkLlxcbi0tXFxuZnMvYnVmZmVyLmM9MTc3PUVYUE9SVF9TWU1CT0woZW5kX2J1ZmZlcl9yZWFkX3N5bmMpO1xcbi0tXFxuZnMvYnVmZmVyLmMtMTgyLSAqXFxuZnMvYnVmZmVyLmM6MTgzOiAqIFBhc3MgdGhpcyBmdW5jdGlvbiB0byBiaF9zdWJtaXQoKSBpZiB5b3UncmUgcmVhZGluZyBpbnRvIHRoZSBidWZmZXIsXFxuZnMvYnVmZmVyLmMtMTg0LSAqIHVubGVzcyB5b3UgbmVlZCB5b3VyIG93biBzcGVjaWFsIEkvTyBlbmQgaGFuZGxlci5cXG4tLVxcbmZzL2J1ZmZlci5jPTE5Mj1FWFBPUlRfU1lNQk9MKGJoX2VuZF9yZWFkKTtcXG4tLVxcbmZzL2J1ZmZlci5jLTE5Ny0gKlxcbmZzL2J1ZmZlci5jOjE5ODogKiBQYXNzIHRoaXMgZnVuY3Rpb24gdG8gYmhfc3VibWl0KCkgaWYgeW91J3JlIHdyaXRpbmcgZnJvbSB0aGUgYnVmZmVyLFxcbmZzL2J1ZmZlci5jLTE5OS0gKiB1bmxlc3MgeW91IG5lZWQgeW91ciBvd24gc3BlY2lhbCBJL08gZW5kIGhhbmRsZXIuXFxuLS1cXG5mcy9idWZmZXIuYz0zNjI9c3RhdGljIHZvaWQgYmhfZW5kX2FzeW5jX3JlYWQoc3RydWN0IGJpbyAqYmlvKVxcbi0tXFxuZnMvYnVmZmVyLmMtMzkyLSAqXFxuZnMvYnVmZmVyLmM6MzkzOiAqIFBhc3MgdGhpcyBmdW5jdGlvbiB0byBiaF9zdWJtaXQoKSBpZiB5b3UncmUgZG9pbmcgdGhlIGVxdWl2YWxlbnQgb2ZcXG5mcy9idWZmZXIuYy0zOTQtICogYmxvY2tfd3JpdGVfZnVsbF9mb2xpbygpLiAgVGhhdCBpcywgdGhlIGZvbGlvIGlzIHVubG9ja2VkLCBhbmQgd2lsbFxcbi0tXFxuZnMvYnVmZmVyLmM9MTA3MD1zdGF0aWMgdm9pZCBidWZmZXJfc2V0X2NyeXB0b19jdHgoc3RydWN0IGJpbyAqYmlvLCBjb25zdCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLFxcbi0tXFxuZnMvYnVmZmVyLmMtMTA4OC1cXG5mcy9idWZmZXIuYzoxMDg5OnN0YXRpYyB2b2lkIF9fYmhfc3VibWl0KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcGYsXFxuZnMvYnVmZmVyLmMtMTA5MC1cXHRcXHRlbnVtIHJ3X2hpbnQgd3JpdGVfaGludCwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMsXFxuLS1cXG5mcy9idWZmZXIuYy0xMTQwLS8qKlxcbmZzL2J1ZmZlci5jOjExNDE6ICogYmhfc3VibWl0IC0gU3RhcnQgSS9PIGFnYWluc3QgYSBidWZmZXIgaGVhZFxcbmZzL2J1ZmZlci5jLTExNDItICogQGJoOiBUaGUgYnVmZmVyIGhlYWQgdG8gcGVyZm9ybSBJL08gb24uXFxuLS1cXG5mcy9idWZmZXIuYy0xMTQ4LSAqL1xcbmZzL2J1ZmZlci5jOjExNDk6dm9pZCBiaF9zdWJtaXQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgYmxrX29wZl90IG9wZiwgYmlvX2VuZF9pb190IGVuZF9pbylcXG5mcy9idWZmZXIuYy0xMTUwLXtcXG5mcy9idWZmZXIuYzoxMTUxOlxcdF9fYmhfc3VibWl0KGJoLCBvcGYsIFdSSVRFX0xJRkVfTk9UX1NFVCwgTlVMTCwgZW5kX2lvKTtcXG5mcy9idWZmZXIuYy0xMTUyLX1cXG5mcy9idWZmZXIuYzoxMTUzOkVYUE9SVF9TWU1CT0woYmhfc3VibWl0KTtcXG5mcy9idWZmZXIuYy0xMTU0LVxcbmZzL2J1ZmZlci5jPTExNTU9c3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqX19icmVhZF9zbG93KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpXFxuLS1cXG5mcy9idWZmZXIuYy0xMTYxLVxcdH0gZWxzZSB7XFxuZnMvYnVmZmVyLmM6MTE2MjpcXHRcXHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9SRUFELCBiaF9lbmRfcmVhZCk7XFxuZnMvYnVmZmVyLmMtMTE2My1cXHRcXHR3YWl0X29uX2J1ZmZlcihiaCk7XFxuLS1cXG5mcy9idWZmZXIuYz0xNjgyPXN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmZvbGlvX2NyZWF0ZV9idWZmZXJzKHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5mcy9idWZmZXIuYy0xNzE4LSAqIGhhcyBhIGxvY2tlZCBidWZmZXIuICAgVGhpcyBvbmx5IGNhbiBoYXBwZW4gaWYgc29tZW9uZSBoYXMgd3JpdHRlblxcbmZzL2J1ZmZlci5jOjE3MTk6ICogdGhlIGJ1ZmZlciBkaXJlY3RseSwgd2l0aCBiaF9zdWJtaXQoKS4gIEF0IHRoZSBhZGRyZXNzX3NwYWNlIGxldmVsXFxuZnMvYnVmZmVyLmMtMTcyMC0gKiB0aGUgZm9saW8gd3JpdGViYWNrIGZsYWcgcHJldmVudHMgdGhpcyBjb250ZW50aW9uIGZyb20gb2NjdXJyaW5nLlxcbi0tXFxuZnMvYnVmZmVyLmM9MTcyNj1pbnQgX19ibG9ja193cml0ZV9mdWxsX2ZvbGlvKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5mcy9idWZmZXIuYy0xODIxLVxcdFxcdGlmIChidWZmZXJfYXN5bmNfd3JpdGUoYmgpKSB7XFxuZnMvYnVmZmVyLmM6MTgyMjpcXHRcXHRcXHRfX2JoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgd3JpdGVfZmxhZ3MsXFxuZnMvYnVmZmVyLmMtMTgyMy1cXHRcXHRcXHRcXHRcXHRpbm9kZS1cXHUwMDNlaV93cml0ZV9oaW50LCB3YmMsXFxuLS1cXG5mcy9idWZmZXIuYy0xODM2LVxcdFxcdCAqIGNsZWFuLiAgU29tZW9uZSB3cm90ZSB0aGVtIGJhY2sgYnkgaGFuZCB3aXRoXFxuZnMvYnVmZmVyLmM6MTgzNzpcXHRcXHQgKiB3cml0ZV9kaXJ0eV9idWZmZXIvYmhfc3VibWl0LiAgQSByYXJlIGNhc2UuXFxuZnMvYnVmZmVyLmMtMTgzOC1cXHRcXHQgKi9cXG4tLVxcbmZzL2J1ZmZlci5jLTE4NzYtXFx0XFx0XFx0Y2xlYXJfYnVmZmVyX2RpcnR5KGJoKTtcXG5mcy9idWZmZXIuYzoxODc3OlxcdFxcdFxcdF9fYmhfc3VibWl0KGJoLCBSRVFfT1BfV1JJVEUgfCB3cml0ZV9mbGFncyxcXG5mcy9idWZmZXIuYy0xODc4LVxcdFxcdFxcdFxcdFxcdGlub2RlLVxcdTAwM2VpX3dyaXRlX2hpbnQsIHdiYyxcXG4tLVxcbmZzL2J1ZmZlci5jPTIyODI9aW50IGJsb2NrX3JlYWRfZnVsbF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBnZXRfYmxvY2tfdCAqZ2V0X2Jsb2NrKVxcbi0tXFxuZnMvYnVmZmVyLmMtMjM2My1cXHRcXHRpZiAocHJldilcXG5mcy9idWZmZXIuYzoyMzY0OlxcdFxcdFxcdGJoX3N1Ym1pdChwcmV2LCBSRVFfT1BfUkVBRCwgYmhfZW5kX2FzeW5jX3JlYWQpO1xcbmZzL2J1ZmZlci5jLTIzNjUtXFx0XFx0cHJldiA9IGJoO1xcbi0tXFxuZnMvYnVmZmVyLmMtMjM3Ny1cXHRpZiAocHJldilcXG5mcy9idWZmZXIuYzoyMzc4OlxcdFxcdGJoX3N1Ym1pdChwcmV2LCBSRVFfT1BfUkVBRCwgYmhfZW5kX2FzeW5jX3JlYWQpO1xcbmZzL2J1ZmZlci5jLTIzNzktXFx0ZWxzZVxcbi0tXFxuZnMvYnVmZmVyLmM9MjY4Nj12b2lkIHdyaXRlX2RpcnR5X2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BfZmxhZ3MpXFxuLS1cXG5mcy9idWZmZXIuYy0yNjkyLVxcdH1cXG5mcy9idWZmZXIuYzoyNjkzOlxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgb3BfZmxhZ3MsIGJoX2VuZF93cml0ZSk7XFxuZnMvYnVmZmVyLmMtMjY5NC19XFxuLS1cXG5mcy9idWZmZXIuYz0yNzAyPWludCBfX3N5bmNfZGlydHlfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcF9mbGFncylcXG4tLVxcbmZzL2J1ZmZlci5jLTI3MTUtXFxuZnMvYnVmZmVyLmM6MjcxNjpcXHRcXHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSB8IG9wX2ZsYWdzLCBiaF9lbmRfd3JpdGUpO1xcbmZzL2J1ZmZlci5jLTI3MTctXFx0XFx0d2FpdF9vbl9idWZmZXIoYmgpO1xcbi0tXFxuZnMvYnVmZmVyLmM9Mjk0Mj1pbnQgX19iaF9yZWFkKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcF9mbGFncywgYm9vbCB3YWl0KVxcbi0tXFxuZnMvYnVmZmVyLmMtMjk0Ny1cXG5mcy9idWZmZXIuYzoyOTQ4OlxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1JFQUQgfCBvcF9mbGFncywgYmhfZW5kX3JlYWQpO1xcbmZzL2J1ZmZlci5jLTI5NDktXFx0aWYgKHdhaXQpIHtcXG4tLVxcbmZzL2J1ZmZlci5jPTI5Njg9dm9pZCBfX2JoX3JlYWRfYmF0Y2goaW50IG5yLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoc1tdLFxcbi0tXFxuZnMvYnVmZmVyLmMtMjk4OS1cXG5mcy9idWZmZXIuYzoyOTkwOlxcdFxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1JFQUQgfCBvcF9mbGFncywgYmhfZW5kX3JlYWQpO1xcbmZzL2J1ZmZlci5jLTI5OTEtXFx0fVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTY2ND1zdGF0aWMgdm9pZCBleHQ0X2ZjX3N1Ym1pdF9iaChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBib29sIGlzX3RhaWwpXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtNjc0LVxcdHNldF9idWZmZXJfdXB0b2RhdGUoYmgpO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYzo2NzU6XFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfV1JJVEUgfCB3cml0ZV9mbGFncywgYmhfZW5kX3dyaXRlKTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtNjc2LVxcdEVYVDRfU0Ioc2IpLVxcdTAwM2VzX2ZjX2JoID0gTlVMTDtcXG4tLVxcbmZzL2V4dDQvbW1wLmM9NDI9c3RhdGljIGludCB3cml0ZV9tbXBfYmxvY2tfdGhhd2VkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuLS1cXG5mcy9leHQ0L21tcC5jLTQ4LVxcdGxvY2tfYnVmZmVyKGJoKTtcXG5mcy9leHQ0L21tcC5jOjQ5OlxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgUkVRX1NZTkMgfCBSRVFfTUVUQSB8IFJFUV9QUklPLFxcbmZzL2V4dDQvbW1wLmMtNTAtXFx0XFx0XFx0YmhfZW5kX3dyaXRlKTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0xNjM9c3RhdGljIGlubGluZSB2b2lkIF9fZXh0NF9yZWFkX2JoKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcF9mbGFncyxcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0xODAtXFx0XFx0ZW5kX2lvID0gYmhfZW5kX3JlYWQ7XFxuZnMvZXh0NC9zdXBlci5jOjE4MTpcXHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9SRUFEIHwgb3BfZmxhZ3MsIGVuZF9pbyk7XFxuZnMvZXh0NC9zdXBlci5jLTE4Mi19XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NjMyNT1zdGF0aWMgaW50IGV4dDRfY29tbWl0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNjM1Ni1cXHRjbGVhcl9idWZmZXJfZGlydHkoc2JoKTtcXG5mcy9leHQ0L3N1cGVyLmM6NjM1NzpcXHRiaF9zdWJtaXQoc2JoLCBSRVFfT1BfV1JJVEUgfCBSRVFfU1lOQyB8XFxuZnMvZXh0NC9zdXBlci5jLTYzNTgtXFx0XFx0ICAodGVzdF9vcHQoc2IsIEJBUlJJRVIpID8gUkVRX0ZVQSA6IDApLCBiaF9lbmRfd3JpdGUpO1xcbi0tXFxuZnMvZ2ZzMi9ibWFwLmM9Mjk3PXN0YXRpYyB2b2lkIGdmczJfbWV0YXBhdGhfcmEoc3RydWN0IGdmczJfZ2xvY2sgKmdsLCBfX2JlNjQgKnN0YXJ0LCBfX2JlNjQgKmVuZClcXG4tLVxcbmZzL2dmczIvYm1hcC5jLTMwOS1cXHRcXHRcXHRpZiAoIWJ1ZmZlcl91cHRvZGF0ZShyYWJoKSkge1xcbmZzL2dmczIvYm1hcC5jOjMxMDpcXHRcXHRcXHRcXHRiaF9zdWJtaXQocmFiaCxcXG5mcy9nZnMyL2JtYXAuYy0zMTEtXFx0XFx0XFx0XFx0XFx0UkVRX09QX1JFQUQgfCBSRVFfUkFIRUFEIHwgUkVRX01FVEEgfFxcbi0tXFxuZnMvZ2ZzMi9kaXIuYz0xNDkyPXN0YXRpYyB2b2lkIGdmczJfZGlyX3JlYWRhaGVhZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBoc2l6ZSwgdTMyIGluZGV4LFxcbi0tXFxuZnMvZ2ZzMi9kaXIuYy0xNTIwLVxcdFxcdFxcdH0gZWxzZSB7XFxuZnMvZ2ZzMi9kaXIuYzoxNTIxOlxcdFxcdFxcdFxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1JFQUQgfCBSRVFfUkFIRUFEIHxcXG5mcy9nZnMyL2Rpci5jLTE1MjItXFx0XFx0XFx0XFx0XFx0XFx0UkVRX01FVEEgfCBSRVFfUFJJTyxcXG4tLVxcbmZzL2dmczIvbWV0YV9pby5jPTMzPXN0YXRpYyB2b2lkIGdmczJfYXNwYWNlX3dyaXRlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5mcy9nZnMyL21ldGFfaW8uYy03Ny1cXHRcXHRpZiAoYnVmZmVyX2FzeW5jX3dyaXRlKGJoKSkge1xcbmZzL2dmczIvbWV0YV9pby5jOjc4OlxcdFxcdFxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgd3JpdGVfZmxhZ3MsXFxuZnMvZ2ZzMi9tZXRhX2lvLmMtNzktXFx0XFx0XFx0XFx0XFx0YmhfZW5kX2FzeW5jX3dyaXRlKTtcXG4tLVxcbmZzL2dmczIvbWV0YV9pby5jPTIwMj1zdGF0aWMgdm9pZCBnZnMyX21ldGFfcmVhZF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pXFxuLS1cXG5mcy9nZnMyL21ldGFfaW8uYy0yMjQtICogU3VibWl0IHNldmVyYWwgY29uc2VjdXRpdmUgYnVmZmVyIGhlYWQgSS9PIHJlcXVlc3RzIGFzIGEgc2luZ2xlIGJpbyBJL09cXG5mcy9nZnMyL21ldGFfaW8uYzoyMjU6ICogcmVxdWVzdC4gIChTZWUgYmhfc3VibWl0LilcXG5mcy9nZnMyL21ldGFfaW8uYy0yMjYtICovXFxuLS1cXG5mcy9qYmQyL2NvbW1pdC5jPTExND1zdGF0aWMgaW50IGpvdXJuYWxfc3VibWl0X2NvbW1pdF9yZWNvcmQoam91cm5hbF90ICpqb3VybmFsLFxcbi0tXFxuZnMvamJkMi9jb21taXQuYy0xNTQtXFxuZnMvamJkMi9jb21taXQuYzoxNTU6XFx0Ymhfc3VibWl0KGJoLCB3cml0ZV9mbGFncywgam91cm5hbF9lbmRfYnVmZmVyX2lvX3N5bmMpO1xcbmZzL2piZDIvY29tbWl0LmMtMTU2LVxcdCpjYmggPSBiaDtcXG4tLVxcbmZzL2piZDIvY29tbWl0LmM9Mzc2PXZvaWQgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbihqb3VybmFsX3QgKmpvdXJuYWwpXFxuLS1cXG5mcy9qYmQyL2NvbW1pdC5jLTc1MC1cXHRcXHRcXHRcXHRzZXRfYnVmZmVyX3VwdG9kYXRlKGJoKTtcXG5mcy9qYmQyL2NvbW1pdC5jOjc1MTpcXHRcXHRcXHRcXHRiaF9zdWJtaXQoYmgsXFxuZnMvamJkMi9jb21taXQuYy03NTItXFx0XFx0XFx0XFx0XFx0UkVRX09QX1dSSVRFIHwgSkJEMl9KT1VSTkFMX1JFUV9GTEFHUyxcXG4tLVxcbmZzL2piZDIvam91cm5hbC5jPTE3ODg9c3RhdGljIGludCBqYmQyX3dyaXRlX3N1cGVyYmxvY2soam91cm5hbF90ICpqb3VybmFsLCBibGtfb3BmX3Qgd3JpdGVfZmxhZ3MpXFxuLS1cXG5mcy9qYmQyL2pvdXJuYWwuYy0xODI2LVxcdFxcdHNiLVxcdTAwM2VzX2NoZWNrc3VtID0gamJkMl9zdXBlcmJsb2NrX2NzdW0oc2IpO1xcbmZzL2piZDIvam91cm5hbC5jOjE4Mjc6XFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfV1JJVEUgfCB3cml0ZV9mbGFncywgYmhfZW5kX3dyaXRlKTtcXG5mcy9qYmQyL2pvdXJuYWwuYy0xODI4LVxcdHdhaXRfb25fYnVmZmVyKGJoKTtcXG4tLVxcbmZzL25pbGZzMi9idG5vZGUuYz04Nz1pbnQgbmlsZnNfYnRub2RlX3N1Ym1pdF9ibG9jayhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqYnRuYywgX191NjQgYmxvY2tucixcXG4tLVxcbmZzL25pbGZzMi9idG5vZGUuYy0xMzYtXFx0YmgtXFx1MDAzZWJfYmxvY2tuciA9IHBibG9ja25yOyAvKiBzZXQgYmxvY2sgYWRkcmVzcyBmb3IgcmVhZCAqL1xcbmZzL25pbGZzMi9idG5vZGUuYzoxMzc6XFx0Ymhfc3VibWl0KGJoLCBvcGYsIGJoX2VuZF9yZWFkKTtcXG5mcy9uaWxmczIvYnRub2RlLmMtMTM4LVxcdGJoLVxcdTAwM2ViX2Jsb2NrbnIgPSBibG9ja25yOyAvKiBzZXQgYmFjayB0byB0aGUgZ2l2ZW4gYmxvY2sgYWRkcmVzcyAqL1xcbi0tXFxuZnMvbmlsZnMyL2djaW5vZGUuYz01NT1pbnQgbmlsZnNfZ2NjYWNoZV9zdWJtaXRfcmVhZF9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHNlY3Rvcl90IGJsa29mZixcXG4tLVxcbmZzL25pbGZzMi9nY2lub2RlLmMtODUtXFx0YmgtXFx1MDAzZWJfYmxvY2tuciA9IHBibjtcXG5mcy9uaWxmczIvZ2Npbm9kZS5jOjg2OlxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1JFQUQsIGJoX2VuZF9yZWFkKTtcXG5mcy9uaWxmczIvZ2Npbm9kZS5jLTg3LVxcdGlmICh2Ym4pXFxuLS1cXG5mcy9uaWxmczIvbWR0LmM9MTE2PW5pbGZzX21kdF9zdWJtaXRfYmxvY2soc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBibGtvZmYsIGJsa19vcGZfdCBvcGYsXFxuLS1cXG5mcy9uaWxmczIvbWR0LmMtMTUwLVxcbmZzL25pbGZzMi9tZHQuYzoxNTE6XFx0Ymhfc3VibWl0KGJoLCBvcGYsIGJoX2VuZF9yZWFkKTtcXG5mcy9uaWxmczIvbWR0LmMtMTUyLVxcdHJldCA9IDA7XFxuLS1cXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jPTM4PWludCBvY2ZzMl93cml0ZV9ibG9jayhzdHJ1Y3Qgb2NmczJfc3VwZXIgKm9zYiwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCxcXG4tLVxcbmZzL29jZnMyL2J1ZmZlcl9oZWFkX2lvLmMtNjQtXFxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYzo2NTpcXHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSwgYmhfZW5kX3dyaXRlKTtcXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jLTY2LVxcbi0tXFxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYz04OT1pbnQgb2NmczJfcmVhZF9ibG9ja3Nfc3luYyhzdHJ1Y3Qgb2NmczJfc3VwZXIgKm9zYiwgdTY0IGJsb2NrLFxcbi0tXFxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYy0xNDctXFxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYzoxNDg6XFx0XFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCwgYmhfZW5kX3JlYWQpO1xcbmZzL29jZnMyL2J1ZmZlcl9oZWFkX2lvLmMtMTQ5LVxcdH1cXG4tLVxcbmZzL29jZnMyL2J1ZmZlcl9oZWFkX2lvLmM9MTkxPWludCBvY2ZzMl9yZWFkX2Jsb2NrcyhzdHJ1Y3Qgb2NmczJfY2FjaGluZ19pbmZvICpjaSwgdTY0IGJsb2NrLCBpbnQgbnIsXFxuLS1cXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jLTMyNS1cXHRcXHRcXHRcXHRzZXRfYnVmZmVyX25lZWRzX3ZhbGlkYXRlKGJoKTtcXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jOjMyNjpcXHRcXHRcXHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9SRUFELCBiaF9lbmRfcmVhZCk7XFxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYy0zMjctXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jPTQyNT1pbnQgb2NmczJfd3JpdGVfc3VwZXJfb3JfYmFja3VwKHN0cnVjdCBvY2ZzMl9zdXBlciAqb3NiLFxcbi0tXFxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYy00NDYtXFx0b2NmczJfY29tcHV0ZV9tZXRhX2VjYyhvc2ItXFx1MDAzZXNiLCBiaC1cXHUwMDNlYl9kYXRhLCBcXHUwMDI2ZGktXFx1MDAzZWlfY2hlY2spO1xcbmZzL29jZnMyL2J1ZmZlcl9oZWFkX2lvLmM6NDQ3OlxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFLCBiaF9lbmRfd3JpdGUpO1xcbmZzL29jZnMyL2J1ZmZlcl9oZWFkX2lvLmMtNDQ4LVxcbi0tXFxuaW5jbHVkZS9saW51eC9idWZmZXJfaGVhZC5oPTQ4PXN0cnVjdCBhZGRyZXNzX3NwYWNlO1xcbi0tXFxuaW5jbHVkZS9saW51eC9idWZmZXJfaGVhZC5oLTU2LSAqIGEgZm9saW8gKHZpYSBhIGZvbGlvX21hcHBpbmcpIGFuZCBmb3Igd3JhcHBpbmcgYmlvIHN1Ym1pc3Npb25cXG5pbmNsdWRlL2xpbnV4L2J1ZmZlcl9oZWFkLmg6NTc6ICogZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29ucyAoZS5nLiBiaF9zdWJtaXQpLlxcbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaC01OC0gKi9cXG4tLVxcbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaD0yMzA9Ym9vbCBiaW9fZW5kaW9fYmgoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipiaHApO1xcbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaC0yMzEtXFxuaW5jbHVkZS9saW51eC9idWZmZXJfaGVhZC5oOjIzMjovKiBDb21wbGV0aW9uIHJvdXRpbmVzIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRvIGJoX3N1Ym1pdCgpICovXFxuaW5jbHVkZS9saW51eC9idWZmZXJfaGVhZC5oLTIzMy12b2lkIGJoX2VuZF9yZWFkKHN0cnVjdCBiaW8gKmJpbyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2J1ZmZlcl9oZWFkLmg9MjY1PXZvaWQgd3JpdGVfZGlydHlfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcF9mbGFncyk7XFxuaW5jbHVkZS9saW51eC9idWZmZXJfaGVhZC5oOjI2Njp2b2lkIGJoX3N1Ym1pdChzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgYmxrX29wZl90LCBiaW9fZW5kX2lvX3QpO1xcbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaC0yNjctdm9pZCB3cml0ZV9ib3VuZGFyeV9ibG9jayhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxcbi0tXFxubW0vdm1zY2FuLmM9MTA3OD1zdGF0aWMgdW5zaWduZWQgaW50IHNocmlua19mb2xpb19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZvbGlvX2xpc3QsXFxuLS1cXG5tbS92bXNjYW4uYy0xNDcxLVxcdFxcdCAqIFRoaXMgaGFwcGVucyBpZiB0aGUgYnVmZmVycyB3ZXJlIHdyaXR0ZW4gb3V0IGRpcmVjdGx5LFxcbm1tL3Ztc2Nhbi5jOjE0NzI6XFx0XFx0ICogd2l0aCBiaF9zdWJtaXQoKS4gZXh0MyB3aWxsIGRvIHRoaXMsIGFzIHdlbGwgYXNcXG5tbS92bXNjYW4uYy0xNDczLVxcdFxcdCAqIHRoZSBibG9ja2RldiBtYXBwaW5nLiAgZmlsZW1hcF9yZWxlYXNlX2ZvbGlvKCkgd2lsbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzoxMy44NzE0MjMzNjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NTQyNDc4MjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IEV2YWx1YXRpb246IGZzL2J1ZmZlci5jOl9fYmhfc3VibWl0KCkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBwb2ludHMgdG93YXJkcyBgZnMvYnVmZmVyLmNgIGFuZCBzcGVjaWZpY2FsbHkgYF9fYmhfc3VibWl0KClgIGFzIGEgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0LiBUaGUgZmFjdCB0aGF0IGl0J3MgdG91Y2hlZCBkdXJpbmcgYnVmZmVyIHN1Ym1pc3Npb25zIHRocm91Z2ggYF9fYmhfc3VibWl0KClgIGluIHZhcmlvdXMgYnVmZmVyLWhlYWQtYmFzZWQgZmlsZXN5c3RlbXMgKGV4dDQsIGdmczIsIG5pbGZzMiwgb2NmczIsIGFuZCBvdGhlcnMsIGFsb25nIHdpdGggZ2VuZXJpYyBibG9jayBidWZmZXIgb3BlcmF0aW9ucyBsaWtlIGBfX2JyZWFkYCwgYF9fc3luY19kaXJ0eV9idWZmZXJgLCBldGMuKSBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBpbnRlcmVzdGluZy4gSXQncyBjb3JlIFZGUy9ibG9jayBidWZmZXIgbGF5ZXIgY29kZSwgc28gdGhhdCdzIGEgZGVmaW5pdGUgXCJ5ZXNcIiBvbiB0aGUgXCJpcyBpdCB3b3J0aCBmdXp6aW5nP1wiIHF1ZXN0aW9uLiBUaGlzIGlzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGtlcm5lbCBjb2RlLCBhbmQgd2UgYWxsIGtub3cgaG93IG11Y2ggdGhhdCBjYW4gYml0ZSB5b3UuXG5cbk5vdywgbGV0J3MgbG9vayBhdCBmb2N1cyBzeW1ib2xzLiBgX19iaF9zdWJtaXRgIGlzIHN0YXRpYyB3aXRoaW4gYGZzL2J1ZmZlci5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0J3MgY2FsbGVkIGFuZCBpZiB0aGUgY29tcGlsZXIgaW5saW5lcyBpdC4gSXQncyBjYWxsZWQgZnJvbSBgYmhfc3VibWl0YCB3aGljaCBpcyBleHBvcnRlZCwgYW5kIGFsc28gZnJvbSBgX19ibG9ja193cml0ZV9mdWxsX2ZvbGlvYC4gVGhhdCBtYWtlcyBgYmhfc3VibWl0YCBhbmQgYF9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb2AgZ29vZCBmb2N1cyBzeW1ib2xzIHRvby4gV2UnbGwgaW5jbHVkZSBgX19iaF9zdWJtaXRgLCBgYmhfc3VibWl0YCwgYF9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb2AsIGB3cml0ZV9kaXJ0eV9idWZmZXJgLCBgX19zeW5jX2RpcnR5X2J1ZmZlcmAsIGFuZCBgX19iaF9yZWFkYCBzaW5jZSB0aGV5IGFsbCBzZWVtIHJlbGV2YW50LiBCdXQgd2FpdCwgSSBuZWVkIHRvIHByaW9yaXRpemUsIHdoYXQncyBtb3N0IHNwZWNpZmljIGFuZCB1bmlxdWU/IGBiaF9zdWJtaXRgIGlzIGEgZGlyZWN0IGVudHJ5IHBvaW50LCBidXQgYF9fYmhfc3VibWl0YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCdzIGRpcmVjdGx5IG1vZGlmaWVkLCBhbmQgYF9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb2AgaXMgYW5vdGhlciBkaXJlY3QgY2FsbGVyLlxuXG5MYXN0bHksIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcz8gYGZzL2J1ZmZlci5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfQkxPQ0tgIGlzIGVuYWJsZWQsIGFuZCBidWZmZXJfaGVhZCBzdXBwb3J0IGlzIGVzc2VudGlhbCBmb3IgYmxvY2sgbGF5ZXJzIGFuZCBibG9jay1iYXNlZCBmaWxlc3lzdGVtcywgc28gdGhhdOKAmXMgZXNzZW50aWFsbHkgYSBnaXZlbi4gSSdsbCBkb3VibGUtY2hlY2sgYGZzL01ha2VmaWxlYCB0byBjb25maXJtLCBidXQgSSdtIHByZXR0eSBjb25maWRlbnQgd2UncmUgZ29vZCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4MzIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDM6MDM6MTguNDEzOTA1NzEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzc1MzgzMTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnVmZmVyXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9NYWtlZmlsZT0xMD1vYmoteSA6PVxcdG9wZW4ubyByZWFkX3dyaXRlLm8gZmlsZV90YWJsZS5vIHN1cGVyLm8gXFxcXFxcbi0tXFxuZnMvTWFrZWZpbGUtMjAtXFxuZnMvTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX0JVRkZFUl9IRUFEKVxcdCs9IGJ1ZmZlci5vIG1wYWdlLm9cXG5mcy9NYWtlZmlsZS0yMi1vYmotJChDT05GSUdfUFJPQ19GUylcXHRcXHQrPSBwcm9jX25hbWVzcGFjZS5vXFxuLS1cXG5mcy9ocGZzL01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX0hQRlNfRlMpICs9IGhwZnMub1xcbmZzL2hwZnMvTWFrZWZpbGUtNy1cXG5mcy9ocGZzL01ha2VmaWxlOjg6aHBmcy1vYmpzIDo9IGFsbG9jLm8gYW5vZGUubyBidWZmZXIubyBkZW50cnkubyBkaXIubyBkbm9kZS5vIGVhLm8gZmlsZS5vIFxcXFxcXG5mcy9ocGZzL01ha2VmaWxlLTktXFx0ICAgICBpbm9kZS5vIG1hcC5vIG5hbWUubyBuYW1laS5vIHN1cGVyLm9cXG4tLVxcbmZzL25ldGZzL01ha2VmaWxlPTM9bmV0ZnMteSA6PSBcXFxcXFxuLS1cXG5mcy9uZXRmcy9NYWtlZmlsZS0xNi1cXHRyZWFkX3NpbmdsZS5vIFxcXFxcXG5mcy9uZXRmcy9NYWtlZmlsZToxNzpcXHRyb2xsaW5nX2J1ZmZlci5vIFxcXFxcXG5mcy9uZXRmcy9NYWtlZmlsZS0xOC1cXHR3cml0ZV9jb2xsZWN0Lm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzoxOC41NTE0NDg4NjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU0NzA4NDc0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBDT05GSUdfQlVGRkVSX0hFQURgKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgYENPTkZJR19CVUZGRVJfSEVBRGAgaW4gdGhlIEtjb25maWcuIEknbSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGluZmx1ZW5jZXMgdGhlIHN5c3RlbSwgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgZGlyZWN0aW9uIHRoaW5ncyBhcmUgaGVhZGluZyB3aXRoIG1vZGVybiBmaWxlc3lzdGVtcyBhbmQgcG90ZW50aWFsIGZvciByZW1vdmluZyBpdCBlbnRpcmVseS4gSSBrbm93IHRoZXJlJ3MgYSBkZWxpY2F0ZSBiYWxhbmNlIGhlcmUgYmV0d2VlbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBhbmQgYXJjaGl0ZWN0dXJhbCBzaW1wbGlmaWNhdGlvbi4gSSdtIGVzcGVjaWFsbHkga2VlbiB0byBzZWUgaWYgYW55IHJlY2VudCBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHRvIGl0IC0gcGVyaGFwcyB0aGVyZSdzIGEgbW92ZSB0b3dhcmQgZGVwcmVjYXRpb24sIG9yIG1heWJlIHNvbWUgbmV3IGRlcGVuZGVuY2llcyBoYXZlIGVtZXJnZWQuIEkgd2FudCB0byB1bmRlcnN0YW5kIGl0cyBjdXJyZW50IHN0YXRlIGFuZCBpdHMgZnV0dXJlIHJvbGUuIFRoZSBnb2FsIGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGl0cyBpbXBvcnRhbmNlIHJlbGF0aXZlIHRvIG1vZGVybiBmZWF0dXJlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwMzksIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzoyMS4wOTg1MzYzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTI0MDM0MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJVRkZFUl9IRUFEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9LY29uZmlnPTIyPWNvbmZpZyBGU19TVEFDS1xcbi0tXFxuZnMvS2NvbmZpZy0yNC1cXG5mcy9LY29uZmlnOjI1OmNvbmZpZyBCVUZGRVJfSEVBRFxcbmZzL0tjb25maWctMjYtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzoyMS4yNTA5NDY0MzdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE1ODUxMjIyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYEJVRkZFUl9IRUFEYCB2cy4gYEJMT0NLYCBTZWxlY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgY29kZSBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGxvZ2ljIHRoYXQgZGVjaWRlcyB3aGV0aGVyIHdlJ3JlIGRlYWxpbmcgd2l0aCBgQlVGRkVSX0hFQURgIG9yIGBCTE9DS2AuIEkga25vdyB0aGVzZSBhcmUgZnVuZGFtZW50YWwgZGF0YSBzdHJ1Y3R1cmVzLCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMgdG8gZGlzayBJL08sIHNvIHVuZGVyc3RhbmRpbmcgdGhlIHNlbGVjdGlvbiBjcml0ZXJpYSBpcyBjcml0aWNhbC4gSSdtIGFzc3VtaW5nIHRoZXJlJ3Mgc29tZSBjb25kaXRpb25hbCBsb2dpYyBpbiBoZXJlLiBJcyBpdCBiYXNlZCBvbiB0aGUgZmlsZXN5c3RlbSB0eXBlPyBBcmUgd2UgZGVhbGluZyB3aXRoIGNhY2hlZCBkYXRhIHZlcnN1cyBkaXJlY3QgSS9PPyBPciBtYXliZSBpdCBkZXBlbmRzIG9uIHRoZSBibG9jayBzaXplIG9yIHNlY3RvciBzaXplIGJlaW5nIGFjY2Vzc2VkPyBJdCBjb3VsZCBldmVuIGJlIHJlbGF0ZWQgdG8gdGhlIHNwZWNpZmljIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWQg4oCTIHJlYWQsIHdyaXRlLCBtZXRhZGF0YSBhY2Nlc3MsIGV0Yy4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgY29udHJvbCBmbG93IHRvIHNlZSB3aGF0IHRyaWdnZXJzIG9uZSBjaG9pY2Ugb3ZlciB0aGUgb3RoZXIuIEknbSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55IGNvbXBhcmlzb24sIGFzc2lnbm1lbnQsIG9yIGZ1bmN0aW9uIGNhbGwgdGhhdCBoaW5nZXMgb24gd2hldGhlciBgQlVGRkVSX0hFQURgIG9yIGBCTE9DS2AgaXMgdWx0aW1hdGVseSB1c2VkLiBMZXQncyBzZWUgaG93IHRoZXkgaW50ZXJhY3QuIEFyZSB0aGV5IG11dHVhbGx5IGV4Y2x1c2l2ZSwgb3IgY2FuIHRoZXkgYmUgdXNlZCBpbiBjb25qdW5jdGlvbj8gSSdtIGV4cGVjdGluZyB0byBmaW5kIGEgY2xlYXIgZGVsaW5lYXRpb24gYmV0d2VlbiB0aGUgdHdvLCBvciBwZXJoYXBzIGEgbW9yZSBudWFuY2VkIHJlbGF0aW9uc2hpcC4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzIGFuZCBmaW5kIHRob3NlIGNvbmRpdGlvbmFsIGJyYW5jaGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjMwNiwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAzOjAzOjIzLjQwOTQ2MjY2N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4ODk1MDQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgQlVGRkVSX0hFQURcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZC9LY29uZmlnPTE1PWNvbmZpZyBCTEtfREVWX01EXFxuLS1cXG5kcml2ZXJzL21kL0tjb25maWctMTctXFx0c2VsZWN0IEJMT0NLX0hPTERFUl9ERVBSRUNBVEVEIGlmIFNZU0ZTXFxuZHJpdmVycy9tZC9LY29uZmlnOjE4OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmRyaXZlcnMvbWQvS2NvbmZpZy0xOS1cXHQjIEJMT0NLX0xFR0FDWV9BVVRPTE9BRCByZXF1aXJlbWVudCBzaG91bGQgYmUgcmVtb3ZlZFxcbi0tXFxuZnMvYWRmcy9LY29uZmlnPTI9Y29uZmlnIEFERlNfRlNcXG4tLVxcbmZzL2FkZnMvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gQkxPQ0tcXG5mcy9hZGZzL0tjb25maWc6NTpcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9hZGZzL0tjb25maWctNi1cXHRoZWxwXFxuLS1cXG5mcy9hZmZzL0tjb25maWc9Mj1jb25maWcgQUZGU19GU1xcbi0tXFxuZnMvYWZmcy9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmZzL2FmZnMvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL2FmZnMvS2NvbmZpZy02LVxcdHNlbGVjdCBMRUdBQ1lfRElSRUNUX0lPXFxuLS1cXG5mcy9iZWZzL0tjb25maWc9Mj1jb25maWcgQkVGU19GU1xcbi0tXFxuZnMvYmVmcy9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmZzL2JlZnMvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL2JlZnMvS2NvbmZpZy02LVxcdHNlbGVjdCBOTFNcXG4tLVxcbmZzL2Jmcy9LY29uZmlnPTI9Y29uZmlnIEJGU19GU1xcbi0tXFxuZnMvYmZzL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEJMT0NLXFxuZnMvYmZzL0tjb25maWc6NTpcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9iZnMvS2NvbmZpZy02LVxcdGhlbHBcXG4tLVxcbmZzL2V4ZmF0L0tjb25maWc9Mz1jb25maWcgRVhGQVRfRlNcXG5mcy9leGZhdC9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcImV4RkFUIGZpbGVzeXN0ZW0gc3VwcG9ydFxcXCJcXG5mcy9leGZhdC9LY29uZmlnOjU6XFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuZnMvZXhmYXQvS2NvbmZpZy02LVxcdHNlbGVjdCBOTFNcXG4tLVxcbmZzL2V4dDIvS2NvbmZpZz0yPWNvbmZpZyBFWFQyX0ZTXFxuZnMvZXh0Mi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNlY29uZCBleHRlbmRlZCBmcyBzdXBwb3J0IChERVBSRUNBVEVEKVxcXCJcXG5mcy9leHQyL0tjb25maWc6NDpcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9leHQyL0tjb25maWctNS1cXHRzZWxlY3QgRlNfSU9NQVBcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZz0yPWNvbmZpZyBFWFQ0X0ZTXFxuZnMvZXh0NC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlRoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXFxcIlxcbmZzL2V4dDQvS2NvbmZpZzo0OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL2V4dDQvS2NvbmZpZy01LVxcdHNlbGVjdCBKQkQyXFxuLS1cXG5mcy9mMmZzL0tjb25maWc9Mj1jb25maWcgRjJGU19GU1xcbi0tXFxuZnMvZjJmcy9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmZzL2YyZnMvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL2YyZnMvS2NvbmZpZy02LVxcdHNlbGVjdCBOTFNcXG4tLVxcbmZzL2ZhdC9LY29uZmlnPTI9Y29uZmlnIEZBVF9GU1xcbmZzL2ZhdC9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG5mcy9mYXQvS2NvbmZpZzo0OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL2ZhdC9LY29uZmlnLTUtXFx0c2VsZWN0IE5MU1xcbi0tXFxuZnMvZ2ZzMi9LY29uZmlnPTI9Y29uZmlnIEdGUzJfRlNcXG5mcy9nZnMyL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiR0ZTMiBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbmZzL2dmczIvS2NvbmZpZzo0OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL2dmczIvS2NvbmZpZy01LVxcdHNlbGVjdCBGU19QT1NJWF9BQ0xcXG4tLVxcbmZzL2hmcy9LY29uZmlnPTI9Y29uZmlnIEhGU19GU1xcbi0tXFxuZnMvaGZzL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEJMT0NLXFxuZnMvaGZzL0tjb25maWc6NTpcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9oZnMvS2NvbmZpZy02LVxcdHNlbGVjdCBOTFNcXG4tLVxcbmZzL2hmc3BsdXMvS2NvbmZpZz0yPWNvbmZpZyBIRlNQTFVTX0ZTXFxuLS1cXG5mcy9oZnNwbHVzL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEJMT0NLXFxuZnMvaGZzcGx1cy9LY29uZmlnOjU6XFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuZnMvaGZzcGx1cy9LY29uZmlnLTYtXFx0c2VsZWN0IE5MU1xcbi0tXFxuZnMvaHBmcy9LY29uZmlnPTI9Y29uZmlnIEhQRlNfRlNcXG4tLVxcbmZzL2hwZnMvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gQkxPQ0tcXG5mcy9ocGZzL0tjb25maWc6NTpcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9ocGZzL0tjb25maWctNi1cXHRzZWxlY3QgRlNfSU9NQVBcXG4tLVxcbmZzL2lzb2ZzL0tjb25maWc9Mj1jb25maWcgSVNPOTY2MF9GU1xcbmZzL2lzb2ZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSVNPIDk2NjAgQ0RST00gZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG5mcy9pc29mcy9LY29uZmlnOjQ6XFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuZnMvaXNvZnMvS2NvbmZpZy01LVxcdGhlbHBcXG4tLVxcbmZzL2pmcy9LY29uZmlnPTI9Y29uZmlnIEpGU19GU1xcbmZzL2pmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkpGUyBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuZnMvamZzL0tjb25maWc6NDpcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9qZnMvS2NvbmZpZy01LVxcdHNlbGVjdCBOTFNcXG4tLVxcbmZzL21pbml4L0tjb25maWc9Mj1jb25maWcgTUlOSVhfRlNcXG4tLVxcbmZzL21pbml4L0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEJMT0NLXFxuZnMvbWluaXgvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL21pbml4L0tjb25maWctNi1cXHRoZWxwXFxuLS1cXG5mcy9uaWxmczIvS2NvbmZpZz0yPWNvbmZpZyBOSUxGUzJfRlNcXG5mcy9uaWxmczIvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOSUxGUzIgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG5mcy9uaWxmczIvS2NvbmZpZzo0OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL25pbGZzMi9LY29uZmlnLTUtXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5mcy9udGZzMy9LY29uZmlnPTI9Y29uZmlnIE5URlMzX0ZTXFxuLS1cXG5mcy9udGZzMy9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiAhTlRGU19GUyB8fCBtXFxuZnMvbnRmczMvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL250ZnMzL0tjb25maWctNi1cXHRzZWxlY3QgTkxTXFxuLS1cXG5mcy9vY2ZzMi9LY29uZmlnPTI9Y29uZmlnIE9DRlMyX0ZTXFxuLS1cXG5mcy9vY2ZzMi9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IFNZU0ZTIFxcdTAwMjZcXHUwMDI2IENPTkZJR0ZTX0ZTXFxuZnMvb2NmczIvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL29jZnMyL0tjb25maWctNi1cXHRzZWxlY3QgSkJEMlxcbi0tXFxuZnMvb21mcy9LY29uZmlnPTI9Y29uZmlnIE9NRlNfRlNcXG4tLVxcbmZzL29tZnMvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gQkxPQ0tcXG5mcy9vbWZzL0tjb25maWc6NTpcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9vbWZzL0tjb25maWctNi1cXHRzZWxlY3QgQ1JDX0lUVV9UXFxuLS1cXG5mcy9xbng0L0tjb25maWc9Mj1jb25maWcgUU5YNEZTX0ZTXFxuLS1cXG5mcy9xbng0L0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEJMT0NLXFxuZnMvcW54NC9LY29uZmlnOjU6XFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuZnMvcW54NC9LY29uZmlnLTYtXFx0aGVscFxcbi0tXFxuZnMvcW54Ni9LY29uZmlnPTI9Y29uZmlnIFFOWDZGU19GU1xcbi0tXFxuZnMvcW54Ni9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBCTE9DSyBcXHUwMDI2XFx1MDAyNiBDUkMzMlxcbmZzL3FueDYvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL3FueDYvS2NvbmZpZy02LVxcdGhlbHBcXG4tLVxcbmZzL3JvbWZzL0tjb25maWc9NTc9Y29uZmlnIFJPTUZTX09OX0JMT0NLXFxuLS1cXG5mcy9yb21mcy9LY29uZmlnLTU5LVxcdGRlZmF1bHQgeSBpZiBST01GU19CQUNLRURfQllfQkxPQ0sgfHwgUk9NRlNfQkFDS0VEX0JZX0JPVEhcXG5mcy9yb21mcy9LY29uZmlnOjYwOlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL3JvbWZzL0tjb25maWctNjEtXFxuLS1cXG5mcy91ZGYvS2NvbmZpZz0yPWNvbmZpZyBVREZfRlNcXG5mcy91ZGYvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJVREYgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG5mcy91ZGYvS2NvbmZpZzo0OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL3VkZi9LY29uZmlnLTUtXFx0c2VsZWN0IENSQ19JVFVfVFxcbi0tXFxuZnMvdWZzL0tjb25maWc9Mj1jb25maWcgVUZTX0ZTXFxuLS1cXG5mcy91ZnMvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gQkxPQ0tcXG5mcy91ZnMvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL3Vmcy9LY29uZmlnLTYtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzoyNS41OTg0MjEyNTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg4NzY0MjUzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGaW5hbCBUaG91Z2h0cyBvbiB0aGUgQnVmZmVyIEhlYWQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIGl0J3MgbG9va2luZyBwcmV0dHkgc29saWQuIFRoZSBgQlVGRkVSX0hFQURgIGNvbmNlcHQgaXMgY2xlYXJseSBzZWxlY3RlZCBhbmQgdXNlZCBhY3Jvc3Mgc2V2ZXJhbCBrZXkgZmlsZXN5c3RlbXMg4oCTIGBFWFQ0X0ZTYCwgYEZBVF9GU2AsIGFuZCB0aGUgbGlrZS4gVGhpcyB0ZWxscyBtZSB0aGF0IGBCVUZGRVJfSEVBRGAgKGFuZCB0aGUgcmVsYXRlZCBgQkxPQ0tgIGNvbmZpZ3VyYXRpb24pIGlzIGFic29sdXRlbHkgdGhlIHJpZ2h0IHRhcmdldCBmb3IgZnV6emluZy5cblxuTGV0J3MgcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgY2hlY2tsaXN0IGFnYWluLiBSZWFjaGFiaWxpdHkgaXMgY29uZmlybWVkOyBgX19iaF9zdWJtaXRgIHdpdGhpbiBgZnMvYnVmZmVyLmNgIGlzIHRoZSBjZW50cmFsIHBvaW50IGhlcmUsIGFuZCBpdCdzIGludm9rZWQgZHVyaW5nIGZ1bmRhbWVudGFsIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy4gVGhhdCdzIGEgc29saWQgXCJ5ZXNcIiBmb3IgYFdvcnRoRnV6emluZ2AuIE91ciBgRm9jdXNTeW1ib2xzYCBhcmUgYXBwcm9wcmlhdGVseSBzY29wZWQsIHRhcmdldGluZyBgX19iaF9zdWJtaXRgLCBgYmhfc3VibWl0YCwgYW5kIGBfX2Jsb2NrX3dyaXRlX2Z1bGxfZm9saW9gLiBUaGVzZSBhbGwgbG9vayBsaWtlIGNyaXRpY2FsIGVudHJ5IHBvaW50cyBmb3IgYnVmZmVyIGhlYWQgaW50ZXJhY3Rpb25zLiBGaW5hbGx5LCBgRW5hYmxlQ29uZmlnc2A6IGBCVUZGRVJfSEVBRGAsIGBCTE9DS2AuLi4gY2hlY2suXG5cbkV2ZXJ5dGhpbmcgY2hlY2tzIG91dC4gSSdtIHNhdGlzZmllZC4gVGltZSB0byBnbyBhaGVhZCBhbmQgcnVuIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDgyLCJPdXRwdXRUb2tlbnMiOjEyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzoyOC40ODYwNjYzODFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjE4MTg4MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJVRkZFUl9IRUFEXCIsXG4gICAgXCJCTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYmhfc3VibWl0XCIsXG4gICAgXCJiaF9zdWJtaXRcIixcbiAgICBcIl9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBfX2JoX3N1Ym1pdCgpIGJ5IGNoZWNraW5nIGlmIGJoLVxcdTAwM2ViX2ZvbGlvIGlzIG5vbi1OVUxMIGJlZm9yZSBjYWxsaW5nIGZvbGlvX3Rlc3RfZHJvcGJlaGluZCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgYnVmZmVyIGhlYWQgSS9PIHN1Ym1pc3Npb24gbG9naWMgaW4gZnMvYnVmZmVyLmMsIHdoaWNoIGlzIGRpcmVjdGx5IHJlYWNoYWJsZSBieSBzdGFuZGFyZCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlVGRkVSX0hFQURcIixcbiAgICBcIkJMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19iaF9zdWJtaXRcIixcbiAgICBcImJoX3N1Ym1pdFwiLFxuICAgIFwiX19ibG9ja193cml0ZV9mdWxsX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIF9fYmhfc3VibWl0KCkgYnkgY2hlY2tpbmcgaWYgYmgtXFx1MDAzZWJfZm9saW8gaXMgbm9uLU5VTEwgYmVmb3JlIGNhbGxpbmcgZm9saW9fdGVzdF9kcm9wYmVoaW5kKCkuIFRoaXMgbW9kaWZpZXMgY29yZSBidWZmZXIgaGVhZCBJL08gc3VibWlzc2lvbiBsb2dpYyBpbiBmcy9idWZmZXIuYywgd2hpY2ggaXMgZGlyZWN0bHkgcmVhY2hhYmxlIGJ5IHN0YW5kYXJkIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDM6MDM6MjguNjA3ODk1MDg4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE3MTExNjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAzOjAzOjI4LjYwODY4OTE1OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEwMTcwMzE2MDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgTlVMTCBjaGVjayBmb3IgYGJoLVxcdTAwM2ViX2ZvbGlvYCBiZWZvcmUgY2FsbGluZyBgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVxcdTAwM2ViX2ZvbGlvKWAgaW4gYF9fYmhfc3VibWl0KClgIHRvIHByZXZlbnQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBzdWJtaXR0aW5nIGJ1ZmZlciBoZWFkcyB0aGF0IGxhY2sgYW4gYXNzb2NpYXRlZCBmb2xpbyAoZS5nLiBidWZmZXJzIGJhY2tlZCBieSBgYmgtXFx1MDAzZWJfZGF0YWApLlxcblxcblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcsIHdoaWNoIGlzIGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdGlvbiAvIHBhZ2UgZmF1bHQgaGFuZGxlcnMgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgZG9lcyBub3QgcmVhZCBvciBicmFuY2ggb24gdW5pbml0aWFsaXplZCBtZW1vcnksIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIHRvIHVzZXJzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGJ1ZmZlciBsZW5ndGggY2FsY3VsYXRpb25zLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDlmZWM5NWVjYmFiNjk3NGVhYTQxMTBlNzAyN2JiZDJkOTFmNzU4MmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDAzOjAyOjU4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYnVmZmVyLmMgYi9mcy9idWZmZXIuY1xuaW5kZXggNDI3ZDhhODE3Y2Q1Ni4uZjQ2ZmE2NDEzMDMyZCAxMDA2NDRcbi0tLSBhL2ZzL2J1ZmZlci5jXG4rKysgYi9mcy9idWZmZXIuY1xuQEAgLTExMDYsNyArMTEwNiw4IEBAIHN0YXRpYyB2b2lkIF9fYmhfc3VibWl0KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcGYsXG4gXG4gXHRiaW8gPSBiaW9fYWxsb2MoYmgtXHUwMDNlYl9iZGV2LCAxLCBvcGYsIEdGUF9OT0lPKTtcbiBcbi1cdGlmIChmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtXHUwMDNlYl9mb2xpbykgXHUwMDI2XHUwMDI2IG9wX2lzX3dyaXRlKG9wZikpXG4rXHRpZiAoYmgtXHUwMDNlYl9mb2xpbyBcdTAwMjZcdTAwMjYgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVx1MDAzZWJfZm9saW8pIFx1MDAyNlx1MDAyNlxuK1x0ICAgIG9wX2lzX3dyaXRlKG9wZikpXG4gXHRcdGJpb19zZXRfZmxhZyhiaW8sIEJJT19DT01QTEVURV9JTl9UQVNLKTtcbiBcbiBcdGlmIChJU19FTkFCTEVEKENPTkZJR19GU19FTkNSWVBUSU9OKSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAzOjAzOjI4LjYwODY5MDg1OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTMwMjk1ODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQnVmZmVyIEhlYWQgU3VibWlzc2lvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGZzL2J1ZmZlci5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgX19iaF9zdWJtaXRgIGZ1bmN0aW9uLiBMZXQncyBzZWUuLi4gaXQncyBtb2RpZnlpbmcgdGhlIGJpbyBhbGxvY2F0aW9uIGFuZCBzZXR1cC4gTG9va3MgbGlrZSB0aGUgY29yZSBjaGFuZ2UgaXMgYW4gYWRkZWQgY2hlY2sgd2l0aGluIHRoZSBjb25kaXRpb25hbCB0aGF0IHNldHMgdGhlIGBCSU9fQ09NUExFVEVfSU5fVEFTS2AgZmxhZy4gSSBzZWUgaXQncyBhZGRlZCBhIGNoZWNrIGZvciBgYmgtXHUwMDNlYl9mb2xpb2AgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQuXG5cbk9yaWdpbmFsbHksIHRoZSBjb2RlIGNoZWNrZWQgaWYgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cdTAwM2ViX2ZvbGlvKWAgd2FzIHRydWUgYW5kIHRoZSBvcGVyYXRpb24gd2FzIGEgd3JpdGUuIE5vdywgaXQgZXhwbGljaXRseSBjaGVja3MgaWYgYGJoLVx1MDAzZWJfZm9saW9gIGlzIG5vbi1OVUxMICpiZWZvcmUqIGNhbGxpbmcgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZGAuIFRoaXMgaXMgYSBjbGFzc2ljIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBwcm90ZWN0aW9uLCBJIHByZXN1bWUuIFRoZXJlIG11c3QgaGF2ZSBiZWVuIHNvbWUgc2NlbmFyaW8gd2hlcmUgYGJoLVx1MDAzZWJfZm9saW9gIGNvdWxkIGJlIE5VTEwsIGxlYWRpbmcgdG8gYSBjcmFzaCBvciB1bmRlZmluZWQgYmVoYXZpb3IgaWYgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZGAgd2FzIGNhbGxlZCBvbiBpdCBkaXJlY3RseS4gSSdkIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb250ZXh0cyB3aGVyZSBgX19iaF9zdWJtaXRgIGlzIGNhbGxlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyByb290IGNhdXNlIGFuZCB0aGUgY29uZGl0aW9ucyB0aGF0IG1ha2UgYGJoLVx1MDAzZWJfZm9saW9gIHBvdGVudGlhbGx5IE5VTEwuIFBlcmhhcHMgdGhlcmUncyBhIG5ldyBvciBwcm9ibGVtYXRpYyBjb2RlIHBhdGguIEl0J3MgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGFueXdheS4gSSdtIGFzc3VtaW5nIHRoZSBpbnRlbnQgaXMgdG8gcHJldmVudCBhIGtlcm5lbCBwYW5pYyBvciBhIHNpbWlsYXIgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzozNC41Mzg5OTAyMTVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg5OTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2J1ZmZlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwOTUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwOTU6XFx0XFx0QlVHX09OKCFidWZmZXJfbG9ja2VkKGJoKSk7XFxuMTA5NjpcXHRcXHRCVUdfT04oIWJ1ZmZlcl9tYXBwZWQoYmgpKTtcXG4xMDk3OlxcdFxcdEJVR19PTihidWZmZXJfZGVsYXkoYmgpKTtcXG4xMDk4OlxcdFxcdEJVR19PTihidWZmZXJfdW53cml0dGVuKGJoKSk7XFxuMTA5OTpcXHRcXG4xMTAwOlxcdFxcdHNldF9idWZmZXJfcmVxKGJoKTtcXG4xMTAxOlxcdFxcbjExMDI6XFx0XFx0aWYgKGJ1ZmZlcl9tZXRhKGJoKSlcXG4xMTAzOlxcdFxcdFxcdG9wZiB8PSBSRVFfTUVUQTtcXG4xMTA0OlxcdFxcdGlmIChidWZmZXJfcHJpbyhiaCkpXFxuMTEwNTpcXHRcXHRcXHRvcGYgfD0gUkVRX1BSSU87XFxuMTEwNjpcXHRcXG4xMTA3OlxcdFxcdGJpbyA9IGJpb19hbGxvYyhiaC1cXHUwMDNlYl9iZGV2LCAxLCBvcGYsIEdGUF9OT0lPKTtcXG4xMTA4OlxcdFxcbjExMDk6XFx0XFx0aWYgKGJoLVxcdTAwM2ViX2ZvbGlvIFxcdTAwMjZcXHUwMDI2IGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cXHUwMDNlYl9mb2xpbykgXFx1MDAyNlxcdTAwMjZcXG4xMTEwOlxcdFxcdCAgICBvcF9pc193cml0ZShvcGYpKVxcbjExMTE6XFx0XFx0XFx0YmlvX3NldF9mbGFnKGJpbywgQklPX0NPTVBMRVRFX0lOX1RBU0spO1xcbjExMTI6XFx0XFxuMTExMzpcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRlNfRU5DUllQVElPTikpXFxuMTExNDpcXHRcXHRcXHRidWZmZXJfc2V0X2NyeXB0b19jdHgoYmlvLCBiaCwgR0ZQX05PSU8pO1xcbjExMTU6XFx0XFxuMTExNjpcXHRcXHRiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfc2VjdG9yID0gYmgtXFx1MDAzZWJfYmxvY2tuciAqIChiaC1cXHUwMDNlYl9zaXplIFxcdTAwM2VcXHUwMDNlIDkpO1xcbjExMTc6XFx0XFx0YmlvLVxcdTAwM2ViaV93cml0ZV9oaW50ID0gd3JpdGVfaGludDtcXG4xMTE4OlxcdFxcbjExMTk6XFx0XFx0aWYgKGJoLVxcdTAwM2ViX2ZvbGlvKVxcbjExMjA6XFx0XFx0XFx0YmlvX2FkZF9mb2xpb19ub2ZhaWwoYmlvLCBiaC1cXHUwMDNlYl9mb2xpbywgYmgtXFx1MDAzZWJfc2l6ZSxcXG4xMTIxOlxcdFxcdFxcdFxcdFxcdCAgICAgYmhfb2Zmc2V0KGJoKSk7XFxuMTEyMjpcXHRcXHRlbHNlXFxuMTEyMzpcXHRcXHRcXHRiaW9fYWRkX3ZpcnRfbm9mYWlsKGJpbywgYmgtXFx1MDAzZWJfZGF0YSwgYmgtXFx1MDAzZWJfc2l6ZSk7XFxuMTEyNDpcXHRcXG4xMTI1OlxcdFxcdGJpby1cXHUwMDNlYmlfZW5kX2lvID0gZW5kX2JpbztcXG4xMTI2OlxcdFxcdGJpby1cXHUwMDNlYmlfcHJpdmF0ZSA9IGJoO1xcbjExMjc6XFx0XFxuMTEyODpcXHRcXHQvKiBUYWtlIGNhcmUgb2YgYmgncyB0aGF0IHN0cmFkZGxlIHRoZSBlbmQgb2YgdGhlIGRldmljZSAqL1xcbjExMjk6XFx0XFx0Z3VhcmRfYmlvX2VvZChiaW8pO1xcbjExMzA6XFx0XFxuMTEzMTpcXHRcXHRpZiAod2JjKSB7XFxuMTEzMjpcXHRcXHRcXHR3YmNfaW5pdF9iaW8od2JjLCBiaW8pO1xcbjExMzM6XFx0XFx0XFx0aWYgKGJoLVxcdTAwM2ViX2ZvbGlvKVxcbjExMzQ6XFx0XFx0XFx0XFx0d2JjX2FjY291bnRfY2dyb3VwX293bmVyKHdiYywgYmgtXFx1MDAzZWJfZm9saW8sIGJoLVxcdTAwM2ViX3NpemUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzozNC41MzkzODM5OTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDIzOTU5NDY1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIGZpeCBmb3IgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBfX2JoX3N1Ym1pdGAuIE15IGFuYWx5c2lzIHNob3dzIHRoYXQgYGJoLVx1MDAzZWJfZm9saW9gICpjYW4qIGJlIE5VTEwsIGFuZCB0aGUgb3JpZ2luYWwgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVx1MDAzZWJfZm9saW8pYCBjYWxsLCBkaWRuJ3QgYWNjb3VudCBmb3IgdGhhdCBwb3NzaWJpbGl0eS4gVGhhdCdzIGEgY2xhc3NpYyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnLCBsZWFkaW5nIHRvIGEgcGFuaWMvY3Jhc2ggd2hlbiBgYmgtXHUwMDNlYl9mb2xpb2AgaXMgaW5kZWVkIE5VTEwuIFRoZSBwYXRjaCBjb3JyZWN0bHkgYWRkcyBhIE5VTEwgY2hlY2sgYmVmb3JlIGRlcmVmZXJlbmNpbmcsIG1ha2luZyB0aGUgY29kZSBzYWZlOiBgYmgtXHUwMDNlYl9mb2xpbyBcdTAwMjZcdTAwMjYgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVx1MDAzZWJfZm9saW8pYC4gR29vZCBjYXRjaC5cblxuTm93LCBsZXQncyBjb25zaWRlciB0aGUgS01TQU4gaW1wbGljYXRpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgZG9lcyB0aGlzIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/IEFuZCB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyBcIm5vLlwiIFdlJ3JlIG5vdCBhbGxvY2F0aW5nIG5ldyBtZW1vcnksIHRoZXJlIGFyZSBubyByZWFkcyBvciB3cml0ZXMgdG8gYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGlzIGlzbid0IGFuIGluZm8tbGVhayBpc3N1ZSB0byB1c2Vyc3BhY2UgZWl0aGVyLiBXZSdyZSBkZWFsaW5nIHdpdGggYSBzaW1wbGUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBhIHNpdHVhdGlvbiB0aGF0IHNob3VsZCBiZSBkZXRlY3RlZCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcywgbGlrZSB0aGUgT29wcy9wYW5pYyBhbmQgS0FTQU4uIEtNU0FOIGlzbid0IGRlc2lnbmVkIHRvIGNhdGNoIHRob3NlIHN0YW5kYXJkIGlzc3Vlcy5cblxuTGV0J3MgZG8gYSBxdWljayBjaGVja2xpc3QgdG8gY29uZmlybSBteSBhc3Nlc3NtZW50LlxuXG4xLiAgTm8ga2VybmVsIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSBoZXJlLlxuMi4gIFRoZXJlJ3Mgbm8gY29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIGJhc2VkIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBgYmgtXHUwMDNlYl9mb2xpb2AgaXMgYW4gZXhpc3RpbmcgZmllbGQgaW4gYHN0cnVjdCBidWZmZXJfaGVhZGAsIGFuZCBpdCdzIGluaXRpYWxpemVkLCBlaXRoZXIgdG8gcG9pbnQgdG8gYSBmb2xpbyBvciB0byBOVUxMLlxuMy4gIFdlJ3JlIG5vdCBhbGxvY2F0aW5nIG9yIGluaXRpYWxpemluZyBhbnkgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgaGVyZS5cbjQuICBObyBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aHMgYXJlIGJlaW5nIGhhbmRsZWQgaW4gYSB3YXkgdGhhdCBtaWdodCBleHBvc2UgdW5pbml0aWFsaXplZCBieXRlcyB0byBzdXJyb3VuZGluZyBjb2RlLlxuXG5TbywgYWxsIGNyaXRlcmlhIGhhdmUgYmVlbiBtZXQuIEJhc2VkIG9uIGFsbCBvZiB0aGlzLCB0aGUgYE5lZWRzS01TQU5gIGlzIGBmYWxzZWAuIFRoaXMgaXMgYSBjbGFzc2ljIGNhc2Ugd2hlcmUgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyBhbmQgS0FTQU4gc2hvdWxkIGJlIHN1ZmZpY2llbnQsIGFuZCBLTVNBTiB3b3VsZCBiZSBvdmVya2lsbC4gSXQgbG9va3MgbGlrZSBzdGFuZGFyZCBkZWZlbnNlcyBhcmUgYWRlcXVhdGUgZm9yIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzOTksIk91dHB1dFRva2VucyI6MTczLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDM6MDM6MzguNzc4OTgyOTgzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgTlVMTCBjaGVjayBmb3IgYGJoLVxcdTAwM2ViX2ZvbGlvYCBiZWZvcmUgY2FsbGluZyBgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVxcdTAwM2ViX2ZvbGlvKWAgaW4gYF9fYmhfc3VibWl0KClgIHRvIHByZXZlbnQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBzdWJtaXR0aW5nIGJ1ZmZlciBoZWFkcyB0aGF0IGxhY2sgYW4gYXNzb2NpYXRlZCBmb2xpbyAoZS5nLiBidWZmZXJzIGJhY2tlZCBieSBgYmgtXFx1MDAzZWJfZGF0YWApLlxcblxcblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcsIHdoaWNoIGlzIGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdGlvbiAvIHBhZ2UgZmF1bHQgaGFuZGxlcnMgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgZG9lcyBub3QgcmVhZCBvciBicmFuY2ggb24gdW5pbml0aWFsaXplZCBtZW1vcnksIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIHRvIHVzZXJzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGJ1ZmZlciBsZW5ndGggY2FsY3VsYXRpb25zLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBOVUxMIGNoZWNrIGZvciBgYmgtXFx1MDAzZWJfZm9saW9gIGJlZm9yZSBjYWxsaW5nIGBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtXFx1MDAzZWJfZm9saW8pYCBpbiBgX19iaF9zdWJtaXQoKWAgdG8gcHJldmVudCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIHN1Ym1pdHRpbmcgYnVmZmVyIGhlYWRzIHRoYXQgbGFjayBhbiBhc3NvY2lhdGVkIGZvbGlvIChlLmcuIGJ1ZmZlcnMgYmFja2VkIGJ5IGBiaC1cXHUwMDNlYl9kYXRhYCkuXFxuXFxuVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1Zywgd2hpY2ggaXMgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0aW9uIC8gcGFnZSBmYXVsdCBoYW5kbGVycyBhbmQgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCByZWFkIG9yIGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSwgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9maWVsZHMgdG8gdXNlcnNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgYnVmZmVyIGxlbmd0aCBjYWxjdWxhdGlvbnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowp64x9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 02:39:23 +0000 UTC FinishedAt: 2026-09-08 03:03:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "944a035ecca915ae947905dcfb03f2b9dc6d032c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BUFFER_HEAD", "BLOCK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "944a035ecca915ae947905dcfb03f2b9dc6d032c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BUFFER_HEAD", "BLOCK" ], "series_id": "0bfde347-d2a8-4d3f-829d-7e242426e8f2" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "__bh_submit", "bh_submit", "__block_write_full_folio" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JVRkZFUl9IRUFEJiMzNDssCiAgICAmIzM0O0JMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19iaF9zdWJtaXQmIzM0OywKICAgICYjMzQ7Ymhfc3VibWl0JiMzNDssCiAgICAmIzM0O19fYmxvY2tfd3JpdGVfZnVsbF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBOVUxMIGNoZWNrIGZvciBgYmgtXHUwMDNlYl9mb2xpb2AgYmVmb3JlIGNhbGxpbmcgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cdTAwM2ViX2ZvbGlvKWAgaW4gYF9fYmhfc3VibWl0KClgIHRvIHByZXZlbnQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBzdWJtaXR0aW5nIGJ1ZmZlciBoZWFkcyB0aGF0IGxhY2sgYW4gYXNzb2NpYXRlZCBmb2xpbyAoZS5nLiBidWZmZXJzIGJhY2tlZCBieSBgYmgtXHUwMDNlYl9kYXRhYCkuXG5cblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcsIHdoaWNoIGlzIGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdGlvbiAvIHBhZ2UgZmF1bHQgaGFuZGxlcnMgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgZG9lcyBub3QgcmVhZCBvciBicmFuY2ggb24gdW5pbml0aWFsaXplZCBtZW1vcnksIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIHRvIHVzZXJzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGJ1ZmZlciBsZW5ndGggY2FsY3VsYXRpb25zLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gX19iaF9zdWJtaXQoKSBieSBjaGVja2luZyBpZiBiaC1cdTAwM2ViX2ZvbGlvIGlzIG5vbi1OVUxMIGJlZm9yZSBjYWxsaW5nIGZvbGlvX3Rlc3RfZHJvcGJlaGluZCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgYnVmZmVyIGhlYWQgSS9PIHN1Ym1pc3Npb24gbG9naWMgaW4gZnMvYnVmZmVyLmMsIHdoaWNoIGlzIGRpcmVjdGx5IHJlYWNoYWJsZSBieSBzdGFuZGFyZCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDM6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5ZmVjOTVlY2JhYjY5NzRlYWE0MTEwZTcwMjdiYmQyZDkxZjc1ODJhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAwMzowMjo1OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9idWZmZXIuYyBiL2ZzL2J1ZmZlci5jXG5pbmRleCA0MjdkOGE4MTdjZDU2Li5mNDZmYTY0MTMwMzJkIDEwMDY0NFxuLS0tIGEvZnMvYnVmZmVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2J1ZmZlci5jXG5AQCAtMTEwNiw3ICYjNDM7MTEwNiw4IEBAIHN0YXRpYyB2b2lkIF9fYmhfc3VibWl0KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcGYsXG4gXG4gXHRiaW8gPSBiaW9fYWxsb2MoYmgtXHUwMDNlYl9iZGV2LCAxLCBvcGYsIEdGUF9OT0lPKTtcbiBcbi1cdGlmIChmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtXHUwMDNlYl9mb2xpbykgXHUwMDI2XHUwMDI2IG9wX2lzX3dyaXRlKG9wZikpXG4mIzQzO1x0aWYgKGJoLVx1MDAzZWJfZm9saW8gXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cdTAwM2ViX2ZvbGlvKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgb3BfaXNfd3JpdGUob3BmKSlcbiBcdFx0YmlvX3NldF9mbGFnKGJpbywgQklPX0NPTVBMRVRFX0lOX1RBU0spO1xuIFxuIFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0ZTX0VOQ1JZUFRJT04pKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JVRkZFUl9IRUFEJiMzNDssCiAgICAmIzM0O0JMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19iaF9zdWJtaXQmIzM0OywKICAgICYjMzQ7Ymhfc3VibWl0JiMzNDssCiAgICAmIzM0O19fYmxvY2tfd3JpdGVfZnVsbF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gX19iaF9zdWJtaXQoKSBieSBjaGVja2luZyBpZiBiaC1cdTAwM2ViX2ZvbGlvIGlzIG5vbi1OVUxMIGJlZm9yZSBjYWxsaW5nIGZvbGlvX3Rlc3RfZHJvcGJlaGluZCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgYnVmZmVyIGhlYWQgSS9PIHN1Ym1pc3Npb24gbG9naWMgaW4gZnMvYnVmZmVyLmMsIHdoaWNoIGlzIGRpcmVjdGx5IHJlYWNoYWJsZSBieSBzdGFuZGFyZCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZmVjOTVlY2JhYjY5NzRlYWE0MTEwZTcwMjdiYmQyZDkxZjc1ODJhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgOCAwMzowMjo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2J1ZmZlci5jIGIvZnMvYnVmZmVyLmMKaW5kZXggNDI3ZDhhODE3Y2Q1Ni4uZjQ2ZmE2NDEzMDMyZCAxMDA2NDQKLS0tIGEvZnMvYnVmZmVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvYnVmZmVyLmMKQEAgLTExMDYsNyAmIzQzOzExMDYsOCBAQCBzdGF0aWMgdm9pZCBfX2JoX3N1Ym1pdChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BmLAogCiAJYmlvID0gYmlvX2FsbG9jKGJoLSZndDtiX2JkZXYsIDEsIG9wZiwgR0ZQX05PSU8pOwogCi0JaWYgKGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC0mZ3Q7Yl9mb2xpbykgJmFtcDsmYW1wOyBvcF9pc193cml0ZShvcGYpKQomIzQzOwlpZiAoYmgtJmd0O2JfZm9saW8gJmFtcDsmYW1wOyBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtJmd0O2JfZm9saW8pICZhbXA7JmFtcDsKJiM0MzsJICAgIG9wX2lzX3dyaXRlKG9wZikpCiAJCWJpb19zZXRfZmxhZyhiaW8sIEJJT19DT01QTEVURV9JTl9UQVNLKTsKIAogCWlmIChJU19FTkFCTEVEKENPTkZJR19GU19FTkNSWVBUSU9OKSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDM6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwMgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCdWZmZXIgSGVhZCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGZzL2J1ZmZlci5jYC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IGl0IHNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgb3B0aW1pemF0aW9uIG9yIGJ1ZyBmaXggcmVsYXRlZCB0byBgYnVmZmVyX2hlYWRgIG9wZXJhdGlvbnMuIEkgc2VlIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgYF9fYmhfc3VibWl0YCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGhvdyBCSU9zIGFyZSBhbGxvY2F0ZWQgYW5kIGNvbmZpZ3VyZWQuCgpUaGUgY3J1eCBvZiB0aGUgY2hhbmdlIGlzIGFyb3VuZCB0aGUgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZGAgY2hlY2suIFByZXZpb3VzbHksIGl0IGxvb2tzIGxpa2UgdGhpcyBjaGVjayB3YXMgaW1wbGljaXRseSBhc3N1bWluZyBhIHZhbGlkIGZvbGlvIGV4aXN0ZWQgZm9yIHRoZSBgYnVmZmVyX2hlYWRgLiBUaGUgcGF0Y2ggYWRkcyBhbiBleHBsaWNpdCBgYmgtJmd0O2JfZm9saW9gIGNoZWNrIGJlZm9yZSBjYWxsaW5nIGBmb2xpb190ZXN0X2Ryb3BiZWhpbmRgLiBUaGlzIGlzIHRoZSBpbXBvcnRhbnQgcGFydCAtIGl0JiMzOTtzIGEgc2FmZXR5IG1lYXN1cmUsIGxpa2VseSB0byBwcmV2ZW50IGEgcG90ZW50aWFsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIGNvbmRpdGlvbmFsIGBvcF9pc193cml0ZShvcGYpYCBpbmRpY2F0ZXMgdGhlIG9wdGltaXphdGlvbiBpcyBzcGVjaWZpYyB0byB3cml0ZSBvcGVyYXRpb25zLiBJIHVuZGVyc3RhbmQgdGhhdCB0aGUgYEJJT19DT01QTEVURV9JTl9UQVNLYCBmbGFnIG9wdGltaXplcyB3cml0ZSBvcGVyYXRpb25zIGJ5IGNvbXBsZXRpbmcgdGhlbSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIHN1Ym1pdHRpbmcgdGFzayBpZiBgZHJvcGJlaGluZGAgaXMgZW5hYmxlZCBvbiB0aGUgYGZvbGlvYC4KClRoZSBgaWYgKGJoLSZndDtiX2ZvbGlvKWAgY29uZGl0aW9uYWwgaXMgYSBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBwcmFjdGljZS4gSXQgZW5zdXJlcyB0aGF0IHdlIGFyZSBub3Qgb3BlcmF0aW5nIG9uIGEgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBvciBmcmVlZCBgYnVmZmVyX2hlYWRgIG9yIGZvbGlvLCB3aGljaCBjYW4gbGVhZCB0byBjcmFzaGVzLiBJJiMzOTtkIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgYnVmZmVyIGhlYWQgaGFuZGxpbmcgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIG51bGwgZm9saW8gY29uZGl0aW9uIG1pZ2h0IGFyaXNlLCBidXQgdGhpcyBwYXRjaCBjbGVhcmx5IGFkZHJlc3NlcyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LiBJdCYjMzk7cyBhIGNsZWFuLCBzYWZlIGZpeCwgYW5kIEkgYXBwcmVjaWF0ZSB0aGUgY2F1dGlvbi4gSXQmIzM5O3MgYWx3YXlzIGJldHRlciB0byBiZSBleHBsaWNpdCBhYm91dCB0aGVzZSBjaGVja3MsIGVzcGVjaWFsbHkgaW4ga2VybmVsIGNvZGUuIE5vdyBJJiMzOTtkIGxpa2UgdG8gY2hlY2sgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBlbHNld2hlcmUsIGluIHRoZSBgZnMvYnVmZmVyLmNgIGZpbGUgYW5kIGFsc28gaW4gb3RoZXIgcGxhY2VzIGluIHRoZSBrZXJuZWwgdXNpbmcgYSBjcm9zcy1yZWZlcmVuY2Ugc2VhcmNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvYnVmZmVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQ1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwOTU6XHRcdEJVR19PTighYnVmZmVyX2xvY2tlZChiaCkpO1xuMTA5NjpcdFx0QlVHX09OKCFidWZmZXJfbWFwcGVkKGJoKSk7XG4xMDk3Olx0XHRCVUdfT04oYnVmZmVyX2RlbGF5KGJoKSk7XG4xMDk4Olx0XHRCVUdfT04oYnVmZmVyX3Vud3JpdHRlbihiaCkpO1xuMTA5OTpcdFxuMTEwMDpcdFx0c2V0X2J1ZmZlcl9yZXEoYmgpO1xuMTEwMTpcdFxuMTEwMjpcdFx0aWYgKGJ1ZmZlcl9tZXRhKGJoKSlcbjExMDM6XHRcdFx0b3BmIHw9IFJFUV9NRVRBO1xuMTEwNDpcdFx0aWYgKGJ1ZmZlcl9wcmlvKGJoKSlcbjExMDU6XHRcdFx0b3BmIHw9IFJFUV9QUklPO1xuMTEwNjpcdFxuMTEwNzpcdFx0YmlvID0gYmlvX2FsbG9jKGJoLVx1MDAzZWJfYmRldiwgMSwgb3BmLCBHRlBfTk9JTyk7XG4xMTA4Olx0XG4xMTA5Olx0XHRpZiAoYmgtXHUwMDNlYl9mb2xpbyBcdTAwMjZcdTAwMjYgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVx1MDAzZWJfZm9saW8pIFx1MDAyNlx1MDAyNlxuMTExMDpcdFx0ICAgIG9wX2lzX3dyaXRlKG9wZikpXG4xMTExOlx0XHRcdGJpb19zZXRfZmxhZyhiaW8sIEJJT19DT01QTEVURV9JTl9UQVNLKTtcbjExMTI6XHRcbjExMTM6XHRcdGlmIChJU19FTkFCTEVEKENPTkZJR19GU19FTkNSWVBUSU9OKSlcbjExMTQ6XHRcdFx0YnVmZmVyX3NldF9jcnlwdG9fY3R4KGJpbywgYmgsIEdGUF9OT0lPKTtcbjExMTU6XHRcbjExMTY6XHRcdGJpby1cdTAwM2ViaV9pdGVyLmJpX3NlY3RvciA9IGJoLVx1MDAzZWJfYmxvY2tuciAqIChiaC1cdTAwM2ViX3NpemUgXHUwMDNlXHUwMDNlIDkpO1xuMTExNzpcdFx0YmlvLVx1MDAzZWJpX3dyaXRlX2hpbnQgPSB3cml0ZV9oaW50O1xuMTExODpcdFxuMTExOTpcdFx0aWYgKGJoLVx1MDAzZWJfZm9saW8pXG4xMTIwOlx0XHRcdGJpb19hZGRfZm9saW9fbm9mYWlsKGJpbywgYmgtXHUwMDNlYl9mb2xpbywgYmgtXHUwMDNlYl9zaXplLFxuMTEyMTpcdFx0XHRcdFx0ICAgICBiaF9vZmZzZXQoYmgpKTtcbjExMjI6XHRcdGVsc2VcbjExMjM6XHRcdFx0YmlvX2FkZF92aXJ0X25vZmFpbChiaW8sIGJoLVx1MDAzZWJfZGF0YSwgYmgtXHUwMDNlYl9zaXplKTtcbjExMjQ6XHRcbjExMjU6XHRcdGJpby1cdTAwM2ViaV9lbmRfaW8gPSBlbmRfYmlvO1xuMTEyNjpcdFx0YmlvLVx1MDAzZWJpX3ByaXZhdGUgPSBiaDtcbjExMjc6XHRcbjExMjg6XHRcdC8qIFRha2UgY2FyZSBvZiBiaCYjMzk7cyB0aGF0IHN0cmFkZGxlIHRoZSBlbmQgb2YgdGhlIGRldmljZSAqL1xuMTEyOTpcdFx0Z3VhcmRfYmlvX2VvZChiaW8pO1xuMTEzMDpcdFxuMTEzMTpcdFx0aWYgKHdiYykge1xuMTEzMjpcdFx0XHR3YmNfaW5pdF9iaW8od2JjLCBiaW8pO1xuMTEzMzpcdFx0XHRpZiAoYmgtXHUwMDNlYl9mb2xpbylcbjExMzQ6XHRcdFx0XHR3YmNfYWNjb3VudF9jZ3JvdXBfb3duZXIod2JjLCBiaC1cdTAwM2ViX2ZvbGlvLCBiaC1cdTAwM2ViX3NpemUpO1xuMTEzNTpcdFx0fVxuMTEzNjpcdFxuMTEzNzpcdFx0YmxrX2NyeXB0b19zdWJtaXRfYmlvKGJpbyk7XG4xMTM4Olx0fVxuMTEzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMDcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYF9fYmhfc3VibWl0YCBDYWxsZXJzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgX19iaF9zdWJtaXRgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBJdCYjMzk7cyBsaWtlbHkgYSBib3R0b20taGFsZiBoYW5kbGVyIHN1Ym1pc3Npb24gZnVuY3Rpb24sIHByb2JhYmx5IGhhbmRsaW5nIGRlZmVycmVkIHdvcmsgaW4gdGhlIGtlcm5lbC4gTm93LCBsZXQmIzM5O3MgdHJhY2UgdGhlIGNhbGxlcnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGVyZSogYW5kICp3aHkqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC4gV2hhdCBzY2VuYXJpb3MgdHJpZ2dlciB0aGUgbmVlZCB0byBkZWZlciBwcm9jZXNzaW5nIHZpYSBhIGJvdHRvbS1oYWxmIG1lY2hhbmlzbT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgaW50ZXJydXB0IGhhbmRsZXJzLCBzb2Z0aXJxcywgdGFza2xldHMsIHdvcmtxdWV1ZXMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHF1aWNrIGNvZGUgZGl2ZSBzaG91bGQgcmV2ZWFsIHRoZSBjYWxsIHNpdGVzLCBhbmQgZnJvbSB0aGVyZSwgSSBjYW4gaW5mZXIgdGhlIGNvbnRleHQgb2YgdGhlIHN1Ym1pc3Npb25zLgoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcGF0dGVybnM6IGFyZSB0aGUgY2FsbGVycyByZWxhdGVkIHRvIG5ldHdvcmsgcHJvY2Vzc2luZywgZGlzayBJL08sIGRldmljZSBkcml2ZXJzLCBvciBzb21lIG90aGVyIHN1YnN5c3RlbT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBvciBsb2NraW5nIGNvbnNpZGVyYXRpb25zIGluIHRoZSBjYWxsIHBhdGhzPyBLbm93aW5nIHRoZSBjYWxsZXJzIGdpdmVzIG1lIHRoZSBjcnVjaWFsIGNvbnRleHQgdG8gYXNzZXNzIHRoZSBmdW5jdGlvbiYjMzk7cyBvdmVyYWxsIGltcGFjdCBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzLiBUaGlzIGludmVzdGlnYXRpb24gd2lsbCBwcm9iYWJseSBoaWdobGlnaHQgdGhlIGNyaXRpY2FsIHNlY3Rpb25zIGd1YXJkZWQgYnkgQkggbG9ja3MgYW5kIGVuYWJsZSBtZSB0byBzcG90IGFueSBjb250ZW50aW9uIG9yIHJhY2UgY29uZGl0aW9ucyBpbiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fYmhfc3VibWl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYnVmZmVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYnVmZmVyLmM9MTA3MD1zdGF0aWMgdm9pZCBidWZmZXJfc2V0X2NyeXB0b19jdHgoc3RydWN0IGJpbyAqYmlvLCBjb25zdCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLFxuLS1cbmZzL2J1ZmZlci5jLTEwODgtXG5mcy9idWZmZXIuYzoxMDg5OnN0YXRpYyB2b2lkIF9fYmhfc3VibWl0KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcGYsXG5mcy9idWZmZXIuYy0xMDkwLVx0XHRlbnVtIHJ3X2hpbnQgd3JpdGVfaGludCwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMsXG4tLVxuZnMvYnVmZmVyLmM9MTE0OT12b2lkIGJoX3N1Ym1pdChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BmLCBiaW9fZW5kX2lvX3QgZW5kX2lvKVxuZnMvYnVmZmVyLmMtMTE1MC17XG5mcy9idWZmZXIuYzoxMTUxOlx0X19iaF9zdWJtaXQoYmgsIG9wZiwgV1JJVEVfTElGRV9OT1RfU0VULCBOVUxMLCBlbmRfaW8pO1xuZnMvYnVmZmVyLmMtMTE1Mi19XG4tLVxuZnMvYnVmZmVyLmM9MTcyNj1pbnQgX19ibG9ja193cml0ZV9mdWxsX2ZvbGlvKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxuZnMvYnVmZmVyLmMtMTgyMS1cdFx0aWYgKGJ1ZmZlcl9hc3luY193cml0ZShiaCkpIHtcbmZzL2J1ZmZlci5jOjE4MjI6XHRcdFx0X19iaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSB8IHdyaXRlX2ZsYWdzLFxuZnMvYnVmZmVyLmMtMTgyMy1cdFx0XHRcdFx0aW5vZGUtXHUwMDNlaV93cml0ZV9oaW50LCB3YmMsXG4tLVxuZnMvYnVmZmVyLmMtMTg3Ni1cdFx0XHRjbGVhcl9idWZmZXJfZGlydHkoYmgpO1xuZnMvYnVmZmVyLmM6MTg3NzpcdFx0XHRfX2JoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgd3JpdGVfZmxhZ3MsXG5mcy9idWZmZXIuYy0xODc4LVx0XHRcdFx0XHRpbm9kZS1cdTAwM2VpX3dyaXRlX2hpbnQsIHdiYyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDMzCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMjU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYF9fYmhfc3VibWl0YCBhbmQgYGJoX3N1Ym1pdGAgQ29kZSBQYXRocyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBfX2JoX3N1Ym1pdGAgaXMgdGhlIHdvcmtob3JzZSBoZXJlLCBjYWxsZWQgZGlyZWN0bHkgYnkgYGJoX3N1Ym1pdGAgYW5kLCBpbnRlcmVzdGluZ2x5LCBhbHNvIGJ5IGBfX2Jsb2NrX3dyaXRlX2Z1bGxfZm9saW9gLiBUaGF0JiMzOTtzIGdvb2QgdG8ga2VlcCBpbiBtaW5kLCB3ZSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byBsb29rIGF0IGJvdGggY29kZSBwYXRocy4KCkkmIzM5O20gbm90aWNpbmcgc29tZXRoaW5nIHRoYXQgaW1tZWRpYXRlbHkgc3RhbmRzIG91dDogdGhlIGNvbmRpdGlvbmFsIGluIHRoZSBjb2RlIHNuaXBwZXQuIEl0IGV4cGxpY2l0bHkgY2hlY2tzIGBiaC0mZ3Q7Yl9mb2xpb2AuIFRoZSBpbXBsaWNhdGlvbiBoZXJlIGlzIHRoYXQgYGJoLSZndDtiX2ZvbGlvYCAqY2FuKiBiZSBOVUxMLiBTcGVjaWZpY2FsbHk6CgpgYGBjCmlmIChiaC0mZ3Q7Yl9mb2xpbykKICAgIGJpb19hZGRfZm9saW9fbm9mYWlsKGJpbywgYmgtJmd0O2JfZm9saW8sIGJoLSZndDtiX3NpemUsIGJoX29mZnNldChiaCkpOwplbHNlCiAgICBiaW9fYWRkX3ZpcnRfbm9mYWlsKGJpbywgYmgtJmd0O2JfZGF0YSwgYmgtJmd0O2Jfc2l6ZSk7CmBgYAoKVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBCdWZmZXIgaGVhZHMgYXJlbiYjMzk7dCAqYWx3YXlzKiBiYWNrZWQgYnkgZm9saW9zLiBTb21ldGltZXMgdGhleSYjMzk7cmUgdXNpbmcgdmlydHVhbCBtZW1vcnksIGxpa2Ugd2hlbiBkZWFsaW5nIHdpdGggZmlsZXN5c3RlbSBtZXRhZGF0YSBvciBqb3VybmFsIGRhdGEgKHRoaW5rIGpiZDIpLCB3aGVyZSBrbWFsbG9jIG9yIHNpbWlsYXIgYWxsb2NhdGlvbiBtZWNoYW5pc21zIGFyZSB1c2VkLgoKQW5kIGhlcmUmIzM5O3MgdGhlIHByb2JsZW06IFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBtYWtpbmcgYW4gdW5jb25kaXRpb25hbCBjYWxsIHRvIGBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtJmd0O2JfZm9saW8pYC4gSWYgYGJoLSZndDtiX2ZvbGlvYCB3YXMgTlVMTCwgdGhhdCYjMzk7cyBhIGNsYXNzaWMgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLiBUaGUgZml4LCB0aGVyZWZvcmUsIGlzIGNsZWFyIGFuZCBjb25jaXNlOiBvbmx5IGNhbGwgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZGAgaWYgYGJoLSZndDtiX2ZvbGlvYCBpcyBhY3R1YWxseSBhIHZhbGlkIHBvaW50ZXIuCgpTbyB0aGUgZml4IG9mIGFkZGluZyBgYmgtJmd0O2JfZm9saW8gJmFtcDsmYW1wOyBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtJmd0O2JfZm9saW8pYCBpcyBjbGVhbiBhbmQgc29sdmVzIHRoZSBwcm9ibGVtIGluIGBfX2JoX3N1Ym1pdCgpYC4gTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGNhbGxlcnMgb2YgYGJoX3N1Ym1pdGAgYW5kIGBfX2JoX3N1Ym1pdGAgYW5kIG1ha2Ugc3VyZSB3ZSBkb24mIzM5O3QgaGF2ZSB0aGlzIG9yIHNpbWlsYXIgcG90ZW50aWFsIGlzc3VlcyBlbHNld2hlcmUgaW4gdGhlIHJlbGF0ZWQgYnVmZmVyIGhlYWQgc3VibWlzc2lvbiBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JoX3N1Ym1pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3Q9MTU3OD1mdW5jdGlvbi10cmFjZSwgd2UgZ2V0IGEgbXVjaCBsYXJnZXIgb3V0cHV0Ojpcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3QtMTYzMC0gICA9XHUwMDNlIHN1Ym1pdF9iaW9cbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdDoxNjMxOiAgID1cdTAwM2UgYmhfc3VibWl0XG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3QtMTYzMi0gICA9XHUwMDNlIF9fZXh0M19nZXRfaW5vZGVfbG9jXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0PTE4NzE9dHJhY2Vycy5cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3QtMTkxNS0gICA9XHUwMDNlIHN1Ym1pdF9iaW9cbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdDoxOTE2OiAgID1cdTAwM2UgYmhfc3VibWl0XG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3QtMTkxNy0gICA9XHUwMDNlIGV4dDNfYnJlYWRcbi0tXG5kcml2ZXJzL21kL21kLWJpdG1hcC5jPTUxNz1zdGF0aWMgdm9pZCB3cml0ZV9maWxlX3BhZ2Uoc3RydWN0IGJpdG1hcCAqYml0bWFwLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IHdhaXQpXG4tLVxuZHJpdmVycy9tZC9tZC1iaXRtYXAuYy01MjQtXHRcdHNldF9idWZmZXJfbWFwcGVkKGJoKTtcbmRyaXZlcnMvbWQvbWQtYml0bWFwLmM6NTI1Olx0XHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSB8IFJFUV9TWU5DLCBlbmRfYml0bWFwX3dyaXRlKTtcbmRyaXZlcnMvbWQvbWQtYml0bWFwLmMtNTI2LVx0XHRiaCA9IGJoLVx1MDAzZWJfdGhpc19wYWdlO1xuLS1cbmRyaXZlcnMvbWQvbWQtYml0bWFwLmM9NTU4PXN0YXRpYyBpbnQgcmVhZF9maWxlX3BhZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgsXG4tLVxuZHJpdmVycy9tZC9tZC1iaXRtYXAuYy02MDAtXHRcdFx0c2V0X2J1ZmZlcl9tYXBwZWQoYmgpO1xuZHJpdmVycy9tZC9tZC1iaXRtYXAuYzo2MDE6XHRcdFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCwgZW5kX2JpdG1hcF93cml0ZSk7XG5kcml2ZXJzL21kL21kLWJpdG1hcC5jLTYwMi1cdFx0fVxuLS1cbmZzL2J1ZmZlci5jPTEyMz1zdGF0aWMgdm9pZCBidWZmZXJfaW9fZXJyb3Ioc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgY2hhciAqbXNnKVxuLS1cbmZzL2J1ZmZlci5jLTEzNi0gKiBDYWxsIHRoaXMgaW4geW91ciBiaW9fZW5kX2lvIGhhbmRsZXIgdG8gcmV0cmlldmUgdGhlIGJ1ZmZlcl9oZWFkXG5mcy9idWZmZXIuYzoxMzc6ICogc3VibWl0dGVkIGluIGJoX3N1Ym1pdCgpLiAgSWYgeW91IGRpZCBub3QgY2FsbCBiaF9zdWJtaXQoKSwgZG8gbm90XG5mcy9idWZmZXIuYy0xMzgtICogY2FsbCB0aGlzIGZ1bmN0aW9uOyBpdCB3aWxsIHJldHVybiBnYXJiYWdlLlxuLS1cbmZzL2J1ZmZlci5jPTE1Nz1FWFBPUlRfU1lNQk9MKGJpb19lbmRpb19iaCk7XG4tLVxuZnMvYnVmZmVyLmMtMTYzLSAqXG5mcy9idWZmZXIuYzoxNjQ6ICogSWYgYSBidWZmZXIgaXMgcmVhZCB0aHJvdWdoIGEgbWVjaGFuaXNtIHRoYXQgaXNuJiMzOTt0IGJoX3N1Ym1pdCgpLCB5b3VcbmZzL2J1ZmZlci5jLTE2NS0gKiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIGZpbmlzaCB0aGUgcmVhZC5cbi0tXG5mcy9idWZmZXIuYz0xNzc9RVhQT1JUX1NZTUJPTChlbmRfYnVmZmVyX3JlYWRfc3luYyk7XG4tLVxuZnMvYnVmZmVyLmMtMTgyLSAqXG5mcy9idWZmZXIuYzoxODM6ICogUGFzcyB0aGlzIGZ1bmN0aW9uIHRvIGJoX3N1Ym1pdCgpIGlmIHlvdSYjMzk7cmUgcmVhZGluZyBpbnRvIHRoZSBidWZmZXIsXG5mcy9idWZmZXIuYy0xODQtICogdW5sZXNzIHlvdSBuZWVkIHlvdXIgb3duIHNwZWNpYWwgSS9PIGVuZCBoYW5kbGVyLlxuLS1cbmZzL2J1ZmZlci5jPTE5Mj1FWFBPUlRfU1lNQk9MKGJoX2VuZF9yZWFkKTtcbi0tXG5mcy9idWZmZXIuYy0xOTctICpcbmZzL2J1ZmZlci5jOjE5ODogKiBQYXNzIHRoaXMgZnVuY3Rpb24gdG8gYmhfc3VibWl0KCkgaWYgeW91JiMzOTtyZSB3cml0aW5nIGZyb20gdGhlIGJ1ZmZlcixcbmZzL2J1ZmZlci5jLTE5OS0gKiB1bmxlc3MgeW91IG5lZWQgeW91ciBvd24gc3BlY2lhbCBJL08gZW5kIGhhbmRsZXIuXG4tLVxuZnMvYnVmZmVyLmM9MzYyPXN0YXRpYyB2b2lkIGJoX2VuZF9hc3luY19yZWFkKHN0cnVjdCBiaW8gKmJpbylcbi0tXG5mcy9idWZmZXIuYy0zOTItICpcbmZzL2J1ZmZlci5jOjM5MzogKiBQYXNzIHRoaXMgZnVuY3Rpb24gdG8gYmhfc3VibWl0KCkgaWYgeW91JiMzOTtyZSBkb2luZyB0aGUgZXF1aXZhbGVudCBvZlxuZnMvYnVmZmVyLmMtMzk0LSAqIGJsb2NrX3dyaXRlX2Z1bGxfZm9saW8oKS4gIFRoYXQgaXMsIHRoZSBmb2xpbyBpcyB1bmxvY2tlZCwgYW5kIHdpbGxcbi0tXG5mcy9idWZmZXIuYz0xMDcwPXN0YXRpYyB2b2lkIGJ1ZmZlcl9zZXRfY3J5cHRvX2N0eChzdHJ1Y3QgYmlvICpiaW8sIGNvbnN0IHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsXG4tLVxuZnMvYnVmZmVyLmMtMTA4OC1cbmZzL2J1ZmZlci5jOjEwODk6c3RhdGljIHZvaWQgX19iaF9zdWJtaXQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgYmxrX29wZl90IG9wZixcbmZzL2J1ZmZlci5jLTEwOTAtXHRcdGVudW0gcndfaGludCB3cml0ZV9oaW50LCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYyxcbi0tXG5mcy9idWZmZXIuYy0xMTQwLS8qKlxuZnMvYnVmZmVyLmM6MTE0MTogKiBiaF9zdWJtaXQgLSBTdGFydCBJL08gYWdhaW5zdCBhIGJ1ZmZlciBoZWFkXG5mcy9idWZmZXIuYy0xMTQyLSAqIEBiaDogVGhlIGJ1ZmZlciBoZWFkIHRvIHBlcmZvcm0gSS9PIG9uLlxuLS1cbmZzL2J1ZmZlci5jLTExNDgtICovXG5mcy9idWZmZXIuYzoxMTQ5OnZvaWQgYmhfc3VibWl0KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcGYsIGJpb19lbmRfaW9fdCBlbmRfaW8pXG5mcy9idWZmZXIuYy0xMTUwLXtcbmZzL2J1ZmZlci5jOjExNTE6XHRfX2JoX3N1Ym1pdChiaCwgb3BmLCBXUklURV9MSUZFX05PVF9TRVQsIE5VTEwsIGVuZF9pbyk7XG5mcy9idWZmZXIuYy0xMTUyLX1cbmZzL2J1ZmZlci5jOjExNTM6RVhQT1JUX1NZTUJPTChiaF9zdWJtaXQpO1xuZnMvYnVmZmVyLmMtMTE1NC1cbmZzL2J1ZmZlci5jPTExNTU9c3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqX19icmVhZF9zbG93KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpXG4tLVxuZnMvYnVmZmVyLmMtMTE2MS1cdH0gZWxzZSB7XG5mcy9idWZmZXIuYzoxMTYyOlx0XHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9SRUFELCBiaF9lbmRfcmVhZCk7XG5mcy9idWZmZXIuYy0xMTYzLVx0XHR3YWl0X29uX2J1ZmZlcihiaCk7XG4tLVxuZnMvYnVmZmVyLmM9MTY4Mj1zdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpmb2xpb19jcmVhdGVfYnVmZmVycyhzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuLS1cbmZzL2J1ZmZlci5jLTE3MTgtICogaGFzIGEgbG9ja2VkIGJ1ZmZlci4gICBUaGlzIG9ubHkgY2FuIGhhcHBlbiBpZiBzb21lb25lIGhhcyB3cml0dGVuXG5mcy9idWZmZXIuYzoxNzE5OiAqIHRoZSBidWZmZXIgZGlyZWN0bHksIHdpdGggYmhfc3VibWl0KCkuICBBdCB0aGUgYWRkcmVzc19zcGFjZSBsZXZlbFxuZnMvYnVmZmVyLmMtMTcyMC0gKiB0aGUgZm9saW8gd3JpdGViYWNrIGZsYWcgcHJldmVudHMgdGhpcyBjb250ZW50aW9uIGZyb20gb2NjdXJyaW5nLlxuLS1cbmZzL2J1ZmZlci5jPTE3MjY9aW50IF9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpbyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuLS1cbmZzL2J1ZmZlci5jLTE4MjEtXHRcdGlmIChidWZmZXJfYXN5bmNfd3JpdGUoYmgpKSB7XG5mcy9idWZmZXIuYzoxODIyOlx0XHRcdF9fYmhfc3VibWl0KGJoLCBSRVFfT1BfV1JJVEUgfCB3cml0ZV9mbGFncyxcbmZzL2J1ZmZlci5jLTE4MjMtXHRcdFx0XHRcdGlub2RlLVx1MDAzZWlfd3JpdGVfaGludCwgd2JjLFxuLS1cbmZzL2J1ZmZlci5jLTE4MzYtXHRcdCAqIGNsZWFuLiAgU29tZW9uZSB3cm90ZSB0aGVtIGJhY2sgYnkgaGFuZCB3aXRoXG5mcy9idWZmZXIuYzoxODM3Olx0XHQgKiB3cml0ZV9kaXJ0eV9idWZmZXIvYmhfc3VibWl0LiAgQSByYXJlIGNhc2UuXG5mcy9idWZmZXIuYy0xODM4LVx0XHQgKi9cbi0tXG5mcy9idWZmZXIuYy0xODc2LVx0XHRcdGNsZWFyX2J1ZmZlcl9kaXJ0eShiaCk7XG5mcy9idWZmZXIuYzoxODc3Olx0XHRcdF9fYmhfc3VibWl0KGJoLCBSRVFfT1BfV1JJVEUgfCB3cml0ZV9mbGFncyxcbmZzL2J1ZmZlci5jLTE4NzgtXHRcdFx0XHRcdGlub2RlLVx1MDAzZWlfd3JpdGVfaGludCwgd2JjLFxuLS1cbmZzL2J1ZmZlci5jPTIyODI9aW50IGJsb2NrX3JlYWRfZnVsbF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBnZXRfYmxvY2tfdCAqZ2V0X2Jsb2NrKVxuLS1cbmZzL2J1ZmZlci5jLTIzNjMtXHRcdGlmIChwcmV2KVxuZnMvYnVmZmVyLmM6MjM2NDpcdFx0XHRiaF9zdWJtaXQocHJldiwgUkVRX09QX1JFQUQsIGJoX2VuZF9hc3luY19yZWFkKTtcbmZzL2J1ZmZlci5jLTIzNjUtXHRcdHByZXYgPSBiaDtcbi0tXG5mcy9idWZmZXIuYy0yMzc3LVx0aWYgKHByZXYpXG5mcy9idWZmZXIuYzoyMzc4Olx0XHRiaF9zdWJtaXQocHJldiwgUkVRX09QX1JFQUQsIGJoX2VuZF9hc3luY19yZWFkKTtcbmZzL2J1ZmZlci5jLTIzNzktXHRlbHNlXG4tLVxuZnMvYnVmZmVyLmM9MjY4Nj12b2lkIHdyaXRlX2RpcnR5X2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BfZmxhZ3MpXG4tLVxuZnMvYnVmZmVyLmMtMjY5Mi1cdH1cbmZzL2J1ZmZlci5jOjI2OTM6XHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSB8IG9wX2ZsYWdzLCBiaF9lbmRfd3JpdGUpO1xuZnMvYnVmZmVyLmMtMjY5NC19XG4tLVxuZnMvYnVmZmVyLmM9MjcwMj1pbnQgX19zeW5jX2RpcnR5X2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BfZmxhZ3MpXG4tLVxuZnMvYnVmZmVyLmMtMjcxNS1cbmZzL2J1ZmZlci5jOjI3MTY6XHRcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgb3BfZmxhZ3MsIGJoX2VuZF93cml0ZSk7XG5mcy9idWZmZXIuYy0yNzE3LVx0XHR3YWl0X29uX2J1ZmZlcihiaCk7XG4tLVxuZnMvYnVmZmVyLmM9Mjk0Mj1pbnQgX19iaF9yZWFkKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcF9mbGFncywgYm9vbCB3YWl0KVxuLS1cbmZzL2J1ZmZlci5jLTI5NDctXG5mcy9idWZmZXIuYzoyOTQ4Olx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCB8IG9wX2ZsYWdzLCBiaF9lbmRfcmVhZCk7XG5mcy9idWZmZXIuYy0yOTQ5LVx0aWYgKHdhaXQpIHtcbi0tXG5mcy9idWZmZXIuYz0yOTY4PXZvaWQgX19iaF9yZWFkX2JhdGNoKGludCBuciwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaHNbXSxcbi0tXG5mcy9idWZmZXIuYy0yOTg5LVxuZnMvYnVmZmVyLmM6Mjk5MDpcdFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCB8IG9wX2ZsYWdzLCBiaF9lbmRfcmVhZCk7XG5mcy9idWZmZXIuYy0yOTkxLVx0fVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYz02NjQ9c3RhdGljIHZvaWQgZXh0NF9mY19zdWJtaXRfYmgoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgYm9vbCBpc190YWlsKVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy02NzQtXHRzZXRfYnVmZmVyX3VwdG9kYXRlKGJoKTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYzo2NzU6XHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSB8IHdyaXRlX2ZsYWdzLCBiaF9lbmRfd3JpdGUpO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTY3Ni1cdEVYVDRfU0Ioc2IpLVx1MDAzZXNfZmNfYmggPSBOVUxMO1xuLS1cbmZzL2V4dDQvbW1wLmM9NDI9c3RhdGljIGludCB3cml0ZV9tbXBfYmxvY2tfdGhhd2VkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvZXh0NC9tbXAuYy00OC1cdGxvY2tfYnVmZmVyKGJoKTtcbmZzL2V4dDQvbW1wLmM6NDk6XHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSB8IFJFUV9TWU5DIHwgUkVRX01FVEEgfCBSRVFfUFJJTyxcbmZzL2V4dDQvbW1wLmMtNTAtXHRcdFx0YmhfZW5kX3dyaXRlKTtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MTYzPXN0YXRpYyBpbmxpbmUgdm9pZCBfX2V4dDRfcmVhZF9iaChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BfZmxhZ3MsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTE4MC1cdFx0ZW5kX2lvID0gYmhfZW5kX3JlYWQ7XG5mcy9leHQ0L3N1cGVyLmM6MTgxOlx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCB8IG9wX2ZsYWdzLCBlbmRfaW8pO1xuZnMvZXh0NC9zdXBlci5jLTE4Mi19XG4tLVxuZnMvZXh0NC9zdXBlci5jPTYzMjU9c3RhdGljIGludCBleHQ0X2NvbW1pdF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy02MzU2LVx0Y2xlYXJfYnVmZmVyX2RpcnR5KHNiaCk7XG5mcy9leHQ0L3N1cGVyLmM6NjM1NzpcdGJoX3N1Ym1pdChzYmgsIFJFUV9PUF9XUklURSB8IFJFUV9TWU5DIHxcbmZzL2V4dDQvc3VwZXIuYy02MzU4LVx0XHQgICh0ZXN0X29wdChzYiwgQkFSUklFUikgPyBSRVFfRlVBIDogMCksIGJoX2VuZF93cml0ZSk7XG4tLVxuZnMvZ2ZzMi9ibWFwLmM9Mjk3PXN0YXRpYyB2b2lkIGdmczJfbWV0YXBhdGhfcmEoc3RydWN0IGdmczJfZ2xvY2sgKmdsLCBfX2JlNjQgKnN0YXJ0LCBfX2JlNjQgKmVuZClcbi0tXG5mcy9nZnMyL2JtYXAuYy0zMDktXHRcdFx0aWYgKCFidWZmZXJfdXB0b2RhdGUocmFiaCkpIHtcbmZzL2dmczIvYm1hcC5jOjMxMDpcdFx0XHRcdGJoX3N1Ym1pdChyYWJoLFxuZnMvZ2ZzMi9ibWFwLmMtMzExLVx0XHRcdFx0XHRSRVFfT1BfUkVBRCB8IFJFUV9SQUhFQUQgfCBSRVFfTUVUQSB8XG4tLVxuZnMvZ2ZzMi9kaXIuYz0xNDkyPXN0YXRpYyB2b2lkIGdmczJfZGlyX3JlYWRhaGVhZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBoc2l6ZSwgdTMyIGluZGV4LFxuLS1cbmZzL2dmczIvZGlyLmMtMTUyMC1cdFx0XHR9IGVsc2Uge1xuZnMvZ2ZzMi9kaXIuYzoxNTIxOlx0XHRcdFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCB8IFJFUV9SQUhFQUQgfFxuZnMvZ2ZzMi9kaXIuYy0xNTIyLVx0XHRcdFx0XHRcdFJFUV9NRVRBIHwgUkVRX1BSSU8sXG4tLVxuZnMvZ2ZzMi9tZXRhX2lvLmM9MzM9c3RhdGljIHZvaWQgZ2ZzMl9hc3BhY2Vfd3JpdGVfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5mcy9nZnMyL21ldGFfaW8uYy03Ny1cdFx0aWYgKGJ1ZmZlcl9hc3luY193cml0ZShiaCkpIHtcbmZzL2dmczIvbWV0YV9pby5jOjc4Olx0XHRcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgd3JpdGVfZmxhZ3MsXG5mcy9nZnMyL21ldGFfaW8uYy03OS1cdFx0XHRcdFx0YmhfZW5kX2FzeW5jX3dyaXRlKTtcbi0tXG5mcy9nZnMyL21ldGFfaW8uYz0yMDI9c3RhdGljIHZvaWQgZ2ZzMl9tZXRhX3JlYWRfZW5kaW8oc3RydWN0IGJpbyAqYmlvKVxuLS1cbmZzL2dmczIvbWV0YV9pby5jLTIyNC0gKiBTdWJtaXQgc2V2ZXJhbCBjb25zZWN1dGl2ZSBidWZmZXIgaGVhZCBJL08gcmVxdWVzdHMgYXMgYSBzaW5nbGUgYmlvIEkvT1xuZnMvZ2ZzMi9tZXRhX2lvLmM6MjI1OiAqIHJlcXVlc3QuICAoU2VlIGJoX3N1Ym1pdC4pXG5mcy9nZnMyL21ldGFfaW8uYy0yMjYtICovXG4tLVxuZnMvamJkMi9jb21taXQuYz0xMTQ9c3RhdGljIGludCBqb3VybmFsX3N1Ym1pdF9jb21taXRfcmVjb3JkKGpvdXJuYWxfdCAqam91cm5hbCxcbi0tXG5mcy9qYmQyL2NvbW1pdC5jLTE1NC1cbmZzL2piZDIvY29tbWl0LmM6MTU1Olx0Ymhfc3VibWl0KGJoLCB3cml0ZV9mbGFncywgam91cm5hbF9lbmRfYnVmZmVyX2lvX3N5bmMpO1xuZnMvamJkMi9jb21taXQuYy0xNTYtXHQqY2JoID0gYmg7XG4tLVxuZnMvamJkMi9jb21taXQuYz0zNzY9dm9pZCBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uKGpvdXJuYWxfdCAqam91cm5hbClcbi0tXG5mcy9qYmQyL2NvbW1pdC5jLTc1MC1cdFx0XHRcdHNldF9idWZmZXJfdXB0b2RhdGUoYmgpO1xuZnMvamJkMi9jb21taXQuYzo3NTE6XHRcdFx0XHRiaF9zdWJtaXQoYmgsXG5mcy9qYmQyL2NvbW1pdC5jLTc1Mi1cdFx0XHRcdFx0UkVRX09QX1dSSVRFIHwgSkJEMl9KT1VSTkFMX1JFUV9GTEFHUyxcbi0tXG5mcy9qYmQyL2pvdXJuYWwuYz0xNzg4PXN0YXRpYyBpbnQgamJkMl93cml0ZV9zdXBlcmJsb2NrKGpvdXJuYWxfdCAqam91cm5hbCwgYmxrX29wZl90IHdyaXRlX2ZsYWdzKVxuLS1cbmZzL2piZDIvam91cm5hbC5jLTE4MjYtXHRcdHNiLVx1MDAzZXNfY2hlY2tzdW0gPSBqYmQyX3N1cGVyYmxvY2tfY3N1bShzYik7XG5mcy9qYmQyL2pvdXJuYWwuYzoxODI3Olx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfV1JJVEUgfCB3cml0ZV9mbGFncywgYmhfZW5kX3dyaXRlKTtcbmZzL2piZDIvam91cm5hbC5jLTE4MjgtXHR3YWl0X29uX2J1ZmZlcihiaCk7XG4tLVxuZnMvbmlsZnMyL2J0bm9kZS5jPTg3PWludCBuaWxmc19idG5vZGVfc3VibWl0X2Jsb2NrKHN0cnVjdCBhZGRyZXNzX3NwYWNlICpidG5jLCBfX3U2NCBibG9ja25yLFxuLS1cbmZzL25pbGZzMi9idG5vZGUuYy0xMzYtXHRiaC1cdTAwM2ViX2Jsb2NrbnIgPSBwYmxvY2tucjsgLyogc2V0IGJsb2NrIGFkZHJlc3MgZm9yIHJlYWQgKi9cbmZzL25pbGZzMi9idG5vZGUuYzoxMzc6XHRiaF9zdWJtaXQoYmgsIG9wZiwgYmhfZW5kX3JlYWQpO1xuZnMvbmlsZnMyL2J0bm9kZS5jLTEzOC1cdGJoLVx1MDAzZWJfYmxvY2tuciA9IGJsb2NrbnI7IC8qIHNldCBiYWNrIHRvIHRoZSBnaXZlbiBibG9jayBhZGRyZXNzICovXG4tLVxuZnMvbmlsZnMyL2djaW5vZGUuYz01NT1pbnQgbmlsZnNfZ2NjYWNoZV9zdWJtaXRfcmVhZF9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHNlY3Rvcl90IGJsa29mZixcbi0tXG5mcy9uaWxmczIvZ2Npbm9kZS5jLTg1LVx0YmgtXHUwMDNlYl9ibG9ja25yID0gcGJuO1xuZnMvbmlsZnMyL2djaW5vZGUuYzo4NjpcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1JFQUQsIGJoX2VuZF9yZWFkKTtcbmZzL25pbGZzMi9nY2lub2RlLmMtODctXHRpZiAodmJuKVxuLS1cbmZzL25pbGZzMi9tZHQuYz0xMTY9bmlsZnNfbWR0X3N1Ym1pdF9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBsb25nIGJsa29mZiwgYmxrX29wZl90IG9wZixcbi0tXG5mcy9uaWxmczIvbWR0LmMtMTUwLVxuZnMvbmlsZnMyL21kdC5jOjE1MTpcdGJoX3N1Ym1pdChiaCwgb3BmLCBiaF9lbmRfcmVhZCk7XG5mcy9uaWxmczIvbWR0LmMtMTUyLVx0cmV0ID0gMDtcbi0tXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jPTM4PWludCBvY2ZzMl93cml0ZV9ibG9jayhzdHJ1Y3Qgb2NmczJfc3VwZXIgKm9zYiwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCxcbi0tXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jLTY0LVxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYzo2NTpcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFLCBiaF9lbmRfd3JpdGUpO1xuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYy02Ni1cbi0tXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jPTg5PWludCBvY2ZzMl9yZWFkX2Jsb2Nrc19zeW5jKHN0cnVjdCBvY2ZzMl9zdXBlciAqb3NiLCB1NjQgYmxvY2ssXG4tLVxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYy0xNDctXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jOjE0ODpcdFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCwgYmhfZW5kX3JlYWQpO1xuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYy0xNDktXHR9XG4tLVxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYz0xOTE9aW50IG9jZnMyX3JlYWRfYmxvY2tzKHN0cnVjdCBvY2ZzMl9jYWNoaW5nX2luZm8gKmNpLCB1NjQgYmxvY2ssIGludCBucixcbi0tXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jLTMyNS1cdFx0XHRcdHNldF9idWZmZXJfbmVlZHNfdmFsaWRhdGUoYmgpO1xuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYzozMjY6XHRcdFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCwgYmhfZW5kX3JlYWQpO1xuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYy0zMjctXHRcdFx0Y29udGludWU7XG4tLVxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYz00MjU9aW50IG9jZnMyX3dyaXRlX3N1cGVyX29yX2JhY2t1cChzdHJ1Y3Qgb2NmczJfc3VwZXIgKm9zYixcbi0tXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jLTQ0Ni1cdG9jZnMyX2NvbXB1dGVfbWV0YV9lY2Mob3NiLVx1MDAzZXNiLCBiaC1cdTAwM2ViX2RhdGEsIFx1MDAyNmRpLVx1MDAzZWlfY2hlY2spO1xuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYzo0NDc6XHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSwgYmhfZW5kX3dyaXRlKTtcbmZzL29jZnMyL2J1ZmZlcl9oZWFkX2lvLmMtNDQ4LVxuLS1cbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaD00OD1zdHJ1Y3QgYWRkcmVzc19zcGFjZTtcbi0tXG5pbmNsdWRlL2xpbnV4L2J1ZmZlcl9oZWFkLmgtNTYtICogYSBmb2xpbyAodmlhIGEgZm9saW9fbWFwcGluZykgYW5kIGZvciB3cmFwcGluZyBiaW8gc3VibWlzc2lvblxuaW5jbHVkZS9saW51eC9idWZmZXJfaGVhZC5oOjU3OiAqIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMgKGUuZy4gYmhfc3VibWl0KS5cbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaC01OC0gKi9cbi0tXG5pbmNsdWRlL2xpbnV4L2J1ZmZlcl9oZWFkLmg9MjMwPWJvb2wgYmlvX2VuZGlvX2JoKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGJ1ZmZlcl9oZWFkICoqYmhwKTtcbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaC0yMzEtXG5pbmNsdWRlL2xpbnV4L2J1ZmZlcl9oZWFkLmg6MjMyOi8qIENvbXBsZXRpb24gcm91dGluZXMgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gYmhfc3VibWl0KCkgKi9cbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaC0yMzMtdm9pZCBiaF9lbmRfcmVhZChzdHJ1Y3QgYmlvICpiaW8pO1xuLS1cbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaD0yNjU9dm9pZCB3cml0ZV9kaXJ0eV9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgYmxrX29wZl90IG9wX2ZsYWdzKTtcbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaDoyNjY6dm9pZCBiaF9zdWJtaXQoc3RydWN0IGJ1ZmZlcl9oZWFkICosIGJsa19vcGZfdCwgYmlvX2VuZF9pb190KTtcbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaC0yNjctdm9pZCB3cml0ZV9ib3VuZGFyeV9ibG9jayhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxuLS1cbm1tL3Ztc2Nhbi5jPTEwNzg9c3RhdGljIHVuc2lnbmVkIGludCBzaHJpbmtfZm9saW9fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LFxuLS1cbm1tL3Ztc2Nhbi5jLTE0NzEtXHRcdCAqIFRoaXMgaGFwcGVucyBpZiB0aGUgYnVmZmVycyB3ZXJlIHdyaXR0ZW4gb3V0IGRpcmVjdGx5LFxubW0vdm1zY2FuLmM6MTQ3MjpcdFx0ICogd2l0aCBiaF9zdWJtaXQoKS4gZXh0MyB3aWxsIGRvIHRoaXMsIGFzIHdlbGwgYXNcbm1tL3Ztc2Nhbi5jLTE0NzMtXHRcdCAqIHRoZSBibG9ja2RldiBtYXBwaW5nLiAgZmlsZW1hcF9yZWxlYXNlX2ZvbGlvKCkgd2lsbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODMyCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IEV2YWx1YXRpb246IGZzL2J1ZmZlci5jOl9fYmhfc3VibWl0KCkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IHBvaW50cyB0b3dhcmRzIGBmcy9idWZmZXIuY2AgYW5kIHNwZWNpZmljYWxseSBgX19iaF9zdWJtaXQoKWAgYXMgYSBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXQuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgdG91Y2hlZCBkdXJpbmcgYnVmZmVyIHN1Ym1pc3Npb25zIHRocm91Z2ggYF9fYmhfc3VibWl0KClgIGluIHZhcmlvdXMgYnVmZmVyLWhlYWQtYmFzZWQgZmlsZXN5c3RlbXMgKGV4dDQsIGdmczIsIG5pbGZzMiwgb2NmczIsIGFuZCBvdGhlcnMsIGFsb25nIHdpdGggZ2VuZXJpYyBibG9jayBidWZmZXIgb3BlcmF0aW9ucyBsaWtlIGBfX2JyZWFkYCwgYF9fc3luY19kaXJ0eV9idWZmZXJgLCBldGMuKSBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBpbnRlcmVzdGluZy4gSXQmIzM5O3MgY29yZSBWRlMvYmxvY2sgYnVmZmVyIGxheWVyIGNvZGUsIHNvIHRoYXQmIzM5O3MgYSBkZWZpbml0ZSAmIzM0O3llcyYjMzQ7IG9uIHRoZSAmIzM0O2lzIGl0IHdvcnRoIGZ1enppbmc/JiMzNDsgcXVlc3Rpb24uIFRoaXMgaXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUga2VybmVsIGNvZGUsIGFuZCB3ZSBhbGwga25vdyBob3cgbXVjaCB0aGF0IGNhbiBiaXRlIHlvdS4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgZm9jdXMgc3ltYm9scy4gYF9fYmhfc3VibWl0YCBpcyBzdGF0aWMgd2l0aGluIGBmcy9idWZmZXIuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCYjMzk7cyBjYWxsZWQgYW5kIGlmIHRoZSBjb21waWxlciBpbmxpbmVzIGl0LiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgYmhfc3VibWl0YCB3aGljaCBpcyBleHBvcnRlZCwgYW5kIGFsc28gZnJvbSBgX19ibG9ja193cml0ZV9mdWxsX2ZvbGlvYC4gVGhhdCBtYWtlcyBgYmhfc3VibWl0YCBhbmQgYF9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb2AgZ29vZCBmb2N1cyBzeW1ib2xzIHRvby4gV2UmIzM5O2xsIGluY2x1ZGUgYF9fYmhfc3VibWl0YCwgYGJoX3N1Ym1pdGAsIGBfX2Jsb2NrX3dyaXRlX2Z1bGxfZm9saW9gLCBgd3JpdGVfZGlydHlfYnVmZmVyYCwgYF9fc3luY19kaXJ0eV9idWZmZXJgLCBhbmQgYF9fYmhfcmVhZGAgc2luY2UgdGhleSBhbGwgc2VlbSByZWxldmFudC4gQnV0IHdhaXQsIEkgbmVlZCB0byBwcmlvcml0aXplLCB3aGF0JiMzOTtzIG1vc3Qgc3BlY2lmaWMgYW5kIHVuaXF1ZT8gYGJoX3N1Ym1pdGAgaXMgYSBkaXJlY3QgZW50cnkgcG9pbnQsIGJ1dCBgX19iaF9zdWJtaXRgIGlzIHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzIGRpcmVjdGx5IG1vZGlmaWVkLCBhbmQgYF9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb2AgaXMgYW5vdGhlciBkaXJlY3QgY2FsbGVyLgoKTGFzdGx5LCBhbnkgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXM/IGBmcy9idWZmZXIuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JMT0NLYCBpcyBlbmFibGVkLCBhbmQgYnVmZmVyX2hlYWQgc3VwcG9ydCBpcyBlc3NlbnRpYWwgZm9yIGJsb2NrIGxheWVycyBhbmQgYmxvY2stYmFzZWQgZmlsZXN5c3RlbXMsIHNvIHRoYXTigJlzIGVzc2VudGlhbGx5IGEgZ2l2ZW4uIEkmIzM5O2xsIGRvdWJsZS1jaGVjayBgZnMvTWFrZWZpbGVgIHRvIGNvbmZpcm0sIGJ1dCBJJiMzOTttIHByZXR0eSBjb25maWRlbnQgd2UmIzM5O3JlIGdvb2QgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J1ZmZlclxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvTWFrZWZpbGU9MTA9b2JqLXkgOj1cdG9wZW4ubyByZWFkX3dyaXRlLm8gZmlsZV90YWJsZS5vIHN1cGVyLm8gXFxcbi0tXG5mcy9NYWtlZmlsZS0yMC1cbmZzL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19CVUZGRVJfSEVBRClcdCYjNDM7PSBidWZmZXIubyBtcGFnZS5vXG5mcy9NYWtlZmlsZS0yMi1vYmotJChDT05GSUdfUFJPQ19GUylcdFx0JiM0Mzs9IHByb2NfbmFtZXNwYWNlLm9cbi0tXG5mcy9ocGZzL01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX0hQRlNfRlMpICYjNDM7PSBocGZzLm9cbmZzL2hwZnMvTWFrZWZpbGUtNy1cbmZzL2hwZnMvTWFrZWZpbGU6ODpocGZzLW9ianMgOj0gYWxsb2MubyBhbm9kZS5vIGJ1ZmZlci5vIGRlbnRyeS5vIGRpci5vIGRub2RlLm8gZWEubyBmaWxlLm8gXFxcbmZzL2hwZnMvTWFrZWZpbGUtOS1cdCAgICAgaW5vZGUubyBtYXAubyBuYW1lLm8gbmFtZWkubyBzdXBlci5vXG4tLVxuZnMvbmV0ZnMvTWFrZWZpbGU9Mz1uZXRmcy15IDo9IFxcXG4tLVxuZnMvbmV0ZnMvTWFrZWZpbGUtMTYtXHRyZWFkX3NpbmdsZS5vIFxcXG5mcy9uZXRmcy9NYWtlZmlsZToxNzpcdHJvbGxpbmdfYnVmZmVyLm8gXFxcbmZzL25ldGZzL01ha2VmaWxlLTE4LVx0d3JpdGVfY29sbGVjdC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDM5CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBDT05GSUdfQlVGRkVSX0hFQURgKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGNoZWNrIGBDT05GSUdfQlVGRkVSX0hFQURgIGluIHRoZSBLY29uZmlnLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBvcHRpb24gaW5mbHVlbmNlcyB0aGUgc3lzdGVtLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBkaXJlY3Rpb24gdGhpbmdzIGFyZSBoZWFkaW5nIHdpdGggbW9kZXJuIGZpbGVzeXN0ZW1zIGFuZCBwb3RlbnRpYWwgZm9yIHJlbW92aW5nIGl0IGVudGlyZWx5LiBJIGtub3cgdGhlcmUmIzM5O3MgYSBkZWxpY2F0ZSBiYWxhbmNlIGhlcmUgYmV0d2VlbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBhbmQgYXJjaGl0ZWN0dXJhbCBzaW1wbGlmaWNhdGlvbi4gSSYjMzk7bSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGlmIGFueSByZWNlbnQgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSB0byBpdCAtIHBlcmhhcHMgdGhlcmUmIzM5O3MgYSBtb3ZlIHRvd2FyZCBkZXByZWNhdGlvbiwgb3IgbWF5YmUgc29tZSBuZXcgZGVwZW5kZW5jaWVzIGhhdmUgZW1lcmdlZC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaXRzIGN1cnJlbnQgc3RhdGUgYW5kIGl0cyBmdXR1cmUgcm9sZS4gVGhlIGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgaXRzIGltcG9ydGFuY2UgcmVsYXRpdmUgdG8gbW9kZXJuIGZlYXR1cmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlVGRkVSX0hFQUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZz0yMj1jb25maWcgRlNfU1RBQ0tcbi0tXG5mcy9LY29uZmlnLTI0LVxuZnMvS2NvbmZpZzoyNTpjb25maWcgQlVGRkVSX0hFQURcbmZzL0tjb25maWctMjYtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzA2CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYEJVRkZFUl9IRUFEYCB2cy4gYEJMT0NLYCBTZWxlY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgbG9naWMgdGhhdCBkZWNpZGVzIHdoZXRoZXIgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgQlVGRkVSX0hFQURgIG9yIGBCTE9DS2AuIEkga25vdyB0aGVzZSBhcmUgZnVuZGFtZW50YWwgZGF0YSBzdHJ1Y3R1cmVzLCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMgdG8gZGlzayBJL08sIHNvIHVuZGVyc3RhbmRpbmcgdGhlIHNlbGVjdGlvbiBjcml0ZXJpYSBpcyBjcml0aWNhbC4gSSYjMzk7bSBhc3N1bWluZyB0aGVyZSYjMzk7cyBzb21lIGNvbmRpdGlvbmFsIGxvZ2ljIGluIGhlcmUuIElzIGl0IGJhc2VkIG9uIHRoZSBmaWxlc3lzdGVtIHR5cGU/IEFyZSB3ZSBkZWFsaW5nIHdpdGggY2FjaGVkIGRhdGEgdmVyc3VzIGRpcmVjdCBJL08/IE9yIG1heWJlIGl0IGRlcGVuZHMgb24gdGhlIGJsb2NrIHNpemUgb3Igc2VjdG9yIHNpemUgYmVpbmcgYWNjZXNzZWQ/IEl0IGNvdWxkIGV2ZW4gYmUgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgb3BlcmF0aW9uIGJlaW5nIHBlcmZvcm1lZCDigJMgcmVhZCwgd3JpdGUsIG1ldGFkYXRhIGFjY2VzcywgZXRjLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBjb250cm9sIGZsb3cgdG8gc2VlIHdoYXQgdHJpZ2dlcnMgb25lIGNob2ljZSBvdmVyIHRoZSBvdGhlci4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55IGNvbXBhcmlzb24sIGFzc2lnbm1lbnQsIG9yIGZ1bmN0aW9uIGNhbGwgdGhhdCBoaW5nZXMgb24gd2hldGhlciBgQlVGRkVSX0hFQURgIG9yIGBCTE9DS2AgaXMgdWx0aW1hdGVseSB1c2VkLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5IGludGVyYWN0LiBBcmUgdGhleSBtdXR1YWxseSBleGNsdXNpdmUsIG9yIGNhbiB0aGV5IGJlIHVzZWQgaW4gY29uanVuY3Rpb24/IEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjbGVhciBkZWxpbmVhdGlvbiBiZXR3ZWVuIHRoZSB0d28sIG9yIHBlcmhhcHMgYSBtb3JlIG51YW5jZWQgcmVsYXRpb25zaGlwLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzIGFuZCBmaW5kIHRob3NlIGNvbmRpdGlvbmFsIGJyYW5jaGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgQlVGRkVSX0hFQUQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZC9LY29uZmlnPTE1PWNvbmZpZyBCTEtfREVWX01EXG4tLVxuZHJpdmVycy9tZC9LY29uZmlnLTE3LVx0c2VsZWN0IEJMT0NLX0hPTERFUl9ERVBSRUNBVEVEIGlmIFNZU0ZTXG5kcml2ZXJzL21kL0tjb25maWc6MTg6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmRyaXZlcnMvbWQvS2NvbmZpZy0xOS1cdCMgQkxPQ0tfTEVHQUNZX0FVVE9MT0FEIHJlcXVpcmVtZW50IHNob3VsZCBiZSByZW1vdmVkXG4tLVxuZnMvYWRmcy9LY29uZmlnPTI9Y29uZmlnIEFERlNfRlNcbi0tXG5mcy9hZGZzL0tjb25maWctNC1cdGRlcGVuZHMgb24gQkxPQ0tcbmZzL2FkZnMvS2NvbmZpZzo1Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9hZGZzL0tjb25maWctNi1cdGhlbHBcbi0tXG5mcy9hZmZzL0tjb25maWc9Mj1jb25maWcgQUZGU19GU1xuLS1cbmZzL2FmZnMvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBCTE9DS1xuZnMvYWZmcy9LY29uZmlnOjU6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL2FmZnMvS2NvbmZpZy02LVx0c2VsZWN0IExFR0FDWV9ESVJFQ1RfSU9cbi0tXG5mcy9iZWZzL0tjb25maWc9Mj1jb25maWcgQkVGU19GU1xuLS1cbmZzL2JlZnMvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBCTE9DS1xuZnMvYmVmcy9LY29uZmlnOjU6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL2JlZnMvS2NvbmZpZy02LVx0c2VsZWN0IE5MU1xuLS1cbmZzL2Jmcy9LY29uZmlnPTI9Y29uZmlnIEJGU19GU1xuLS1cbmZzL2Jmcy9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEJMT0NLXG5mcy9iZnMvS2NvbmZpZzo1Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9iZnMvS2NvbmZpZy02LVx0aGVscFxuLS1cbmZzL2V4ZmF0L0tjb25maWc9Mz1jb25maWcgRVhGQVRfRlNcbmZzL2V4ZmF0L0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O2V4RkFUIGZpbGVzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuZnMvZXhmYXQvS2NvbmZpZzo1Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9leGZhdC9LY29uZmlnLTYtXHRzZWxlY3QgTkxTXG4tLVxuZnMvZXh0Mi9LY29uZmlnPTI9Y29uZmlnIEVYVDJfRlNcbmZzL2V4dDIvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U2Vjb25kIGV4dGVuZGVkIGZzIHN1cHBvcnQgKERFUFJFQ0FURUQpXCYjMzQ7XG5mcy9leHQyL0tjb25maWc6NDpcdHNlbGVjdCBCVUZGRVJfSEVBRFxuZnMvZXh0Mi9LY29uZmlnLTUtXHRzZWxlY3QgRlNfSU9NQVBcbi0tXG5mcy9leHQ0L0tjb25maWc9Mj1jb25maWcgRVhUNF9GU1xuZnMvZXh0NC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtUaGUgRXh0ZW5kZWQgNCAoZXh0NCkgZmlsZXN5c3RlbVwmIzM0O1xuZnMvZXh0NC9LY29uZmlnOjQ6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL2V4dDQvS2NvbmZpZy01LVx0c2VsZWN0IEpCRDJcbi0tXG5mcy9mMmZzL0tjb25maWc9Mj1jb25maWcgRjJGU19GU1xuLS1cbmZzL2YyZnMvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBCTE9DS1xuZnMvZjJmcy9LY29uZmlnOjU6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL2YyZnMvS2NvbmZpZy02LVx0c2VsZWN0IE5MU1xuLS1cbmZzL2ZhdC9LY29uZmlnPTI9Y29uZmlnIEZBVF9GU1xuZnMvZmF0L0tjb25maWctMy1cdHRyaXN0YXRlXG5mcy9mYXQvS2NvbmZpZzo0Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9mYXQvS2NvbmZpZy01LVx0c2VsZWN0IE5MU1xuLS1cbmZzL2dmczIvS2NvbmZpZz0yPWNvbmZpZyBHRlMyX0ZTXG5mcy9nZnMyL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dGUzIgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuZnMvZ2ZzMi9LY29uZmlnOjQ6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL2dmczIvS2NvbmZpZy01LVx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuLS1cbmZzL2hmcy9LY29uZmlnPTI9Y29uZmlnIEhGU19GU1xuLS1cbmZzL2hmcy9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEJMT0NLXG5mcy9oZnMvS2NvbmZpZzo1Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9oZnMvS2NvbmZpZy02LVx0c2VsZWN0IE5MU1xuLS1cbmZzL2hmc3BsdXMvS2NvbmZpZz0yPWNvbmZpZyBIRlNQTFVTX0ZTXG4tLVxuZnMvaGZzcGx1cy9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEJMT0NLXG5mcy9oZnNwbHVzL0tjb25maWc6NTpcdHNlbGVjdCBCVUZGRVJfSEVBRFxuZnMvaGZzcGx1cy9LY29uZmlnLTYtXHRzZWxlY3QgTkxTXG4tLVxuZnMvaHBmcy9LY29uZmlnPTI9Y29uZmlnIEhQRlNfRlNcbi0tXG5mcy9ocGZzL0tjb25maWctNC1cdGRlcGVuZHMgb24gQkxPQ0tcbmZzL2hwZnMvS2NvbmZpZzo1Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9ocGZzL0tjb25maWctNi1cdHNlbGVjdCBGU19JT01BUFxuLS1cbmZzL2lzb2ZzL0tjb25maWc9Mj1jb25maWcgSVNPOTY2MF9GU1xuZnMvaXNvZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SVNPIDk2NjAgQ0RST00gZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuZnMvaXNvZnMvS2NvbmZpZzo0Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9pc29mcy9LY29uZmlnLTUtXHRoZWxwXG4tLVxuZnMvamZzL0tjb25maWc9Mj1jb25maWcgSkZTX0ZTXG5mcy9qZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SkZTIGZpbGVzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuZnMvamZzL0tjb25maWc6NDpcdHNlbGVjdCBCVUZGRVJfSEVBRFxuZnMvamZzL0tjb25maWctNS1cdHNlbGVjdCBOTFNcbi0tXG5mcy9taW5peC9LY29uZmlnPTI9Y29uZmlnIE1JTklYX0ZTXG4tLVxuZnMvbWluaXgvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBCTE9DS1xuZnMvbWluaXgvS2NvbmZpZzo1Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9taW5peC9LY29uZmlnLTYtXHRoZWxwXG4tLVxuZnMvbmlsZnMyL0tjb25maWc9Mj1jb25maWcgTklMRlMyX0ZTXG5mcy9uaWxmczIvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TklMRlMyIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbmZzL25pbGZzMi9LY29uZmlnOjQ6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL25pbGZzMi9LY29uZmlnLTUtXHRzZWxlY3QgQ1JDMzJcbi0tXG5mcy9udGZzMy9LY29uZmlnPTI9Y29uZmlnIE5URlMzX0ZTXG4tLVxuZnMvbnRmczMvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiAhTlRGU19GUyB8fCBtXG5mcy9udGZzMy9LY29uZmlnOjU6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL250ZnMzL0tjb25maWctNi1cdHNlbGVjdCBOTFNcbi0tXG5mcy9vY2ZzMi9LY29uZmlnPTI9Y29uZmlnIE9DRlMyX0ZTXG4tLVxuZnMvb2NmczIvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBTWVNGUyBcdTAwMjZcdTAwMjYgQ09ORklHRlNfRlNcbmZzL29jZnMyL0tjb25maWc6NTpcdHNlbGVjdCBCVUZGRVJfSEVBRFxuZnMvb2NmczIvS2NvbmZpZy02LVx0c2VsZWN0IEpCRDJcbi0tXG5mcy9vbWZzL0tjb25maWc9Mj1jb25maWcgT01GU19GU1xuLS1cbmZzL29tZnMvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBCTE9DS1xuZnMvb21mcy9LY29uZmlnOjU6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL29tZnMvS2NvbmZpZy02LVx0c2VsZWN0IENSQ19JVFVfVFxuLS1cbmZzL3FueDQvS2NvbmZpZz0yPWNvbmZpZyBRTlg0RlNfRlNcbi0tXG5mcy9xbng0L0tjb25maWctNC1cdGRlcGVuZHMgb24gQkxPQ0tcbmZzL3FueDQvS2NvbmZpZzo1Olx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9xbng0L0tjb25maWctNi1cdGhlbHBcbi0tXG5mcy9xbng2L0tjb25maWc9Mj1jb25maWcgUU5YNkZTX0ZTXG4tLVxuZnMvcW54Ni9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEJMT0NLIFx1MDAyNlx1MDAyNiBDUkMzMlxuZnMvcW54Ni9LY29uZmlnOjU6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL3FueDYvS2NvbmZpZy02LVx0aGVscFxuLS1cbmZzL3JvbWZzL0tjb25maWc9NTc9Y29uZmlnIFJPTUZTX09OX0JMT0NLXG4tLVxuZnMvcm9tZnMvS2NvbmZpZy01OS1cdGRlZmF1bHQgeSBpZiBST01GU19CQUNLRURfQllfQkxPQ0sgfHwgUk9NRlNfQkFDS0VEX0JZX0JPVEhcbmZzL3JvbWZzL0tjb25maWc6NjA6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL3JvbWZzL0tjb25maWctNjEtXG4tLVxuZnMvdWRmL0tjb25maWc9Mj1jb25maWcgVURGX0ZTXG5mcy91ZGYvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VURGIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbmZzL3VkZi9LY29uZmlnOjQ6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL3VkZi9LY29uZmlnLTUtXHRzZWxlY3QgQ1JDX0lUVV9UXG4tLVxuZnMvdWZzL0tjb25maWc9Mj1jb25maWcgVUZTX0ZTXG4tLVxuZnMvdWZzL0tjb25maWctNC1cdGRlcGVuZHMgb24gQkxPQ0tcbmZzL3Vmcy9LY29uZmlnOjU6XHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL3Vmcy9LY29uZmlnLTYtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDgyCgkJCQkJCQlvdXRwdXQ6IDEyNQoJCQkJCQkJdGhvdWdodHM6IDE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGaW5hbCBUaG91Z2h0cyBvbiB0aGUgQnVmZmVyIEhlYWQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBpdCYjMzk7cyBsb29raW5nIHByZXR0eSBzb2xpZC4gVGhlIGBCVUZGRVJfSEVBRGAgY29uY2VwdCBpcyBjbGVhcmx5IHNlbGVjdGVkIGFuZCB1c2VkIGFjcm9zcyBzZXZlcmFsIGtleSBmaWxlc3lzdGVtcyDigJMgYEVYVDRfRlNgLCBgRkFUX0ZTYCwgYW5kIHRoZSBsaWtlLiBUaGlzIHRlbGxzIG1lIHRoYXQgYEJVRkZFUl9IRUFEYCAoYW5kIHRoZSByZWxhdGVkIGBCTE9DS2AgY29uZmlndXJhdGlvbikgaXMgYWJzb2x1dGVseSB0aGUgcmlnaHQgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTGV0JiMzOTtzIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGNoZWNrbGlzdCBhZ2Fpbi4gUmVhY2hhYmlsaXR5IGlzIGNvbmZpcm1lZDsgYF9fYmhfc3VibWl0YCB3aXRoaW4gYGZzL2J1ZmZlci5jYCBpcyB0aGUgY2VudHJhbCBwb2ludCBoZXJlLCBhbmQgaXQmIzM5O3MgaW52b2tlZCBkdXJpbmcgZnVuZGFtZW50YWwgZmlsZXN5c3RlbSBvcGVyYXRpb25zLiBUaGF0JiMzOTtzIGEgc29saWQgJiMzNDt5ZXMmIzM0OyBmb3IgYFdvcnRoRnV6emluZ2AuIE91ciBgRm9jdXNTeW1ib2xzYCBhcmUgYXBwcm9wcmlhdGVseSBzY29wZWQsIHRhcmdldGluZyBgX19iaF9zdWJtaXRgLCBgYmhfc3VibWl0YCwgYW5kIGBfX2Jsb2NrX3dyaXRlX2Z1bGxfZm9saW9gLiBUaGVzZSBhbGwgbG9vayBsaWtlIGNyaXRpY2FsIGVudHJ5IHBvaW50cyBmb3IgYnVmZmVyIGhlYWQgaW50ZXJhY3Rpb25zLiBGaW5hbGx5LCBgRW5hYmxlQ29uZmlnc2A6IGBCVUZGRVJfSEVBRGAsIGBCTE9DS2AuLi4gY2hlY2suCgpFdmVyeXRoaW5nIGNoZWNrcyBvdXQuIEkmIzM5O20gc2F0aXNmaWVkLiBUaW1lIHRvIGdvIGFoZWFkIGFuZCBydW4gYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JVRkZFUl9IRUFEJiMzNDssCiAgICAmIzM0O0JMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19iaF9zdWJtaXQmIzM0OywKICAgICYjMzQ7Ymhfc3VibWl0JiMzNDssCiAgICAmIzM0O19fYmxvY2tfd3JpdGVfZnVsbF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gX19iaF9zdWJtaXQoKSBieSBjaGVja2luZyBpZiBiaC1cdTAwM2ViX2ZvbGlvIGlzIG5vbi1OVUxMIGJlZm9yZSBjYWxsaW5nIGZvbGlvX3Rlc3RfZHJvcGJlaGluZCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgYnVmZmVyIGhlYWQgSS9PIHN1Ym1pc3Npb24gbG9naWMgaW4gZnMvYnVmZmVyLmMsIHdoaWNoIGlzIGRpcmVjdGx5IHJlYWNoYWJsZSBieSBzdGFuZGFyZCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JVRkZFUl9IRUFEJiMzNDssCiAgICAmIzM0O0JMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19iaF9zdWJtaXQmIzM0OywKICAgICYjMzQ7Ymhfc3VibWl0JiMzNDssCiAgICAmIzM0O19fYmxvY2tfd3JpdGVfZnVsbF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gX19iaF9zdWJtaXQoKSBieSBjaGVja2luZyBpZiBiaC1cdTAwM2ViX2ZvbGlvIGlzIG5vbi1OVUxMIGJlZm9yZSBjYWxsaW5nIGZvbGlvX3Rlc3RfZHJvcGJlaGluZCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgYnVmZmVyIGhlYWQgSS9PIHN1Ym1pc3Npb24gbG9naWMgaW4gZnMvYnVmZmVyLmMsIHdoaWNoIGlzIGRpcmVjdGx5IHJlYWNoYWJsZSBieSBzdGFuZGFyZCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDM6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgTlVMTCBjaGVjayBmb3IgYGJoLVx1MDAzZWJfZm9saW9gIGJlZm9yZSBjYWxsaW5nIGBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtXHUwMDNlYl9mb2xpbylgIGluIGBfX2JoX3N1Ym1pdCgpYCB0byBwcmV2ZW50IGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gc3VibWl0dGluZyBidWZmZXIgaGVhZHMgdGhhdCBsYWNrIGFuIGFzc29jaWF0ZWQgZm9saW8gKGUuZy4gYnVmZmVycyBiYWNrZWQgYnkgYGJoLVx1MDAzZWJfZGF0YWApLlxuXG5UaGlzIGNoYW5nZSBhZGRyZXNzZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnLCB3aGljaCBpcyBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3Rpb24gLyBwYWdlIGZhdWx0IGhhbmRsZXJzIGFuZCBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIGRvZXMgbm90IHJlYWQgb3IgYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nL2ZpZWxkcyB0byB1c2Vyc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBidWZmZXIgbGVuZ3RoIGNhbGN1bGF0aW9ucy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDlmZWM5NWVjYmFiNjk3NGVhYTQxMTBlNzAyN2JiZDJkOTFmNzU4MmEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDAzOjAyOjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvYnVmZmVyLmMgYi9mcy9idWZmZXIuYwppbmRleCA0MjdkOGE4MTdjZDU2Li5mNDZmYTY0MTMwMzJkIDEwMDY0NAotLS0gYS9mcy9idWZmZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9idWZmZXIuYwpAQCAtMTEwNiw3ICYjNDM7MTEwNiw4IEBAIHN0YXRpYyB2b2lkIF9fYmhfc3VibWl0KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcGYsCiAKIAliaW8gPSBiaW9fYWxsb2MoYmgtJmd0O2JfYmRldiwgMSwgb3BmLCBHRlBfTk9JTyk7CiAKLQlpZiAoZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLSZndDtiX2ZvbGlvKSAmYW1wOyZhbXA7IG9wX2lzX3dyaXRlKG9wZikpCiYjNDM7CWlmIChiaC0mZ3Q7Yl9mb2xpbyAmYW1wOyZhbXA7IGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC0mZ3Q7Yl9mb2xpbykgJmFtcDsmYW1wOwomIzQzOwkgICAgb3BfaXNfd3JpdGUob3BmKSkKIAkJYmlvX3NldF9mbGFnKGJpbywgQklPX0NPTVBMRVRFX0lOX1RBU0spOwogCiAJaWYgKElTX0VOQUJMRUQoQ09ORklHX0ZTX0VOQ1JZUFRJT04pKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExNAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJ1ZmZlciBIZWFkIFN1Ym1pc3Npb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZnMvYnVmZmVyLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX2JoX3N1Ym1pdGAgZnVuY3Rpb24uIExldCYjMzk7cyBzZWUuLi4gaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBiaW8gYWxsb2NhdGlvbiBhbmQgc2V0dXAuIExvb2tzIGxpa2UgdGhlIGNvcmUgY2hhbmdlIGlzIGFuIGFkZGVkIGNoZWNrIHdpdGhpbiB0aGUgY29uZGl0aW9uYWwgdGhhdCBzZXRzIHRoZSBgQklPX0NPTVBMRVRFX0lOX1RBU0tgIGZsYWcuIEkgc2VlIGl0JiMzOTtzIGFkZGVkIGEgY2hlY2sgZm9yIGBiaC0mZ3Q7Yl9mb2xpb2AgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQuCgpPcmlnaW5hbGx5LCB0aGUgY29kZSBjaGVja2VkIGlmIGBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtJmd0O2JfZm9saW8pYCB3YXMgdHJ1ZSBhbmQgdGhlIG9wZXJhdGlvbiB3YXMgYSB3cml0ZS4gTm93LCBpdCBleHBsaWNpdGx5IGNoZWNrcyBpZiBgYmgtJmd0O2JfZm9saW9gIGlzIG5vbi1OVUxMICpiZWZvcmUqIGNhbGxpbmcgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZGAuIFRoaXMgaXMgYSBjbGFzc2ljIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBwcm90ZWN0aW9uLCBJIHByZXN1bWUuIFRoZXJlIG11c3QgaGF2ZSBiZWVuIHNvbWUgc2NlbmFyaW8gd2hlcmUgYGJoLSZndDtiX2ZvbGlvYCBjb3VsZCBiZSBOVUxMLCBsZWFkaW5nIHRvIGEgY3Jhc2ggb3IgdW5kZWZpbmVkIGJlaGF2aW9yIGlmIGBmb2xpb190ZXN0X2Ryb3BiZWhpbmRgIHdhcyBjYWxsZWQgb24gaXQgZGlyZWN0bHkuIEkmIzM5O2QgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvbnRleHRzIHdoZXJlIGBfX2JoX3N1Ym1pdGAgaXMgY2FsbGVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIHJvb3QgY2F1c2UgYW5kIHRoZSBjb25kaXRpb25zIHRoYXQgbWFrZSBgYmgtJmd0O2JfZm9saW9gIHBvdGVudGlhbGx5IE5VTEwuIFBlcmhhcHMgdGhlcmUmIzM5O3MgYSBuZXcgb3IgcHJvYmxlbWF0aWMgY29kZSBwYXRoLiBJdCYjMzk7cyBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZywgYW55d2F5LiBJJiMzOTttIGFzc3VtaW5nIHRoZSBpbnRlbnQgaXMgdG8gcHJldmVudCBhIGtlcm5lbCBwYW5pYyBvciBhIHNpbWlsYXIgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvYnVmZmVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwOTU6XHRcdEJVR19PTighYnVmZmVyX2xvY2tlZChiaCkpO1xuMTA5NjpcdFx0QlVHX09OKCFidWZmZXJfbWFwcGVkKGJoKSk7XG4xMDk3Olx0XHRCVUdfT04oYnVmZmVyX2RlbGF5KGJoKSk7XG4xMDk4Olx0XHRCVUdfT04oYnVmZmVyX3Vud3JpdHRlbihiaCkpO1xuMTA5OTpcdFxuMTEwMDpcdFx0c2V0X2J1ZmZlcl9yZXEoYmgpO1xuMTEwMTpcdFxuMTEwMjpcdFx0aWYgKGJ1ZmZlcl9tZXRhKGJoKSlcbjExMDM6XHRcdFx0b3BmIHw9IFJFUV9NRVRBO1xuMTEwNDpcdFx0aWYgKGJ1ZmZlcl9wcmlvKGJoKSlcbjExMDU6XHRcdFx0b3BmIHw9IFJFUV9QUklPO1xuMTEwNjpcdFxuMTEwNzpcdFx0YmlvID0gYmlvX2FsbG9jKGJoLVx1MDAzZWJfYmRldiwgMSwgb3BmLCBHRlBfTk9JTyk7XG4xMTA4Olx0XG4xMTA5Olx0XHRpZiAoYmgtXHUwMDNlYl9mb2xpbyBcdTAwMjZcdTAwMjYgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVx1MDAzZWJfZm9saW8pIFx1MDAyNlx1MDAyNlxuMTExMDpcdFx0ICAgIG9wX2lzX3dyaXRlKG9wZikpXG4xMTExOlx0XHRcdGJpb19zZXRfZmxhZyhiaW8sIEJJT19DT01QTEVURV9JTl9UQVNLKTtcbjExMTI6XHRcbjExMTM6XHRcdGlmIChJU19FTkFCTEVEKENPTkZJR19GU19FTkNSWVBUSU9OKSlcbjExMTQ6XHRcdFx0YnVmZmVyX3NldF9jcnlwdG9fY3R4KGJpbywgYmgsIEdGUF9OT0lPKTtcbjExMTU6XHRcbjExMTY6XHRcdGJpby1cdTAwM2ViaV9pdGVyLmJpX3NlY3RvciA9IGJoLVx1MDAzZWJfYmxvY2tuciAqIChiaC1cdTAwM2ViX3NpemUgXHUwMDNlXHUwMDNlIDkpO1xuMTExNzpcdFx0YmlvLVx1MDAzZWJpX3dyaXRlX2hpbnQgPSB3cml0ZV9oaW50O1xuMTExODpcdFxuMTExOTpcdFx0aWYgKGJoLVx1MDAzZWJfZm9saW8pXG4xMTIwOlx0XHRcdGJpb19hZGRfZm9saW9fbm9mYWlsKGJpbywgYmgtXHUwMDNlYl9mb2xpbywgYmgtXHUwMDNlYl9zaXplLFxuMTEyMTpcdFx0XHRcdFx0ICAgICBiaF9vZmZzZXQoYmgpKTtcbjExMjI6XHRcdGVsc2VcbjExMjM6XHRcdFx0YmlvX2FkZF92aXJ0X25vZmFpbChiaW8sIGJoLVx1MDAzZWJfZGF0YSwgYmgtXHUwMDNlYl9zaXplKTtcbjExMjQ6XHRcbjExMjU6XHRcdGJpby1cdTAwM2ViaV9lbmRfaW8gPSBlbmRfYmlvO1xuMTEyNjpcdFx0YmlvLVx1MDAzZWJpX3ByaXZhdGUgPSBiaDtcbjExMjc6XHRcbjExMjg6XHRcdC8qIFRha2UgY2FyZSBvZiBiaCYjMzk7cyB0aGF0IHN0cmFkZGxlIHRoZSBlbmQgb2YgdGhlIGRldmljZSAqL1xuMTEyOTpcdFx0Z3VhcmRfYmlvX2VvZChiaW8pO1xuMTEzMDpcdFxuMTEzMTpcdFx0aWYgKHdiYykge1xuMTEzMjpcdFx0XHR3YmNfaW5pdF9iaW8od2JjLCBiaW8pO1xuMTEzMzpcdFx0XHRpZiAoYmgtXHUwMDNlYl9mb2xpbylcbjExMzQ6XHRcdFx0XHR3YmNfYWNjb3VudF9jZ3JvdXBfb3duZXIod2JjLCBiaC1cdTAwM2ViX2ZvbGlvLCBiaC1cdTAwM2ViX3NpemUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzk5CgkJCQkJCQlvdXRwdXQ6IDE3MwoJCQkJCQkJdGhvdWdodHM6IDM4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSB3ZSBoYXZlIGEgZml4IGZvciBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYF9fYmhfc3VibWl0YC4gTXkgYW5hbHlzaXMgc2hvd3MgdGhhdCBgYmgtJmd0O2JfZm9saW9gICpjYW4qIGJlIE5VTEwsIGFuZCB0aGUgb3JpZ2luYWwgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLSZndDtiX2ZvbGlvKWAgY2FsbCwgZGlkbiYjMzk7dCBhY2NvdW50IGZvciB0aGF0IHBvc3NpYmlsaXR5LiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnLCBsZWFkaW5nIHRvIGEgcGFuaWMvY3Jhc2ggd2hlbiBgYmgtJmd0O2JfZm9saW9gIGlzIGluZGVlZCBOVUxMLiBUaGUgcGF0Y2ggY29ycmVjdGx5IGFkZHMgYSBOVUxMIGNoZWNrIGJlZm9yZSBkZXJlZmVyZW5jaW5nLCBtYWtpbmcgdGhlIGNvZGUgc2FmZTogYGJoLSZndDtiX2ZvbGlvICZhbXA7JmFtcDsgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLSZndDtiX2ZvbGlvKWAuIEdvb2QgY2F0Y2guCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgS01TQU4gaW1wbGljYXRpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgZG9lcyB0aGlzIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/IEFuZCB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyAmIzM0O25vLiYjMzQ7IFdlJiMzOTtyZSBub3QgYWxsb2NhdGluZyBuZXcgbWVtb3J5LCB0aGVyZSBhcmUgbm8gcmVhZHMgb3Igd3JpdGVzIHRvIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhpcyBpc24mIzM5O3QgYW4gaW5mby1sZWFrIGlzc3VlIHRvIHVzZXJzcGFjZSBlaXRoZXIuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzaW1wbGUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBhIHNpdHVhdGlvbiB0aGF0IHNob3VsZCBiZSBkZXRlY3RlZCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcywgbGlrZSB0aGUgT29wcy9wYW5pYyBhbmQgS0FTQU4uIEtNU0FOIGlzbiYjMzk7dCBkZXNpZ25lZCB0byBjYXRjaCB0aG9zZSBzdGFuZGFyZCBpc3N1ZXMuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBjaGVja2xpc3QgdG8gY29uZmlybSBteSBhc3Nlc3NtZW50LgoKMS4gIE5vIGtlcm5lbCBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UgaGVyZS4KMi4gIFRoZXJlJiMzOTtzIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gYGJoLSZndDtiX2ZvbGlvYCBpcyBhbiBleGlzdGluZyBmaWVsZCBpbiBgc3RydWN0IGJ1ZmZlcl9oZWFkYCwgYW5kIGl0JiMzOTtzIGluaXRpYWxpemVkLCBlaXRoZXIgdG8gcG9pbnQgdG8gYSBmb2xpbyBvciB0byBOVUxMLgozLiAgV2UmIzM5O3JlIG5vdCBhbGxvY2F0aW5nIG9yIGluaXRpYWxpemluZyBhbnkgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgaGVyZS4KNC4gIE5vIGJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RocyBhcmUgYmVpbmcgaGFuZGxlZCBpbiBhIHdheSB0aGF0IG1pZ2h0IGV4cG9zZSB1bmluaXRpYWxpemVkIGJ5dGVzIHRvIHN1cnJvdW5kaW5nIGNvZGUuCgpTbywgYWxsIGNyaXRlcmlhIGhhdmUgYmVlbiBtZXQuIEJhc2VkIG9uIGFsbCBvZiB0aGlzLCB0aGUgYE5lZWRzS01TQU5gIGlzIGBmYWxzZWAuIFRoaXMgaXMgYSBjbGFzc2ljIGNhc2Ugd2hlcmUgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyBhbmQgS0FTQU4gc2hvdWxkIGJlIHN1ZmZpY2llbnQsIGFuZCBLTVNBTiB3b3VsZCBiZSBvdmVya2lsbC4gSXQgbG9va3MgbGlrZSBzdGFuZGFyZCBkZWZlbnNlcyBhcmUgYWRlcXVhdGUgZm9yIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBOVUxMIGNoZWNrIGZvciBgYmgtXHUwMDNlYl9mb2xpb2AgYmVmb3JlIGNhbGxpbmcgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cdTAwM2ViX2ZvbGlvKWAgaW4gYF9fYmhfc3VibWl0KClgIHRvIHByZXZlbnQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBzdWJtaXR0aW5nIGJ1ZmZlciBoZWFkcyB0aGF0IGxhY2sgYW4gYXNzb2NpYXRlZCBmb2xpbyAoZS5nLiBidWZmZXJzIGJhY2tlZCBieSBgYmgtXHUwMDNlYl9kYXRhYCkuXG5cblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcsIHdoaWNoIGlzIGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdGlvbiAvIHBhZ2UgZmF1bHQgaGFuZGxlcnMgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgZG9lcyBub3QgcmVhZCBvciBicmFuY2ggb24gdW5pbml0aWFsaXplZCBtZW1vcnksIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIHRvIHVzZXJzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGJ1ZmZlciBsZW5ndGggY2FsY3VsYXRpb25zLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIE5VTEwgY2hlY2sgZm9yIGBiaC1cdTAwM2ViX2ZvbGlvYCBiZWZvcmUgY2FsbGluZyBgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVx1MDAzZWJfZm9saW8pYCBpbiBgX19iaF9zdWJtaXQoKWAgdG8gcHJldmVudCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIHN1Ym1pdHRpbmcgYnVmZmVyIGhlYWRzIHRoYXQgbGFjayBhbiBhc3NvY2lhdGVkIGZvbGlvIChlLmcuIGJ1ZmZlcnMgYmFja2VkIGJ5IGBiaC1cdTAwM2ViX2RhdGFgKS5cblxuVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1Zywgd2hpY2ggaXMgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0aW9uIC8gcGFnZSBmYXVsdCBoYW5kbGVycyBhbmQgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCByZWFkIG9yIGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSwgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9maWVsZHMgdG8gdXNlcnNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgYnVmZmVyIGxlbmd0aCBjYWxjdWxhdGlvbnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAzOjAyOjU5LjE0MTAwNjgwNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NjM4MDE4MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJVRkZFUl9IRUFEXCIsXG4gICAgXCJCTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYmhfc3VibWl0XCIsXG4gICAgXCJiaF9zdWJtaXRcIixcbiAgICBcIl9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIE5VTEwgY2hlY2sgZm9yIGBiaC1cXHUwMDNlYl9mb2xpb2AgYmVmb3JlIGNhbGxpbmcgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cXHUwMDNlYl9mb2xpbylgIGluIGBfX2JoX3N1Ym1pdCgpYCB0byBwcmV2ZW50IGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gc3VibWl0dGluZyBidWZmZXIgaGVhZHMgdGhhdCBsYWNrIGFuIGFzc29jaWF0ZWQgZm9saW8gKGUuZy4gYnVmZmVycyBiYWNrZWQgYnkgYGJoLVxcdTAwM2ViX2RhdGFgKS5cXG5cXG5UaGlzIGNoYW5nZSBhZGRyZXNzZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnLCB3aGljaCBpcyBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3Rpb24gLyBwYWdlIGZhdWx0IGhhbmRsZXJzIGFuZCBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIGRvZXMgbm90IHJlYWQgb3IgYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nL2ZpZWxkcyB0byB1c2Vyc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBidWZmZXIgbGVuZ3RoIGNhbGN1bGF0aW9ucy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gX19iaF9zdWJtaXQoKSBieSBjaGVja2luZyBpZiBiaC1cXHUwMDNlYl9mb2xpbyBpcyBub24tTlVMTCBiZWZvcmUgY2FsbGluZyBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoKS4gVGhpcyBtb2RpZmllcyBjb3JlIGJ1ZmZlciBoZWFkIEkvTyBzdWJtaXNzaW9uIGxvZ2ljIGluIGZzL2J1ZmZlci5jLCB3aGljaCBpcyBkaXJlY3RseSByZWFjaGFibGUgYnkgc3RhbmRhcmQgZmlsZXN5c3RlbSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMjo1OS4xNDEwMTI5NDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMDY1MTExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDlmZWM5NWVjYmFiNjk3NGVhYTQxMTBlNzAyN2JiZDJkOTFmNzU4MmFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAwMzowMjo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9idWZmZXIuYyBiL2ZzL2J1ZmZlci5jXFxuaW5kZXggNDI3ZDhhODE3Y2Q1Ni4uZjQ2ZmE2NDEzMDMyZCAxMDA2NDRcXG4tLS0gYS9mcy9idWZmZXIuY1xcbisrKyBiL2ZzL2J1ZmZlci5jXFxuQEAgLTExMDYsNyArMTEwNiw4IEBAIHN0YXRpYyB2b2lkIF9fYmhfc3VibWl0KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcGYsXFxuIFxcbiBcXHRiaW8gPSBiaW9fYWxsb2MoYmgtXFx1MDAzZWJfYmRldiwgMSwgb3BmLCBHRlBfTk9JTyk7XFxuIFxcbi1cXHRpZiAoZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVxcdTAwM2ViX2ZvbGlvKSBcXHUwMDI2XFx1MDAyNiBvcF9pc193cml0ZShvcGYpKVxcbitcXHRpZiAoYmgtXFx1MDAzZWJfZm9saW8gXFx1MDAyNlxcdTAwMjYgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVxcdTAwM2ViX2ZvbGlvKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgb3BfaXNfd3JpdGUob3BmKSlcXG4gXFx0XFx0YmlvX3NldF9mbGFnKGJpbywgQklPX0NPTVBMRVRFX0lOX1RBU0spO1xcbiBcXG4gXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0ZTX0VOQ1JZUFRJT04pKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMjo1OS43NzIzNTM2MTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI4ODM1NTM1ODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJVRkZFUl9IRUFEXCIsXG4gICAgXCJCTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYmhfc3VibWl0XCIsXG4gICAgXCJiaF9zdWJtaXRcIixcbiAgICBcIl9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBfX2JoX3N1Ym1pdCgpIGJ5IGNoZWNraW5nIGlmIGJoLVxcdTAwM2ViX2ZvbGlvIGlzIG5vbi1OVUxMIGJlZm9yZSBjYWxsaW5nIGZvbGlvX3Rlc3RfZHJvcGJlaGluZCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgYnVmZmVyIGhlYWQgSS9PIHN1Ym1pc3Npb24gbG9naWMgaW4gZnMvYnVmZmVyLmMsIHdoaWNoIGlzIGRpcmVjdGx5IHJlYWNoYWJsZSBieSBzdGFuZGFyZCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWZlYzk1ZWNiYWI2OTc0ZWFhNDExMGU3MDI3YmJkMmQ5MWY3NTgyYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMDM6MDI6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9idWZmZXIuYyBiL2ZzL2J1ZmZlci5jXG5pbmRleCA0MjdkOGE4MTdjZDU2Li5mNDZmYTY0MTMwMzJkIDEwMDY0NFxuLS0tIGEvZnMvYnVmZmVyLmNcbisrKyBiL2ZzL2J1ZmZlci5jXG5AQCAtMTEwNiw3ICsxMTA2LDggQEAgc3RhdGljIHZvaWQgX19iaF9zdWJtaXQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgYmxrX29wZl90IG9wZixcbiBcbiBcdGJpbyA9IGJpb19hbGxvYyhiaC1cdTAwM2ViX2JkZXYsIDEsIG9wZiwgR0ZQX05PSU8pO1xuIFxuLVx0aWYgKGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cdTAwM2ViX2ZvbGlvKSBcdTAwMjZcdTAwMjYgb3BfaXNfd3JpdGUob3BmKSlcbitcdGlmIChiaC1cdTAwM2ViX2ZvbGlvIFx1MDAyNlx1MDAyNiBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtXHUwMDNlYl9mb2xpbykgXHUwMDI2XHUwMDI2XG4rXHQgICAgb3BfaXNfd3JpdGUob3BmKSlcbiBcdFx0YmlvX3NldF9mbGFnKGJpbywgQklPX0NPTVBMRVRFX0lOX1RBU0spO1xuIFxuIFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0ZTX0VOQ1JZUFRJT04pKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDM6MDI6NTkuNzcyMzU1NDIzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTI4NzY4NzkzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCdWZmZXIgSGVhZCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBmcy9idWZmZXIuY2AuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCBpdCBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIG9wdGltaXphdGlvbiBvciBidWcgZml4IHJlbGF0ZWQgdG8gYGJ1ZmZlcl9oZWFkYCBvcGVyYXRpb25zLiBJIHNlZSBpdCdzIG1vZGlmeWluZyB0aGUgYF9fYmhfc3VibWl0YCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGhvdyBCSU9zIGFyZSBhbGxvY2F0ZWQgYW5kIGNvbmZpZ3VyZWQuXG5cblRoZSBjcnV4IG9mIHRoZSBjaGFuZ2UgaXMgYXJvdW5kIHRoZSBgZm9saW9fdGVzdF9kcm9wYmVoaW5kYCBjaGVjay4gUHJldmlvdXNseSwgaXQgbG9va3MgbGlrZSB0aGlzIGNoZWNrIHdhcyBpbXBsaWNpdGx5IGFzc3VtaW5nIGEgdmFsaWQgZm9saW8gZXhpc3RlZCBmb3IgdGhlIGBidWZmZXJfaGVhZGAuIFRoZSBwYXRjaCBhZGRzIGFuIGV4cGxpY2l0IGBiaC1cdTAwM2ViX2ZvbGlvYCBjaGVjayBiZWZvcmUgY2FsbGluZyBgZm9saW9fdGVzdF9kcm9wYmVoaW5kYC4gVGhpcyBpcyB0aGUgaW1wb3J0YW50IHBhcnQgLSBpdCdzIGEgc2FmZXR5IG1lYXN1cmUsIGxpa2VseSB0byBwcmV2ZW50IGEgcG90ZW50aWFsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIGNvbmRpdGlvbmFsIGBvcF9pc193cml0ZShvcGYpYCBpbmRpY2F0ZXMgdGhlIG9wdGltaXphdGlvbiBpcyBzcGVjaWZpYyB0byB3cml0ZSBvcGVyYXRpb25zLiBJIHVuZGVyc3RhbmQgdGhhdCB0aGUgYEJJT19DT01QTEVURV9JTl9UQVNLYCBmbGFnIG9wdGltaXplcyB3cml0ZSBvcGVyYXRpb25zIGJ5IGNvbXBsZXRpbmcgdGhlbSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIHN1Ym1pdHRpbmcgdGFzayBpZiBgZHJvcGJlaGluZGAgaXMgZW5hYmxlZCBvbiB0aGUgYGZvbGlvYC5cblxuVGhlIGBpZiAoYmgtXHUwMDNlYl9mb2xpbylgIGNvbmRpdGlvbmFsIGlzIGEgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgcHJhY3RpY2UuIEl0IGVuc3VyZXMgdGhhdCB3ZSBhcmUgbm90IG9wZXJhdGluZyBvbiBhIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgb3IgZnJlZWQgYGJ1ZmZlcl9oZWFkYCBvciBmb2xpbywgd2hpY2ggY2FuIGxlYWQgdG8gY3Jhc2hlcy4gSSdkIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgYnVmZmVyIGhlYWQgaGFuZGxpbmcgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIG51bGwgZm9saW8gY29uZGl0aW9uIG1pZ2h0IGFyaXNlLCBidXQgdGhpcyBwYXRjaCBjbGVhcmx5IGFkZHJlc3NlcyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LiBJdCdzIGEgY2xlYW4sIHNhZmUgZml4LCBhbmQgSSBhcHByZWNpYXRlIHRoZSBjYXV0aW9uLiBJdCdzIGFsd2F5cyBiZXR0ZXIgdG8gYmUgZXhwbGljaXQgYWJvdXQgdGhlc2UgY2hlY2tzLCBlc3BlY2lhbGx5IGluIGtlcm5lbCBjb2RlLiBOb3cgSSdkIGxpa2UgdG8gY2hlY2sgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBlbHNld2hlcmUsIGluIHRoZSBgZnMvYnVmZmVyLmNgIGZpbGUgYW5kIGFsc28gaW4gb3RoZXIgcGxhY2VzIGluIHRoZSBrZXJuZWwgdXNpbmcgYSBjcm9zcy1yZWZlcmVuY2Ugc2VhcmNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTAyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDM6MDM6MDUuMDYwMDQ1MzNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvYnVmZmVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTA5NSxcbiAgXCJMaW5lQ291bnRcIjogNDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTA5NTpcXHRcXHRCVUdfT04oIWJ1ZmZlcl9sb2NrZWQoYmgpKTtcXG4xMDk2OlxcdFxcdEJVR19PTighYnVmZmVyX21hcHBlZChiaCkpO1xcbjEwOTc6XFx0XFx0QlVHX09OKGJ1ZmZlcl9kZWxheShiaCkpO1xcbjEwOTg6XFx0XFx0QlVHX09OKGJ1ZmZlcl91bndyaXR0ZW4oYmgpKTtcXG4xMDk5OlxcdFxcbjExMDA6XFx0XFx0c2V0X2J1ZmZlcl9yZXEoYmgpO1xcbjExMDE6XFx0XFxuMTEwMjpcXHRcXHRpZiAoYnVmZmVyX21ldGEoYmgpKVxcbjExMDM6XFx0XFx0XFx0b3BmIHw9IFJFUV9NRVRBO1xcbjExMDQ6XFx0XFx0aWYgKGJ1ZmZlcl9wcmlvKGJoKSlcXG4xMTA1OlxcdFxcdFxcdG9wZiB8PSBSRVFfUFJJTztcXG4xMTA2OlxcdFxcbjExMDc6XFx0XFx0YmlvID0gYmlvX2FsbG9jKGJoLVxcdTAwM2ViX2JkZXYsIDEsIG9wZiwgR0ZQX05PSU8pO1xcbjExMDg6XFx0XFxuMTEwOTpcXHRcXHRpZiAoYmgtXFx1MDAzZWJfZm9saW8gXFx1MDAyNlxcdTAwMjYgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVxcdTAwM2ViX2ZvbGlvKSBcXHUwMDI2XFx1MDAyNlxcbjExMTA6XFx0XFx0ICAgIG9wX2lzX3dyaXRlKG9wZikpXFxuMTExMTpcXHRcXHRcXHRiaW9fc2V0X2ZsYWcoYmlvLCBCSU9fQ09NUExFVEVfSU5fVEFTSyk7XFxuMTExMjpcXHRcXG4xMTEzOlxcdFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19GU19FTkNSWVBUSU9OKSlcXG4xMTE0OlxcdFxcdFxcdGJ1ZmZlcl9zZXRfY3J5cHRvX2N0eChiaW8sIGJoLCBHRlBfTk9JTyk7XFxuMTExNTpcXHRcXG4xMTE2OlxcdFxcdGJpby1cXHUwMDNlYmlfaXRlci5iaV9zZWN0b3IgPSBiaC1cXHUwMDNlYl9ibG9ja25yICogKGJoLVxcdTAwM2ViX3NpemUgXFx1MDAzZVxcdTAwM2UgOSk7XFxuMTExNzpcXHRcXHRiaW8tXFx1MDAzZWJpX3dyaXRlX2hpbnQgPSB3cml0ZV9oaW50O1xcbjExMTg6XFx0XFxuMTExOTpcXHRcXHRpZiAoYmgtXFx1MDAzZWJfZm9saW8pXFxuMTEyMDpcXHRcXHRcXHRiaW9fYWRkX2ZvbGlvX25vZmFpbChiaW8sIGJoLVxcdTAwM2ViX2ZvbGlvLCBiaC1cXHUwMDNlYl9zaXplLFxcbjExMjE6XFx0XFx0XFx0XFx0XFx0ICAgICBiaF9vZmZzZXQoYmgpKTtcXG4xMTIyOlxcdFxcdGVsc2VcXG4xMTIzOlxcdFxcdFxcdGJpb19hZGRfdmlydF9ub2ZhaWwoYmlvLCBiaC1cXHUwMDNlYl9kYXRhLCBiaC1cXHUwMDNlYl9zaXplKTtcXG4xMTI0OlxcdFxcbjExMjU6XFx0XFx0YmlvLVxcdTAwM2ViaV9lbmRfaW8gPSBlbmRfYmlvO1xcbjExMjY6XFx0XFx0YmlvLVxcdTAwM2ViaV9wcml2YXRlID0gYmg7XFxuMTEyNzpcXHRcXG4xMTI4OlxcdFxcdC8qIFRha2UgY2FyZSBvZiBiaCdzIHRoYXQgc3RyYWRkbGUgdGhlIGVuZCBvZiB0aGUgZGV2aWNlICovXFxuMTEyOTpcXHRcXHRndWFyZF9iaW9fZW9kKGJpbyk7XFxuMTEzMDpcXHRcXG4xMTMxOlxcdFxcdGlmICh3YmMpIHtcXG4xMTMyOlxcdFxcdFxcdHdiY19pbml0X2Jpbyh3YmMsIGJpbyk7XFxuMTEzMzpcXHRcXHRcXHRpZiAoYmgtXFx1MDAzZWJfZm9saW8pXFxuMTEzNDpcXHRcXHRcXHRcXHR3YmNfYWNjb3VudF9jZ3JvdXBfb3duZXIod2JjLCBiaC1cXHUwMDNlYl9mb2xpbywgYmgtXFx1MDAzZWJfc2l6ZSk7XFxuMTEzNTpcXHRcXHR9XFxuMTEzNjpcXHRcXG4xMTM3OlxcdFxcdGJsa19jcnlwdG9fc3VibWl0X2JpbyhiaW8pO1xcbjExMzg6XFx0fVxcbjExMzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAzOjAzOjA1LjA2MDI0MDk5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ2Nzk3MTEyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBfX2JoX3N1Ym1pdGAgQ2FsbGVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBfX2JoX3N1Ym1pdGAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEl0J3MgbGlrZWx5IGEgYm90dG9tLWhhbGYgaGFuZGxlciBzdWJtaXNzaW9uIGZ1bmN0aW9uLCBwcm9iYWJseSBoYW5kbGluZyBkZWZlcnJlZCB3b3JrIGluIHRoZSBrZXJuZWwuIE5vdywgbGV0J3MgdHJhY2UgdGhlIGNhbGxlcnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGVyZSogYW5kICp3aHkqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC4gV2hhdCBzY2VuYXJpb3MgdHJpZ2dlciB0aGUgbmVlZCB0byBkZWZlciBwcm9jZXNzaW5nIHZpYSBhIGJvdHRvbS1oYWxmIG1lY2hhbmlzbT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgaW50ZXJydXB0IGhhbmRsZXJzLCBzb2Z0aXJxcywgdGFza2xldHMsIHdvcmtxdWV1ZXMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHF1aWNrIGNvZGUgZGl2ZSBzaG91bGQgcmV2ZWFsIHRoZSBjYWxsIHNpdGVzLCBhbmQgZnJvbSB0aGVyZSwgSSBjYW4gaW5mZXIgdGhlIGNvbnRleHQgb2YgdGhlIHN1Ym1pc3Npb25zLlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIHBhdHRlcm5zOiBhcmUgdGhlIGNhbGxlcnMgcmVsYXRlZCB0byBuZXR3b3JrIHByb2Nlc3NpbmcsIGRpc2sgSS9PLCBkZXZpY2UgZHJpdmVycywgb3Igc29tZSBvdGhlciBzdWJzeXN0ZW0/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgb3IgbG9ja2luZyBjb25zaWRlcmF0aW9ucyBpbiB0aGUgY2FsbCBwYXRocz8gS25vd2luZyB0aGUgY2FsbGVycyBnaXZlcyBtZSB0aGUgY3J1Y2lhbCBjb250ZXh0IHRvIGFzc2VzcyB0aGUgZnVuY3Rpb24ncyBvdmVyYWxsIGltcGFjdCBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzLiBUaGlzIGludmVzdGlnYXRpb24gd2lsbCBwcm9iYWJseSBoaWdobGlnaHQgdGhlIGNyaXRpY2FsIHNlY3Rpb25zIGd1YXJkZWQgYnkgQkggbG9ja3MgYW5kIGVuYWJsZSBtZSB0byBzcG90IGFueSBjb250ZW50aW9uIG9yIHJhY2UgY29uZGl0aW9ucyBpbiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzA3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzowNy41MjgyMTUwODlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI4NjE5MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fYmhfc3VibWl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2J1ZmZlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2J1ZmZlci5jPTEwNzA9c3RhdGljIHZvaWQgYnVmZmVyX3NldF9jcnlwdG9fY3R4KHN0cnVjdCBiaW8gKmJpbywgY29uc3Qgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCxcXG4tLVxcbmZzL2J1ZmZlci5jLTEwODgtXFxuZnMvYnVmZmVyLmM6MTA4OTpzdGF0aWMgdm9pZCBfX2JoX3N1Ym1pdChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BmLFxcbmZzL2J1ZmZlci5jLTEwOTAtXFx0XFx0ZW51bSByd19oaW50IHdyaXRlX2hpbnQsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjLFxcbi0tXFxuZnMvYnVmZmVyLmM9MTE0OT12b2lkIGJoX3N1Ym1pdChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BmLCBiaW9fZW5kX2lvX3QgZW5kX2lvKVxcbmZzL2J1ZmZlci5jLTExNTAte1xcbmZzL2J1ZmZlci5jOjExNTE6XFx0X19iaF9zdWJtaXQoYmgsIG9wZiwgV1JJVEVfTElGRV9OT1RfU0VULCBOVUxMLCBlbmRfaW8pO1xcbmZzL2J1ZmZlci5jLTExNTItfVxcbi0tXFxuZnMvYnVmZmVyLmM9MTcyNj1pbnQgX19ibG9ja193cml0ZV9mdWxsX2ZvbGlvKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5mcy9idWZmZXIuYy0xODIxLVxcdFxcdGlmIChidWZmZXJfYXN5bmNfd3JpdGUoYmgpKSB7XFxuZnMvYnVmZmVyLmM6MTgyMjpcXHRcXHRcXHRfX2JoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgd3JpdGVfZmxhZ3MsXFxuZnMvYnVmZmVyLmMtMTgyMy1cXHRcXHRcXHRcXHRcXHRpbm9kZS1cXHUwMDNlaV93cml0ZV9oaW50LCB3YmMsXFxuLS1cXG5mcy9idWZmZXIuYy0xODc2LVxcdFxcdFxcdGNsZWFyX2J1ZmZlcl9kaXJ0eShiaCk7XFxuZnMvYnVmZmVyLmM6MTg3NzpcXHRcXHRcXHRfX2JoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgd3JpdGVfZmxhZ3MsXFxuZnMvYnVmZmVyLmMtMTg3OC1cXHRcXHRcXHRcXHRcXHRpbm9kZS1cXHUwMDNlaV93cml0ZV9oaW50LCB3YmMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAzOjAzOjA4LjE1Njg0MDY4NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0NDIyNzMwNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgX19iaF9zdWJtaXRgIGFuZCBgYmhfc3VibWl0YCBDb2RlIFBhdGhzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBfX2JoX3N1Ym1pdGAgaXMgdGhlIHdvcmtob3JzZSBoZXJlLCBjYWxsZWQgZGlyZWN0bHkgYnkgYGJoX3N1Ym1pdGAgYW5kLCBpbnRlcmVzdGluZ2x5LCBhbHNvIGJ5IGBfX2Jsb2NrX3dyaXRlX2Z1bGxfZm9saW9gLiBUaGF0J3MgZ29vZCB0byBrZWVwIGluIG1pbmQsIHdlJ2xsIHByb2JhYmx5IG5lZWQgdG8gbG9vayBhdCBib3RoIGNvZGUgcGF0aHMuXG5cbkknbSBub3RpY2luZyBzb21ldGhpbmcgdGhhdCBpbW1lZGlhdGVseSBzdGFuZHMgb3V0OiB0aGUgY29uZGl0aW9uYWwgaW4gdGhlIGNvZGUgc25pcHBldC4gSXQgZXhwbGljaXRseSBjaGVja3MgYGJoLVx1MDAzZWJfZm9saW9gLiBUaGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IGBiaC1cdTAwM2ViX2ZvbGlvYCAqY2FuKiBiZSBOVUxMLiBTcGVjaWZpY2FsbHk6XG5cbmBgYGNcbmlmIChiaC1cdTAwM2ViX2ZvbGlvKVxuICAgIGJpb19hZGRfZm9saW9fbm9mYWlsKGJpbywgYmgtXHUwMDNlYl9mb2xpbywgYmgtXHUwMDNlYl9zaXplLCBiaF9vZmZzZXQoYmgpKTtcbmVsc2VcbiAgICBiaW9fYWRkX3ZpcnRfbm9mYWlsKGJpbywgYmgtXHUwMDNlYl9kYXRhLCBiaC1cdTAwM2ViX3NpemUpO1xuYGBgXG5cblRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gQnVmZmVyIGhlYWRzIGFyZW4ndCAqYWx3YXlzKiBiYWNrZWQgYnkgZm9saW9zLiBTb21ldGltZXMgdGhleSdyZSB1c2luZyB2aXJ0dWFsIG1lbW9yeSwgbGlrZSB3aGVuIGRlYWxpbmcgd2l0aCBmaWxlc3lzdGVtIG1ldGFkYXRhIG9yIGpvdXJuYWwgZGF0YSAodGhpbmsgamJkMiksIHdoZXJlIGttYWxsb2Mgb3Igc2ltaWxhciBhbGxvY2F0aW9uIG1lY2hhbmlzbXMgYXJlIHVzZWQuXG5cbkFuZCBoZXJlJ3MgdGhlIHByb2JsZW06IFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBtYWtpbmcgYW4gdW5jb25kaXRpb25hbCBjYWxsIHRvIGBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtXHUwMDNlYl9mb2xpbylgLiBJZiBgYmgtXHUwMDNlYl9mb2xpb2Agd2FzIE5VTEwsIHRoYXQncyBhIGNsYXNzaWMgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLiBUaGUgZml4LCB0aGVyZWZvcmUsIGlzIGNsZWFyIGFuZCBjb25jaXNlOiBvbmx5IGNhbGwgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZGAgaWYgYGJoLVx1MDAzZWJfZm9saW9gIGlzIGFjdHVhbGx5IGEgdmFsaWQgcG9pbnRlci5cblxuU28gdGhlIGZpeCBvZiBhZGRpbmcgYGJoLVx1MDAzZWJfZm9saW8gXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cdTAwM2ViX2ZvbGlvKWAgaXMgY2xlYW4gYW5kIHNvbHZlcyB0aGUgcHJvYmxlbSBpbiBgX19iaF9zdWJtaXQoKWAuIE5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGNhbGxlcnMgb2YgYGJoX3N1Ym1pdGAgYW5kIGBfX2JoX3N1Ym1pdGAgYW5kIG1ha2Ugc3VyZSB3ZSBkb24ndCBoYXZlIHRoaXMgb3Igc2ltaWxhciBwb3RlbnRpYWwgaXNzdWVzIGVsc2V3aGVyZSBpbiB0aGUgcmVsYXRlZCBidWZmZXIgaGVhZCBzdWJtaXNzaW9uIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMzMsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDM6MDM6MTEuNTk5MTE2NzIzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzIzMDIyMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmhfc3VibWl0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdD0xNTc4PWZ1bmN0aW9uLXRyYWNlLCB3ZSBnZXQgYSBtdWNoIGxhcmdlciBvdXRwdXQ6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0LTE2MzAtICAgPVxcdTAwM2Ugc3VibWl0X2Jpb1xcbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdDoxNjMxOiAgID1cXHUwMDNlIGJoX3N1Ym1pdFxcbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdC0xNjMyLSAgID1cXHUwMDNlIF9fZXh0M19nZXRfaW5vZGVfbG9jXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3Q9MTg3MT10cmFjZXJzLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0LTE5MTUtICAgPVxcdTAwM2Ugc3VibWl0X2Jpb1xcbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdDoxOTE2OiAgID1cXHUwMDNlIGJoX3N1Ym1pdFxcbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdC0xOTE3LSAgID1cXHUwMDNlIGV4dDNfYnJlYWRcXG4tLVxcbmRyaXZlcnMvbWQvbWQtYml0bWFwLmM9NTE3PXN0YXRpYyB2b2lkIHdyaXRlX2ZpbGVfcGFnZShzdHJ1Y3QgYml0bWFwICpiaXRtYXAsIHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgd2FpdClcXG4tLVxcbmRyaXZlcnMvbWQvbWQtYml0bWFwLmMtNTI0LVxcdFxcdHNldF9idWZmZXJfbWFwcGVkKGJoKTtcXG5kcml2ZXJzL21kL21kLWJpdG1hcC5jOjUyNTpcXHRcXHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSB8IFJFUV9TWU5DLCBlbmRfYml0bWFwX3dyaXRlKTtcXG5kcml2ZXJzL21kL21kLWJpdG1hcC5jLTUyNi1cXHRcXHRiaCA9IGJoLVxcdTAwM2ViX3RoaXNfcGFnZTtcXG4tLVxcbmRyaXZlcnMvbWQvbWQtYml0bWFwLmM9NTU4PXN0YXRpYyBpbnQgcmVhZF9maWxlX3BhZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgsXFxuLS1cXG5kcml2ZXJzL21kL21kLWJpdG1hcC5jLTYwMC1cXHRcXHRcXHRzZXRfYnVmZmVyX21hcHBlZChiaCk7XFxuZHJpdmVycy9tZC9tZC1iaXRtYXAuYzo2MDE6XFx0XFx0XFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCwgZW5kX2JpdG1hcF93cml0ZSk7XFxuZHJpdmVycy9tZC9tZC1iaXRtYXAuYy02MDItXFx0XFx0fVxcbi0tXFxuZnMvYnVmZmVyLmM9MTIzPXN0YXRpYyB2b2lkIGJ1ZmZlcl9pb19lcnJvcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBjaGFyICptc2cpXFxuLS1cXG5mcy9idWZmZXIuYy0xMzYtICogQ2FsbCB0aGlzIGluIHlvdXIgYmlvX2VuZF9pbyBoYW5kbGVyIHRvIHJldHJpZXZlIHRoZSBidWZmZXJfaGVhZFxcbmZzL2J1ZmZlci5jOjEzNzogKiBzdWJtaXR0ZWQgaW4gYmhfc3VibWl0KCkuICBJZiB5b3UgZGlkIG5vdCBjYWxsIGJoX3N1Ym1pdCgpLCBkbyBub3RcXG5mcy9idWZmZXIuYy0xMzgtICogY2FsbCB0aGlzIGZ1bmN0aW9uOyBpdCB3aWxsIHJldHVybiBnYXJiYWdlLlxcbi0tXFxuZnMvYnVmZmVyLmM9MTU3PUVYUE9SVF9TWU1CT0woYmlvX2VuZGlvX2JoKTtcXG4tLVxcbmZzL2J1ZmZlci5jLTE2My0gKlxcbmZzL2J1ZmZlci5jOjE2NDogKiBJZiBhIGJ1ZmZlciBpcyByZWFkIHRocm91Z2ggYSBtZWNoYW5pc20gdGhhdCBpc24ndCBiaF9zdWJtaXQoKSwgeW91XFxuZnMvYnVmZmVyLmMtMTY1LSAqIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gZmluaXNoIHRoZSByZWFkLlxcbi0tXFxuZnMvYnVmZmVyLmM9MTc3PUVYUE9SVF9TWU1CT0woZW5kX2J1ZmZlcl9yZWFkX3N5bmMpO1xcbi0tXFxuZnMvYnVmZmVyLmMtMTgyLSAqXFxuZnMvYnVmZmVyLmM6MTgzOiAqIFBhc3MgdGhpcyBmdW5jdGlvbiB0byBiaF9zdWJtaXQoKSBpZiB5b3UncmUgcmVhZGluZyBpbnRvIHRoZSBidWZmZXIsXFxuZnMvYnVmZmVyLmMtMTg0LSAqIHVubGVzcyB5b3UgbmVlZCB5b3VyIG93biBzcGVjaWFsIEkvTyBlbmQgaGFuZGxlci5cXG4tLVxcbmZzL2J1ZmZlci5jPTE5Mj1FWFBPUlRfU1lNQk9MKGJoX2VuZF9yZWFkKTtcXG4tLVxcbmZzL2J1ZmZlci5jLTE5Ny0gKlxcbmZzL2J1ZmZlci5jOjE5ODogKiBQYXNzIHRoaXMgZnVuY3Rpb24gdG8gYmhfc3VibWl0KCkgaWYgeW91J3JlIHdyaXRpbmcgZnJvbSB0aGUgYnVmZmVyLFxcbmZzL2J1ZmZlci5jLTE5OS0gKiB1bmxlc3MgeW91IG5lZWQgeW91ciBvd24gc3BlY2lhbCBJL08gZW5kIGhhbmRsZXIuXFxuLS1cXG5mcy9idWZmZXIuYz0zNjI9c3RhdGljIHZvaWQgYmhfZW5kX2FzeW5jX3JlYWQoc3RydWN0IGJpbyAqYmlvKVxcbi0tXFxuZnMvYnVmZmVyLmMtMzkyLSAqXFxuZnMvYnVmZmVyLmM6MzkzOiAqIFBhc3MgdGhpcyBmdW5jdGlvbiB0byBiaF9zdWJtaXQoKSBpZiB5b3UncmUgZG9pbmcgdGhlIGVxdWl2YWxlbnQgb2ZcXG5mcy9idWZmZXIuYy0zOTQtICogYmxvY2tfd3JpdGVfZnVsbF9mb2xpbygpLiAgVGhhdCBpcywgdGhlIGZvbGlvIGlzIHVubG9ja2VkLCBhbmQgd2lsbFxcbi0tXFxuZnMvYnVmZmVyLmM9MTA3MD1zdGF0aWMgdm9pZCBidWZmZXJfc2V0X2NyeXB0b19jdHgoc3RydWN0IGJpbyAqYmlvLCBjb25zdCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLFxcbi0tXFxuZnMvYnVmZmVyLmMtMTA4OC1cXG5mcy9idWZmZXIuYzoxMDg5OnN0YXRpYyB2b2lkIF9fYmhfc3VibWl0KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcGYsXFxuZnMvYnVmZmVyLmMtMTA5MC1cXHRcXHRlbnVtIHJ3X2hpbnQgd3JpdGVfaGludCwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMsXFxuLS1cXG5mcy9idWZmZXIuYy0xMTQwLS8qKlxcbmZzL2J1ZmZlci5jOjExNDE6ICogYmhfc3VibWl0IC0gU3RhcnQgSS9PIGFnYWluc3QgYSBidWZmZXIgaGVhZFxcbmZzL2J1ZmZlci5jLTExNDItICogQGJoOiBUaGUgYnVmZmVyIGhlYWQgdG8gcGVyZm9ybSBJL08gb24uXFxuLS1cXG5mcy9idWZmZXIuYy0xMTQ4LSAqL1xcbmZzL2J1ZmZlci5jOjExNDk6dm9pZCBiaF9zdWJtaXQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgYmxrX29wZl90IG9wZiwgYmlvX2VuZF9pb190IGVuZF9pbylcXG5mcy9idWZmZXIuYy0xMTUwLXtcXG5mcy9idWZmZXIuYzoxMTUxOlxcdF9fYmhfc3VibWl0KGJoLCBvcGYsIFdSSVRFX0xJRkVfTk9UX1NFVCwgTlVMTCwgZW5kX2lvKTtcXG5mcy9idWZmZXIuYy0xMTUyLX1cXG5mcy9idWZmZXIuYzoxMTUzOkVYUE9SVF9TWU1CT0woYmhfc3VibWl0KTtcXG5mcy9idWZmZXIuYy0xMTU0LVxcbmZzL2J1ZmZlci5jPTExNTU9c3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqX19icmVhZF9zbG93KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpXFxuLS1cXG5mcy9idWZmZXIuYy0xMTYxLVxcdH0gZWxzZSB7XFxuZnMvYnVmZmVyLmM6MTE2MjpcXHRcXHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9SRUFELCBiaF9lbmRfcmVhZCk7XFxuZnMvYnVmZmVyLmMtMTE2My1cXHRcXHR3YWl0X29uX2J1ZmZlcihiaCk7XFxuLS1cXG5mcy9idWZmZXIuYz0xNjgyPXN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmZvbGlvX2NyZWF0ZV9idWZmZXJzKHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5mcy9idWZmZXIuYy0xNzE4LSAqIGhhcyBhIGxvY2tlZCBidWZmZXIuICAgVGhpcyBvbmx5IGNhbiBoYXBwZW4gaWYgc29tZW9uZSBoYXMgd3JpdHRlblxcbmZzL2J1ZmZlci5jOjE3MTk6ICogdGhlIGJ1ZmZlciBkaXJlY3RseSwgd2l0aCBiaF9zdWJtaXQoKS4gIEF0IHRoZSBhZGRyZXNzX3NwYWNlIGxldmVsXFxuZnMvYnVmZmVyLmMtMTcyMC0gKiB0aGUgZm9saW8gd3JpdGViYWNrIGZsYWcgcHJldmVudHMgdGhpcyBjb250ZW50aW9uIGZyb20gb2NjdXJyaW5nLlxcbi0tXFxuZnMvYnVmZmVyLmM9MTcyNj1pbnQgX19ibG9ja193cml0ZV9mdWxsX2ZvbGlvKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5mcy9idWZmZXIuYy0xODIxLVxcdFxcdGlmIChidWZmZXJfYXN5bmNfd3JpdGUoYmgpKSB7XFxuZnMvYnVmZmVyLmM6MTgyMjpcXHRcXHRcXHRfX2JoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgd3JpdGVfZmxhZ3MsXFxuZnMvYnVmZmVyLmMtMTgyMy1cXHRcXHRcXHRcXHRcXHRpbm9kZS1cXHUwMDNlaV93cml0ZV9oaW50LCB3YmMsXFxuLS1cXG5mcy9idWZmZXIuYy0xODM2LVxcdFxcdCAqIGNsZWFuLiAgU29tZW9uZSB3cm90ZSB0aGVtIGJhY2sgYnkgaGFuZCB3aXRoXFxuZnMvYnVmZmVyLmM6MTgzNzpcXHRcXHQgKiB3cml0ZV9kaXJ0eV9idWZmZXIvYmhfc3VibWl0LiAgQSByYXJlIGNhc2UuXFxuZnMvYnVmZmVyLmMtMTgzOC1cXHRcXHQgKi9cXG4tLVxcbmZzL2J1ZmZlci5jLTE4NzYtXFx0XFx0XFx0Y2xlYXJfYnVmZmVyX2RpcnR5KGJoKTtcXG5mcy9idWZmZXIuYzoxODc3OlxcdFxcdFxcdF9fYmhfc3VibWl0KGJoLCBSRVFfT1BfV1JJVEUgfCB3cml0ZV9mbGFncyxcXG5mcy9idWZmZXIuYy0xODc4LVxcdFxcdFxcdFxcdFxcdGlub2RlLVxcdTAwM2VpX3dyaXRlX2hpbnQsIHdiYyxcXG4tLVxcbmZzL2J1ZmZlci5jPTIyODI9aW50IGJsb2NrX3JlYWRfZnVsbF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBnZXRfYmxvY2tfdCAqZ2V0X2Jsb2NrKVxcbi0tXFxuZnMvYnVmZmVyLmMtMjM2My1cXHRcXHRpZiAocHJldilcXG5mcy9idWZmZXIuYzoyMzY0OlxcdFxcdFxcdGJoX3N1Ym1pdChwcmV2LCBSRVFfT1BfUkVBRCwgYmhfZW5kX2FzeW5jX3JlYWQpO1xcbmZzL2J1ZmZlci5jLTIzNjUtXFx0XFx0cHJldiA9IGJoO1xcbi0tXFxuZnMvYnVmZmVyLmMtMjM3Ny1cXHRpZiAocHJldilcXG5mcy9idWZmZXIuYzoyMzc4OlxcdFxcdGJoX3N1Ym1pdChwcmV2LCBSRVFfT1BfUkVBRCwgYmhfZW5kX2FzeW5jX3JlYWQpO1xcbmZzL2J1ZmZlci5jLTIzNzktXFx0ZWxzZVxcbi0tXFxuZnMvYnVmZmVyLmM9MjY4Nj12b2lkIHdyaXRlX2RpcnR5X2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBibGtfb3BmX3Qgb3BfZmxhZ3MpXFxuLS1cXG5mcy9idWZmZXIuYy0yNjkyLVxcdH1cXG5mcy9idWZmZXIuYzoyNjkzOlxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgb3BfZmxhZ3MsIGJoX2VuZF93cml0ZSk7XFxuZnMvYnVmZmVyLmMtMjY5NC19XFxuLS1cXG5mcy9idWZmZXIuYz0yNzAyPWludCBfX3N5bmNfZGlydHlfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcF9mbGFncylcXG4tLVxcbmZzL2J1ZmZlci5jLTI3MTUtXFxuZnMvYnVmZmVyLmM6MjcxNjpcXHRcXHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSB8IG9wX2ZsYWdzLCBiaF9lbmRfd3JpdGUpO1xcbmZzL2J1ZmZlci5jLTI3MTctXFx0XFx0d2FpdF9vbl9idWZmZXIoYmgpO1xcbi0tXFxuZnMvYnVmZmVyLmM9Mjk0Mj1pbnQgX19iaF9yZWFkKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcF9mbGFncywgYm9vbCB3YWl0KVxcbi0tXFxuZnMvYnVmZmVyLmMtMjk0Ny1cXG5mcy9idWZmZXIuYzoyOTQ4OlxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1JFQUQgfCBvcF9mbGFncywgYmhfZW5kX3JlYWQpO1xcbmZzL2J1ZmZlci5jLTI5NDktXFx0aWYgKHdhaXQpIHtcXG4tLVxcbmZzL2J1ZmZlci5jPTI5Njg9dm9pZCBfX2JoX3JlYWRfYmF0Y2goaW50IG5yLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoc1tdLFxcbi0tXFxuZnMvYnVmZmVyLmMtMjk4OS1cXG5mcy9idWZmZXIuYzoyOTkwOlxcdFxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1JFQUQgfCBvcF9mbGFncywgYmhfZW5kX3JlYWQpO1xcbmZzL2J1ZmZlci5jLTI5OTEtXFx0fVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTY2ND1zdGF0aWMgdm9pZCBleHQ0X2ZjX3N1Ym1pdF9iaChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBib29sIGlzX3RhaWwpXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtNjc0LVxcdHNldF9idWZmZXJfdXB0b2RhdGUoYmgpO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYzo2NzU6XFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfV1JJVEUgfCB3cml0ZV9mbGFncywgYmhfZW5kX3dyaXRlKTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtNjc2LVxcdEVYVDRfU0Ioc2IpLVxcdTAwM2VzX2ZjX2JoID0gTlVMTDtcXG4tLVxcbmZzL2V4dDQvbW1wLmM9NDI9c3RhdGljIGludCB3cml0ZV9tbXBfYmxvY2tfdGhhd2VkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuLS1cXG5mcy9leHQ0L21tcC5jLTQ4LVxcdGxvY2tfYnVmZmVyKGJoKTtcXG5mcy9leHQ0L21tcC5jOjQ5OlxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgUkVRX1NZTkMgfCBSRVFfTUVUQSB8IFJFUV9QUklPLFxcbmZzL2V4dDQvbW1wLmMtNTAtXFx0XFx0XFx0YmhfZW5kX3dyaXRlKTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0xNjM9c3RhdGljIGlubGluZSB2b2lkIF9fZXh0NF9yZWFkX2JoKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcF9mbGFncyxcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0xODAtXFx0XFx0ZW5kX2lvID0gYmhfZW5kX3JlYWQ7XFxuZnMvZXh0NC9zdXBlci5jOjE4MTpcXHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9SRUFEIHwgb3BfZmxhZ3MsIGVuZF9pbyk7XFxuZnMvZXh0NC9zdXBlci5jLTE4Mi19XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NjMyNT1zdGF0aWMgaW50IGV4dDRfY29tbWl0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNjM1Ni1cXHRjbGVhcl9idWZmZXJfZGlydHkoc2JoKTtcXG5mcy9leHQ0L3N1cGVyLmM6NjM1NzpcXHRiaF9zdWJtaXQoc2JoLCBSRVFfT1BfV1JJVEUgfCBSRVFfU1lOQyB8XFxuZnMvZXh0NC9zdXBlci5jLTYzNTgtXFx0XFx0ICAodGVzdF9vcHQoc2IsIEJBUlJJRVIpID8gUkVRX0ZVQSA6IDApLCBiaF9lbmRfd3JpdGUpO1xcbi0tXFxuZnMvZ2ZzMi9ibWFwLmM9Mjk3PXN0YXRpYyB2b2lkIGdmczJfbWV0YXBhdGhfcmEoc3RydWN0IGdmczJfZ2xvY2sgKmdsLCBfX2JlNjQgKnN0YXJ0LCBfX2JlNjQgKmVuZClcXG4tLVxcbmZzL2dmczIvYm1hcC5jLTMwOS1cXHRcXHRcXHRpZiAoIWJ1ZmZlcl91cHRvZGF0ZShyYWJoKSkge1xcbmZzL2dmczIvYm1hcC5jOjMxMDpcXHRcXHRcXHRcXHRiaF9zdWJtaXQocmFiaCxcXG5mcy9nZnMyL2JtYXAuYy0zMTEtXFx0XFx0XFx0XFx0XFx0UkVRX09QX1JFQUQgfCBSRVFfUkFIRUFEIHwgUkVRX01FVEEgfFxcbi0tXFxuZnMvZ2ZzMi9kaXIuYz0xNDkyPXN0YXRpYyB2b2lkIGdmczJfZGlyX3JlYWRhaGVhZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBoc2l6ZSwgdTMyIGluZGV4LFxcbi0tXFxuZnMvZ2ZzMi9kaXIuYy0xNTIwLVxcdFxcdFxcdH0gZWxzZSB7XFxuZnMvZ2ZzMi9kaXIuYzoxNTIxOlxcdFxcdFxcdFxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1JFQUQgfCBSRVFfUkFIRUFEIHxcXG5mcy9nZnMyL2Rpci5jLTE1MjItXFx0XFx0XFx0XFx0XFx0XFx0UkVRX01FVEEgfCBSRVFfUFJJTyxcXG4tLVxcbmZzL2dmczIvbWV0YV9pby5jPTMzPXN0YXRpYyB2b2lkIGdmczJfYXNwYWNlX3dyaXRlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5mcy9nZnMyL21ldGFfaW8uYy03Ny1cXHRcXHRpZiAoYnVmZmVyX2FzeW5jX3dyaXRlKGJoKSkge1xcbmZzL2dmczIvbWV0YV9pby5jOjc4OlxcdFxcdFxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFIHwgd3JpdGVfZmxhZ3MsXFxuZnMvZ2ZzMi9tZXRhX2lvLmMtNzktXFx0XFx0XFx0XFx0XFx0YmhfZW5kX2FzeW5jX3dyaXRlKTtcXG4tLVxcbmZzL2dmczIvbWV0YV9pby5jPTIwMj1zdGF0aWMgdm9pZCBnZnMyX21ldGFfcmVhZF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pXFxuLS1cXG5mcy9nZnMyL21ldGFfaW8uYy0yMjQtICogU3VibWl0IHNldmVyYWwgY29uc2VjdXRpdmUgYnVmZmVyIGhlYWQgSS9PIHJlcXVlc3RzIGFzIGEgc2luZ2xlIGJpbyBJL09cXG5mcy9nZnMyL21ldGFfaW8uYzoyMjU6ICogcmVxdWVzdC4gIChTZWUgYmhfc3VibWl0LilcXG5mcy9nZnMyL21ldGFfaW8uYy0yMjYtICovXFxuLS1cXG5mcy9qYmQyL2NvbW1pdC5jPTExND1zdGF0aWMgaW50IGpvdXJuYWxfc3VibWl0X2NvbW1pdF9yZWNvcmQoam91cm5hbF90ICpqb3VybmFsLFxcbi0tXFxuZnMvamJkMi9jb21taXQuYy0xNTQtXFxuZnMvamJkMi9jb21taXQuYzoxNTU6XFx0Ymhfc3VibWl0KGJoLCB3cml0ZV9mbGFncywgam91cm5hbF9lbmRfYnVmZmVyX2lvX3N5bmMpO1xcbmZzL2piZDIvY29tbWl0LmMtMTU2LVxcdCpjYmggPSBiaDtcXG4tLVxcbmZzL2piZDIvY29tbWl0LmM9Mzc2PXZvaWQgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbihqb3VybmFsX3QgKmpvdXJuYWwpXFxuLS1cXG5mcy9qYmQyL2NvbW1pdC5jLTc1MC1cXHRcXHRcXHRcXHRzZXRfYnVmZmVyX3VwdG9kYXRlKGJoKTtcXG5mcy9qYmQyL2NvbW1pdC5jOjc1MTpcXHRcXHRcXHRcXHRiaF9zdWJtaXQoYmgsXFxuZnMvamJkMi9jb21taXQuYy03NTItXFx0XFx0XFx0XFx0XFx0UkVRX09QX1dSSVRFIHwgSkJEMl9KT1VSTkFMX1JFUV9GTEFHUyxcXG4tLVxcbmZzL2piZDIvam91cm5hbC5jPTE3ODg9c3RhdGljIGludCBqYmQyX3dyaXRlX3N1cGVyYmxvY2soam91cm5hbF90ICpqb3VybmFsLCBibGtfb3BmX3Qgd3JpdGVfZmxhZ3MpXFxuLS1cXG5mcy9qYmQyL2pvdXJuYWwuYy0xODI2LVxcdFxcdHNiLVxcdTAwM2VzX2NoZWNrc3VtID0gamJkMl9zdXBlcmJsb2NrX2NzdW0oc2IpO1xcbmZzL2piZDIvam91cm5hbC5jOjE4Mjc6XFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfV1JJVEUgfCB3cml0ZV9mbGFncywgYmhfZW5kX3dyaXRlKTtcXG5mcy9qYmQyL2pvdXJuYWwuYy0xODI4LVxcdHdhaXRfb25fYnVmZmVyKGJoKTtcXG4tLVxcbmZzL25pbGZzMi9idG5vZGUuYz04Nz1pbnQgbmlsZnNfYnRub2RlX3N1Ym1pdF9ibG9jayhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqYnRuYywgX191NjQgYmxvY2tucixcXG4tLVxcbmZzL25pbGZzMi9idG5vZGUuYy0xMzYtXFx0YmgtXFx1MDAzZWJfYmxvY2tuciA9IHBibG9ja25yOyAvKiBzZXQgYmxvY2sgYWRkcmVzcyBmb3IgcmVhZCAqL1xcbmZzL25pbGZzMi9idG5vZGUuYzoxMzc6XFx0Ymhfc3VibWl0KGJoLCBvcGYsIGJoX2VuZF9yZWFkKTtcXG5mcy9uaWxmczIvYnRub2RlLmMtMTM4LVxcdGJoLVxcdTAwM2ViX2Jsb2NrbnIgPSBibG9ja25yOyAvKiBzZXQgYmFjayB0byB0aGUgZ2l2ZW4gYmxvY2sgYWRkcmVzcyAqL1xcbi0tXFxuZnMvbmlsZnMyL2djaW5vZGUuYz01NT1pbnQgbmlsZnNfZ2NjYWNoZV9zdWJtaXRfcmVhZF9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHNlY3Rvcl90IGJsa29mZixcXG4tLVxcbmZzL25pbGZzMi9nY2lub2RlLmMtODUtXFx0YmgtXFx1MDAzZWJfYmxvY2tuciA9IHBibjtcXG5mcy9uaWxmczIvZ2Npbm9kZS5jOjg2OlxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1JFQUQsIGJoX2VuZF9yZWFkKTtcXG5mcy9uaWxmczIvZ2Npbm9kZS5jLTg3LVxcdGlmICh2Ym4pXFxuLS1cXG5mcy9uaWxmczIvbWR0LmM9MTE2PW5pbGZzX21kdF9zdWJtaXRfYmxvY2soc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBibGtvZmYsIGJsa19vcGZfdCBvcGYsXFxuLS1cXG5mcy9uaWxmczIvbWR0LmMtMTUwLVxcbmZzL25pbGZzMi9tZHQuYzoxNTE6XFx0Ymhfc3VibWl0KGJoLCBvcGYsIGJoX2VuZF9yZWFkKTtcXG5mcy9uaWxmczIvbWR0LmMtMTUyLVxcdHJldCA9IDA7XFxuLS1cXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jPTM4PWludCBvY2ZzMl93cml0ZV9ibG9jayhzdHJ1Y3Qgb2NmczJfc3VwZXIgKm9zYiwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCxcXG4tLVxcbmZzL29jZnMyL2J1ZmZlcl9oZWFkX2lvLmMtNjQtXFxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYzo2NTpcXHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9XUklURSwgYmhfZW5kX3dyaXRlKTtcXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jLTY2LVxcbi0tXFxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYz04OT1pbnQgb2NmczJfcmVhZF9ibG9ja3Nfc3luYyhzdHJ1Y3Qgb2NmczJfc3VwZXIgKm9zYiwgdTY0IGJsb2NrLFxcbi0tXFxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYy0xNDctXFxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYzoxNDg6XFx0XFx0Ymhfc3VibWl0KGJoLCBSRVFfT1BfUkVBRCwgYmhfZW5kX3JlYWQpO1xcbmZzL29jZnMyL2J1ZmZlcl9oZWFkX2lvLmMtMTQ5LVxcdH1cXG4tLVxcbmZzL29jZnMyL2J1ZmZlcl9oZWFkX2lvLmM9MTkxPWludCBvY2ZzMl9yZWFkX2Jsb2NrcyhzdHJ1Y3Qgb2NmczJfY2FjaGluZ19pbmZvICpjaSwgdTY0IGJsb2NrLCBpbnQgbnIsXFxuLS1cXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jLTMyNS1cXHRcXHRcXHRcXHRzZXRfYnVmZmVyX25lZWRzX3ZhbGlkYXRlKGJoKTtcXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jOjMyNjpcXHRcXHRcXHRiaF9zdWJtaXQoYmgsIFJFUV9PUF9SRUFELCBiaF9lbmRfcmVhZCk7XFxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYy0zMjctXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jPTQyNT1pbnQgb2NmczJfd3JpdGVfc3VwZXJfb3JfYmFja3VwKHN0cnVjdCBvY2ZzMl9zdXBlciAqb3NiLFxcbi0tXFxuZnMvb2NmczIvYnVmZmVyX2hlYWRfaW8uYy00NDYtXFx0b2NmczJfY29tcHV0ZV9tZXRhX2VjYyhvc2ItXFx1MDAzZXNiLCBiaC1cXHUwMDNlYl9kYXRhLCBcXHUwMDI2ZGktXFx1MDAzZWlfY2hlY2spO1xcbmZzL29jZnMyL2J1ZmZlcl9oZWFkX2lvLmM6NDQ3OlxcdGJoX3N1Ym1pdChiaCwgUkVRX09QX1dSSVRFLCBiaF9lbmRfd3JpdGUpO1xcbmZzL29jZnMyL2J1ZmZlcl9oZWFkX2lvLmMtNDQ4LVxcbi0tXFxuaW5jbHVkZS9saW51eC9idWZmZXJfaGVhZC5oPTQ4PXN0cnVjdCBhZGRyZXNzX3NwYWNlO1xcbi0tXFxuaW5jbHVkZS9saW51eC9idWZmZXJfaGVhZC5oLTU2LSAqIGEgZm9saW8gKHZpYSBhIGZvbGlvX21hcHBpbmcpIGFuZCBmb3Igd3JhcHBpbmcgYmlvIHN1Ym1pc3Npb25cXG5pbmNsdWRlL2xpbnV4L2J1ZmZlcl9oZWFkLmg6NTc6ICogZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29ucyAoZS5nLiBiaF9zdWJtaXQpLlxcbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaC01OC0gKi9cXG4tLVxcbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaD0yMzA9Ym9vbCBiaW9fZW5kaW9fYmgoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipiaHApO1xcbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaC0yMzEtXFxuaW5jbHVkZS9saW51eC9idWZmZXJfaGVhZC5oOjIzMjovKiBDb21wbGV0aW9uIHJvdXRpbmVzIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRvIGJoX3N1Ym1pdCgpICovXFxuaW5jbHVkZS9saW51eC9idWZmZXJfaGVhZC5oLTIzMy12b2lkIGJoX2VuZF9yZWFkKHN0cnVjdCBiaW8gKmJpbyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2J1ZmZlcl9oZWFkLmg9MjY1PXZvaWQgd3JpdGVfZGlydHlfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcF9mbGFncyk7XFxuaW5jbHVkZS9saW51eC9idWZmZXJfaGVhZC5oOjI2Njp2b2lkIGJoX3N1Ym1pdChzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgYmxrX29wZl90LCBiaW9fZW5kX2lvX3QpO1xcbmluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaC0yNjctdm9pZCB3cml0ZV9ib3VuZGFyeV9ibG9jayhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxcbi0tXFxubW0vdm1zY2FuLmM9MTA3OD1zdGF0aWMgdW5zaWduZWQgaW50IHNocmlua19mb2xpb19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZvbGlvX2xpc3QsXFxuLS1cXG5tbS92bXNjYW4uYy0xNDcxLVxcdFxcdCAqIFRoaXMgaGFwcGVucyBpZiB0aGUgYnVmZmVycyB3ZXJlIHdyaXR0ZW4gb3V0IGRpcmVjdGx5LFxcbm1tL3Ztc2Nhbi5jOjE0NzI6XFx0XFx0ICogd2l0aCBiaF9zdWJtaXQoKS4gZXh0MyB3aWxsIGRvIHRoaXMsIGFzIHdlbGwgYXNcXG5tbS92bXNjYW4uYy0xNDczLVxcdFxcdCAqIHRoZSBibG9ja2RldiBtYXBwaW5nLiAgZmlsZW1hcF9yZWxlYXNlX2ZvbGlvKCkgd2lsbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzoxMy44NzE0MjMzNjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NTQyNDc4MjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IEV2YWx1YXRpb246IGZzL2J1ZmZlci5jOl9fYmhfc3VibWl0KCkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBwb2ludHMgdG93YXJkcyBgZnMvYnVmZmVyLmNgIGFuZCBzcGVjaWZpY2FsbHkgYF9fYmhfc3VibWl0KClgIGFzIGEgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0LiBUaGUgZmFjdCB0aGF0IGl0J3MgdG91Y2hlZCBkdXJpbmcgYnVmZmVyIHN1Ym1pc3Npb25zIHRocm91Z2ggYF9fYmhfc3VibWl0KClgIGluIHZhcmlvdXMgYnVmZmVyLWhlYWQtYmFzZWQgZmlsZXN5c3RlbXMgKGV4dDQsIGdmczIsIG5pbGZzMiwgb2NmczIsIGFuZCBvdGhlcnMsIGFsb25nIHdpdGggZ2VuZXJpYyBibG9jayBidWZmZXIgb3BlcmF0aW9ucyBsaWtlIGBfX2JyZWFkYCwgYF9fc3luY19kaXJ0eV9idWZmZXJgLCBldGMuKSBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBpbnRlcmVzdGluZy4gSXQncyBjb3JlIFZGUy9ibG9jayBidWZmZXIgbGF5ZXIgY29kZSwgc28gdGhhdCdzIGEgZGVmaW5pdGUgXCJ5ZXNcIiBvbiB0aGUgXCJpcyBpdCB3b3J0aCBmdXp6aW5nP1wiIHF1ZXN0aW9uLiBUaGlzIGlzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGtlcm5lbCBjb2RlLCBhbmQgd2UgYWxsIGtub3cgaG93IG11Y2ggdGhhdCBjYW4gYml0ZSB5b3UuXG5cbk5vdywgbGV0J3MgbG9vayBhdCBmb2N1cyBzeW1ib2xzLiBgX19iaF9zdWJtaXRgIGlzIHN0YXRpYyB3aXRoaW4gYGZzL2J1ZmZlci5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0J3MgY2FsbGVkIGFuZCBpZiB0aGUgY29tcGlsZXIgaW5saW5lcyBpdC4gSXQncyBjYWxsZWQgZnJvbSBgYmhfc3VibWl0YCB3aGljaCBpcyBleHBvcnRlZCwgYW5kIGFsc28gZnJvbSBgX19ibG9ja193cml0ZV9mdWxsX2ZvbGlvYC4gVGhhdCBtYWtlcyBgYmhfc3VibWl0YCBhbmQgYF9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb2AgZ29vZCBmb2N1cyBzeW1ib2xzIHRvby4gV2UnbGwgaW5jbHVkZSBgX19iaF9zdWJtaXRgLCBgYmhfc3VibWl0YCwgYF9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb2AsIGB3cml0ZV9kaXJ0eV9idWZmZXJgLCBgX19zeW5jX2RpcnR5X2J1ZmZlcmAsIGFuZCBgX19iaF9yZWFkYCBzaW5jZSB0aGV5IGFsbCBzZWVtIHJlbGV2YW50LiBCdXQgd2FpdCwgSSBuZWVkIHRvIHByaW9yaXRpemUsIHdoYXQncyBtb3N0IHNwZWNpZmljIGFuZCB1bmlxdWU/IGBiaF9zdWJtaXRgIGlzIGEgZGlyZWN0IGVudHJ5IHBvaW50LCBidXQgYF9fYmhfc3VibWl0YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCdzIGRpcmVjdGx5IG1vZGlmaWVkLCBhbmQgYF9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb2AgaXMgYW5vdGhlciBkaXJlY3QgY2FsbGVyLlxuXG5MYXN0bHksIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcz8gYGZzL2J1ZmZlci5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfQkxPQ0tgIGlzIGVuYWJsZWQsIGFuZCBidWZmZXJfaGVhZCBzdXBwb3J0IGlzIGVzc2VudGlhbCBmb3IgYmxvY2sgbGF5ZXJzIGFuZCBibG9jay1iYXNlZCBmaWxlc3lzdGVtcywgc28gdGhhdOKAmXMgZXNzZW50aWFsbHkgYSBnaXZlbi4gSSdsbCBkb3VibGUtY2hlY2sgYGZzL01ha2VmaWxlYCB0byBjb25maXJtLCBidXQgSSdtIHByZXR0eSBjb25maWRlbnQgd2UncmUgZ29vZCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4MzIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDM6MDM6MTguNDEzOTA1NzEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzc1MzgzMTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnVmZmVyXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9NYWtlZmlsZT0xMD1vYmoteSA6PVxcdG9wZW4ubyByZWFkX3dyaXRlLm8gZmlsZV90YWJsZS5vIHN1cGVyLm8gXFxcXFxcbi0tXFxuZnMvTWFrZWZpbGUtMjAtXFxuZnMvTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX0JVRkZFUl9IRUFEKVxcdCs9IGJ1ZmZlci5vIG1wYWdlLm9cXG5mcy9NYWtlZmlsZS0yMi1vYmotJChDT05GSUdfUFJPQ19GUylcXHRcXHQrPSBwcm9jX25hbWVzcGFjZS5vXFxuLS1cXG5mcy9ocGZzL01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX0hQRlNfRlMpICs9IGhwZnMub1xcbmZzL2hwZnMvTWFrZWZpbGUtNy1cXG5mcy9ocGZzL01ha2VmaWxlOjg6aHBmcy1vYmpzIDo9IGFsbG9jLm8gYW5vZGUubyBidWZmZXIubyBkZW50cnkubyBkaXIubyBkbm9kZS5vIGVhLm8gZmlsZS5vIFxcXFxcXG5mcy9ocGZzL01ha2VmaWxlLTktXFx0ICAgICBpbm9kZS5vIG1hcC5vIG5hbWUubyBuYW1laS5vIHN1cGVyLm9cXG4tLVxcbmZzL25ldGZzL01ha2VmaWxlPTM9bmV0ZnMteSA6PSBcXFxcXFxuLS1cXG5mcy9uZXRmcy9NYWtlZmlsZS0xNi1cXHRyZWFkX3NpbmdsZS5vIFxcXFxcXG5mcy9uZXRmcy9NYWtlZmlsZToxNzpcXHRyb2xsaW5nX2J1ZmZlci5vIFxcXFxcXG5mcy9uZXRmcy9NYWtlZmlsZS0xOC1cXHR3cml0ZV9jb2xsZWN0Lm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzoxOC41NTE0NDg4NjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU0NzA4NDc0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBDT05GSUdfQlVGRkVSX0hFQURgKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgYENPTkZJR19CVUZGRVJfSEVBRGAgaW4gdGhlIEtjb25maWcuIEknbSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGluZmx1ZW5jZXMgdGhlIHN5c3RlbSwgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgZGlyZWN0aW9uIHRoaW5ncyBhcmUgaGVhZGluZyB3aXRoIG1vZGVybiBmaWxlc3lzdGVtcyBhbmQgcG90ZW50aWFsIGZvciByZW1vdmluZyBpdCBlbnRpcmVseS4gSSBrbm93IHRoZXJlJ3MgYSBkZWxpY2F0ZSBiYWxhbmNlIGhlcmUgYmV0d2VlbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBhbmQgYXJjaGl0ZWN0dXJhbCBzaW1wbGlmaWNhdGlvbi4gSSdtIGVzcGVjaWFsbHkga2VlbiB0byBzZWUgaWYgYW55IHJlY2VudCBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHRvIGl0IC0gcGVyaGFwcyB0aGVyZSdzIGEgbW92ZSB0b3dhcmQgZGVwcmVjYXRpb24sIG9yIG1heWJlIHNvbWUgbmV3IGRlcGVuZGVuY2llcyBoYXZlIGVtZXJnZWQuIEkgd2FudCB0byB1bmRlcnN0YW5kIGl0cyBjdXJyZW50IHN0YXRlIGFuZCBpdHMgZnV0dXJlIHJvbGUuIFRoZSBnb2FsIGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGl0cyBpbXBvcnRhbmNlIHJlbGF0aXZlIHRvIG1vZGVybiBmZWF0dXJlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwMzksIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzoyMS4wOTg1MzYzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTI0MDM0MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJVRkZFUl9IRUFEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9LY29uZmlnPTIyPWNvbmZpZyBGU19TVEFDS1xcbi0tXFxuZnMvS2NvbmZpZy0yNC1cXG5mcy9LY29uZmlnOjI1OmNvbmZpZyBCVUZGRVJfSEVBRFxcbmZzL0tjb25maWctMjYtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzoyMS4yNTA5NDY0MzdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE1ODUxMjIyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYEJVRkZFUl9IRUFEYCB2cy4gYEJMT0NLYCBTZWxlY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgY29kZSBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGxvZ2ljIHRoYXQgZGVjaWRlcyB3aGV0aGVyIHdlJ3JlIGRlYWxpbmcgd2l0aCBgQlVGRkVSX0hFQURgIG9yIGBCTE9DS2AuIEkga25vdyB0aGVzZSBhcmUgZnVuZGFtZW50YWwgZGF0YSBzdHJ1Y3R1cmVzLCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMgdG8gZGlzayBJL08sIHNvIHVuZGVyc3RhbmRpbmcgdGhlIHNlbGVjdGlvbiBjcml0ZXJpYSBpcyBjcml0aWNhbC4gSSdtIGFzc3VtaW5nIHRoZXJlJ3Mgc29tZSBjb25kaXRpb25hbCBsb2dpYyBpbiBoZXJlLiBJcyBpdCBiYXNlZCBvbiB0aGUgZmlsZXN5c3RlbSB0eXBlPyBBcmUgd2UgZGVhbGluZyB3aXRoIGNhY2hlZCBkYXRhIHZlcnN1cyBkaXJlY3QgSS9PPyBPciBtYXliZSBpdCBkZXBlbmRzIG9uIHRoZSBibG9jayBzaXplIG9yIHNlY3RvciBzaXplIGJlaW5nIGFjY2Vzc2VkPyBJdCBjb3VsZCBldmVuIGJlIHJlbGF0ZWQgdG8gdGhlIHNwZWNpZmljIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWQg4oCTIHJlYWQsIHdyaXRlLCBtZXRhZGF0YSBhY2Nlc3MsIGV0Yy4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgY29udHJvbCBmbG93IHRvIHNlZSB3aGF0IHRyaWdnZXJzIG9uZSBjaG9pY2Ugb3ZlciB0aGUgb3RoZXIuIEknbSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55IGNvbXBhcmlzb24sIGFzc2lnbm1lbnQsIG9yIGZ1bmN0aW9uIGNhbGwgdGhhdCBoaW5nZXMgb24gd2hldGhlciBgQlVGRkVSX0hFQURgIG9yIGBCTE9DS2AgaXMgdWx0aW1hdGVseSB1c2VkLiBMZXQncyBzZWUgaG93IHRoZXkgaW50ZXJhY3QuIEFyZSB0aGV5IG11dHVhbGx5IGV4Y2x1c2l2ZSwgb3IgY2FuIHRoZXkgYmUgdXNlZCBpbiBjb25qdW5jdGlvbj8gSSdtIGV4cGVjdGluZyB0byBmaW5kIGEgY2xlYXIgZGVsaW5lYXRpb24gYmV0d2VlbiB0aGUgdHdvLCBvciBwZXJoYXBzIGEgbW9yZSBudWFuY2VkIHJlbGF0aW9uc2hpcC4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzIGFuZCBmaW5kIHRob3NlIGNvbmRpdGlvbmFsIGJyYW5jaGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjMwNiwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAzOjAzOjIzLjQwOTQ2MjY2N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4ODk1MDQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgQlVGRkVSX0hFQURcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZC9LY29uZmlnPTE1PWNvbmZpZyBCTEtfREVWX01EXFxuLS1cXG5kcml2ZXJzL21kL0tjb25maWctMTctXFx0c2VsZWN0IEJMT0NLX0hPTERFUl9ERVBSRUNBVEVEIGlmIFNZU0ZTXFxuZHJpdmVycy9tZC9LY29uZmlnOjE4OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmRyaXZlcnMvbWQvS2NvbmZpZy0xOS1cXHQjIEJMT0NLX0xFR0FDWV9BVVRPTE9BRCByZXF1aXJlbWVudCBzaG91bGQgYmUgcmVtb3ZlZFxcbi0tXFxuZnMvYWRmcy9LY29uZmlnPTI9Y29uZmlnIEFERlNfRlNcXG4tLVxcbmZzL2FkZnMvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gQkxPQ0tcXG5mcy9hZGZzL0tjb25maWc6NTpcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9hZGZzL0tjb25maWctNi1cXHRoZWxwXFxuLS1cXG5mcy9hZmZzL0tjb25maWc9Mj1jb25maWcgQUZGU19GU1xcbi0tXFxuZnMvYWZmcy9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmZzL2FmZnMvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL2FmZnMvS2NvbmZpZy02LVxcdHNlbGVjdCBMRUdBQ1lfRElSRUNUX0lPXFxuLS1cXG5mcy9iZWZzL0tjb25maWc9Mj1jb25maWcgQkVGU19GU1xcbi0tXFxuZnMvYmVmcy9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmZzL2JlZnMvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL2JlZnMvS2NvbmZpZy02LVxcdHNlbGVjdCBOTFNcXG4tLVxcbmZzL2Jmcy9LY29uZmlnPTI9Y29uZmlnIEJGU19GU1xcbi0tXFxuZnMvYmZzL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEJMT0NLXFxuZnMvYmZzL0tjb25maWc6NTpcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9iZnMvS2NvbmZpZy02LVxcdGhlbHBcXG4tLVxcbmZzL2V4ZmF0L0tjb25maWc9Mz1jb25maWcgRVhGQVRfRlNcXG5mcy9leGZhdC9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcImV4RkFUIGZpbGVzeXN0ZW0gc3VwcG9ydFxcXCJcXG5mcy9leGZhdC9LY29uZmlnOjU6XFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuZnMvZXhmYXQvS2NvbmZpZy02LVxcdHNlbGVjdCBOTFNcXG4tLVxcbmZzL2V4dDIvS2NvbmZpZz0yPWNvbmZpZyBFWFQyX0ZTXFxuZnMvZXh0Mi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNlY29uZCBleHRlbmRlZCBmcyBzdXBwb3J0IChERVBSRUNBVEVEKVxcXCJcXG5mcy9leHQyL0tjb25maWc6NDpcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9leHQyL0tjb25maWctNS1cXHRzZWxlY3QgRlNfSU9NQVBcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZz0yPWNvbmZpZyBFWFQ0X0ZTXFxuZnMvZXh0NC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlRoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXFxcIlxcbmZzL2V4dDQvS2NvbmZpZzo0OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL2V4dDQvS2NvbmZpZy01LVxcdHNlbGVjdCBKQkQyXFxuLS1cXG5mcy9mMmZzL0tjb25maWc9Mj1jb25maWcgRjJGU19GU1xcbi0tXFxuZnMvZjJmcy9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmZzL2YyZnMvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL2YyZnMvS2NvbmZpZy02LVxcdHNlbGVjdCBOTFNcXG4tLVxcbmZzL2ZhdC9LY29uZmlnPTI9Y29uZmlnIEZBVF9GU1xcbmZzL2ZhdC9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG5mcy9mYXQvS2NvbmZpZzo0OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL2ZhdC9LY29uZmlnLTUtXFx0c2VsZWN0IE5MU1xcbi0tXFxuZnMvZ2ZzMi9LY29uZmlnPTI9Y29uZmlnIEdGUzJfRlNcXG5mcy9nZnMyL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiR0ZTMiBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbmZzL2dmczIvS2NvbmZpZzo0OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL2dmczIvS2NvbmZpZy01LVxcdHNlbGVjdCBGU19QT1NJWF9BQ0xcXG4tLVxcbmZzL2hmcy9LY29uZmlnPTI9Y29uZmlnIEhGU19GU1xcbi0tXFxuZnMvaGZzL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEJMT0NLXFxuZnMvaGZzL0tjb25maWc6NTpcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9oZnMvS2NvbmZpZy02LVxcdHNlbGVjdCBOTFNcXG4tLVxcbmZzL2hmc3BsdXMvS2NvbmZpZz0yPWNvbmZpZyBIRlNQTFVTX0ZTXFxuLS1cXG5mcy9oZnNwbHVzL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEJMT0NLXFxuZnMvaGZzcGx1cy9LY29uZmlnOjU6XFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuZnMvaGZzcGx1cy9LY29uZmlnLTYtXFx0c2VsZWN0IE5MU1xcbi0tXFxuZnMvaHBmcy9LY29uZmlnPTI9Y29uZmlnIEhQRlNfRlNcXG4tLVxcbmZzL2hwZnMvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gQkxPQ0tcXG5mcy9ocGZzL0tjb25maWc6NTpcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9ocGZzL0tjb25maWctNi1cXHRzZWxlY3QgRlNfSU9NQVBcXG4tLVxcbmZzL2lzb2ZzL0tjb25maWc9Mj1jb25maWcgSVNPOTY2MF9GU1xcbmZzL2lzb2ZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSVNPIDk2NjAgQ0RST00gZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG5mcy9pc29mcy9LY29uZmlnOjQ6XFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuZnMvaXNvZnMvS2NvbmZpZy01LVxcdGhlbHBcXG4tLVxcbmZzL2pmcy9LY29uZmlnPTI9Y29uZmlnIEpGU19GU1xcbmZzL2pmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkpGUyBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuZnMvamZzL0tjb25maWc6NDpcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9qZnMvS2NvbmZpZy01LVxcdHNlbGVjdCBOTFNcXG4tLVxcbmZzL21pbml4L0tjb25maWc9Mj1jb25maWcgTUlOSVhfRlNcXG4tLVxcbmZzL21pbml4L0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEJMT0NLXFxuZnMvbWluaXgvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL21pbml4L0tjb25maWctNi1cXHRoZWxwXFxuLS1cXG5mcy9uaWxmczIvS2NvbmZpZz0yPWNvbmZpZyBOSUxGUzJfRlNcXG5mcy9uaWxmczIvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOSUxGUzIgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG5mcy9uaWxmczIvS2NvbmZpZzo0OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL25pbGZzMi9LY29uZmlnLTUtXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5mcy9udGZzMy9LY29uZmlnPTI9Y29uZmlnIE5URlMzX0ZTXFxuLS1cXG5mcy9udGZzMy9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiAhTlRGU19GUyB8fCBtXFxuZnMvbnRmczMvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL250ZnMzL0tjb25maWctNi1cXHRzZWxlY3QgTkxTXFxuLS1cXG5mcy9vY2ZzMi9LY29uZmlnPTI9Y29uZmlnIE9DRlMyX0ZTXFxuLS1cXG5mcy9vY2ZzMi9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IFNZU0ZTIFxcdTAwMjZcXHUwMDI2IENPTkZJR0ZTX0ZTXFxuZnMvb2NmczIvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL29jZnMyL0tjb25maWctNi1cXHRzZWxlY3QgSkJEMlxcbi0tXFxuZnMvb21mcy9LY29uZmlnPTI9Y29uZmlnIE9NRlNfRlNcXG4tLVxcbmZzL29tZnMvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gQkxPQ0tcXG5mcy9vbWZzL0tjb25maWc6NTpcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9vbWZzL0tjb25maWctNi1cXHRzZWxlY3QgQ1JDX0lUVV9UXFxuLS1cXG5mcy9xbng0L0tjb25maWc9Mj1jb25maWcgUU5YNEZTX0ZTXFxuLS1cXG5mcy9xbng0L0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEJMT0NLXFxuZnMvcW54NC9LY29uZmlnOjU6XFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuZnMvcW54NC9LY29uZmlnLTYtXFx0aGVscFxcbi0tXFxuZnMvcW54Ni9LY29uZmlnPTI9Y29uZmlnIFFOWDZGU19GU1xcbi0tXFxuZnMvcW54Ni9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBCTE9DSyBcXHUwMDI2XFx1MDAyNiBDUkMzMlxcbmZzL3FueDYvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL3FueDYvS2NvbmZpZy02LVxcdGhlbHBcXG4tLVxcbmZzL3JvbWZzL0tjb25maWc9NTc9Y29uZmlnIFJPTUZTX09OX0JMT0NLXFxuLS1cXG5mcy9yb21mcy9LY29uZmlnLTU5LVxcdGRlZmF1bHQgeSBpZiBST01GU19CQUNLRURfQllfQkxPQ0sgfHwgUk9NRlNfQkFDS0VEX0JZX0JPVEhcXG5mcy9yb21mcy9LY29uZmlnOjYwOlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL3JvbWZzL0tjb25maWctNjEtXFxuLS1cXG5mcy91ZGYvS2NvbmZpZz0yPWNvbmZpZyBVREZfRlNcXG5mcy91ZGYvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJVREYgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG5mcy91ZGYvS2NvbmZpZzo0OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL3VkZi9LY29uZmlnLTUtXFx0c2VsZWN0IENSQ19JVFVfVFxcbi0tXFxuZnMvdWZzL0tjb25maWc9Mj1jb25maWcgVUZTX0ZTXFxuLS1cXG5mcy91ZnMvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gQkxPQ0tcXG5mcy91ZnMvS2NvbmZpZzo1OlxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL3Vmcy9LY29uZmlnLTYtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzoyNS41OTg0MjEyNTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg4NzY0MjUzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGaW5hbCBUaG91Z2h0cyBvbiB0aGUgQnVmZmVyIEhlYWQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIGl0J3MgbG9va2luZyBwcmV0dHkgc29saWQuIFRoZSBgQlVGRkVSX0hFQURgIGNvbmNlcHQgaXMgY2xlYXJseSBzZWxlY3RlZCBhbmQgdXNlZCBhY3Jvc3Mgc2V2ZXJhbCBrZXkgZmlsZXN5c3RlbXMg4oCTIGBFWFQ0X0ZTYCwgYEZBVF9GU2AsIGFuZCB0aGUgbGlrZS4gVGhpcyB0ZWxscyBtZSB0aGF0IGBCVUZGRVJfSEVBRGAgKGFuZCB0aGUgcmVsYXRlZCBgQkxPQ0tgIGNvbmZpZ3VyYXRpb24pIGlzIGFic29sdXRlbHkgdGhlIHJpZ2h0IHRhcmdldCBmb3IgZnV6emluZy5cblxuTGV0J3MgcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgY2hlY2tsaXN0IGFnYWluLiBSZWFjaGFiaWxpdHkgaXMgY29uZmlybWVkOyBgX19iaF9zdWJtaXRgIHdpdGhpbiBgZnMvYnVmZmVyLmNgIGlzIHRoZSBjZW50cmFsIHBvaW50IGhlcmUsIGFuZCBpdCdzIGludm9rZWQgZHVyaW5nIGZ1bmRhbWVudGFsIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy4gVGhhdCdzIGEgc29saWQgXCJ5ZXNcIiBmb3IgYFdvcnRoRnV6emluZ2AuIE91ciBgRm9jdXNTeW1ib2xzYCBhcmUgYXBwcm9wcmlhdGVseSBzY29wZWQsIHRhcmdldGluZyBgX19iaF9zdWJtaXRgLCBgYmhfc3VibWl0YCwgYW5kIGBfX2Jsb2NrX3dyaXRlX2Z1bGxfZm9saW9gLiBUaGVzZSBhbGwgbG9vayBsaWtlIGNyaXRpY2FsIGVudHJ5IHBvaW50cyBmb3IgYnVmZmVyIGhlYWQgaW50ZXJhY3Rpb25zLiBGaW5hbGx5LCBgRW5hYmxlQ29uZmlnc2A6IGBCVUZGRVJfSEVBRGAsIGBCTE9DS2AuLi4gY2hlY2suXG5cbkV2ZXJ5dGhpbmcgY2hlY2tzIG91dC4gSSdtIHNhdGlzZmllZC4gVGltZSB0byBnbyBhaGVhZCBhbmQgcnVuIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDgyLCJPdXRwdXRUb2tlbnMiOjEyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzoyOC40ODYwNjYzODFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjE4MTg4MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJVRkZFUl9IRUFEXCIsXG4gICAgXCJCTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYmhfc3VibWl0XCIsXG4gICAgXCJiaF9zdWJtaXRcIixcbiAgICBcIl9fYmxvY2tfd3JpdGVfZnVsbF9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBfX2JoX3N1Ym1pdCgpIGJ5IGNoZWNraW5nIGlmIGJoLVxcdTAwM2ViX2ZvbGlvIGlzIG5vbi1OVUxMIGJlZm9yZSBjYWxsaW5nIGZvbGlvX3Rlc3RfZHJvcGJlaGluZCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgYnVmZmVyIGhlYWQgSS9PIHN1Ym1pc3Npb24gbG9naWMgaW4gZnMvYnVmZmVyLmMsIHdoaWNoIGlzIGRpcmVjdGx5IHJlYWNoYWJsZSBieSBzdGFuZGFyZCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlVGRkVSX0hFQURcIixcbiAgICBcIkJMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19iaF9zdWJtaXRcIixcbiAgICBcImJoX3N1Ym1pdFwiLFxuICAgIFwiX19ibG9ja193cml0ZV9mdWxsX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIF9fYmhfc3VibWl0KCkgYnkgY2hlY2tpbmcgaWYgYmgtXFx1MDAzZWJfZm9saW8gaXMgbm9uLU5VTEwgYmVmb3JlIGNhbGxpbmcgZm9saW9fdGVzdF9kcm9wYmVoaW5kKCkuIFRoaXMgbW9kaWZpZXMgY29yZSBidWZmZXIgaGVhZCBJL08gc3VibWlzc2lvbiBsb2dpYyBpbiBmcy9idWZmZXIuYywgd2hpY2ggaXMgZGlyZWN0bHkgcmVhY2hhYmxlIGJ5IHN0YW5kYXJkIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDM6MDM6MjguNjA3ODk1MDg4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE3MTExNjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAzOjAzOjI4LjYwODY4OTE1OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEwMTcwMzE2MDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgTlVMTCBjaGVjayBmb3IgYGJoLVxcdTAwM2ViX2ZvbGlvYCBiZWZvcmUgY2FsbGluZyBgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVxcdTAwM2ViX2ZvbGlvKWAgaW4gYF9fYmhfc3VibWl0KClgIHRvIHByZXZlbnQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBzdWJtaXR0aW5nIGJ1ZmZlciBoZWFkcyB0aGF0IGxhY2sgYW4gYXNzb2NpYXRlZCBmb2xpbyAoZS5nLiBidWZmZXJzIGJhY2tlZCBieSBgYmgtXFx1MDAzZWJfZGF0YWApLlxcblxcblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcsIHdoaWNoIGlzIGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdGlvbiAvIHBhZ2UgZmF1bHQgaGFuZGxlcnMgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgZG9lcyBub3QgcmVhZCBvciBicmFuY2ggb24gdW5pbml0aWFsaXplZCBtZW1vcnksIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIHRvIHVzZXJzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGJ1ZmZlciBsZW5ndGggY2FsY3VsYXRpb25zLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDlmZWM5NWVjYmFiNjk3NGVhYTQxMTBlNzAyN2JiZDJkOTFmNzU4MmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDAzOjAyOjU4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYnVmZmVyLmMgYi9mcy9idWZmZXIuY1xuaW5kZXggNDI3ZDhhODE3Y2Q1Ni4uZjQ2ZmE2NDEzMDMyZCAxMDA2NDRcbi0tLSBhL2ZzL2J1ZmZlci5jXG4rKysgYi9mcy9idWZmZXIuY1xuQEAgLTExMDYsNyArMTEwNiw4IEBAIHN0YXRpYyB2b2lkIF9fYmhfc3VibWl0KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGJsa19vcGZfdCBvcGYsXG4gXG4gXHRiaW8gPSBiaW9fYWxsb2MoYmgtXHUwMDNlYl9iZGV2LCAxLCBvcGYsIEdGUF9OT0lPKTtcbiBcbi1cdGlmIChmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtXHUwMDNlYl9mb2xpbykgXHUwMDI2XHUwMDI2IG9wX2lzX3dyaXRlKG9wZikpXG4rXHRpZiAoYmgtXHUwMDNlYl9mb2xpbyBcdTAwMjZcdTAwMjYgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVx1MDAzZWJfZm9saW8pIFx1MDAyNlx1MDAyNlxuK1x0ICAgIG9wX2lzX3dyaXRlKG9wZikpXG4gXHRcdGJpb19zZXRfZmxhZyhiaW8sIEJJT19DT01QTEVURV9JTl9UQVNLKTtcbiBcbiBcdGlmIChJU19FTkFCTEVEKENPTkZJR19GU19FTkNSWVBUSU9OKSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAzOjAzOjI4LjYwODY5MDg1OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTMwMjk1ODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQnVmZmVyIEhlYWQgU3VibWlzc2lvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGZzL2J1ZmZlci5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgX19iaF9zdWJtaXRgIGZ1bmN0aW9uLiBMZXQncyBzZWUuLi4gaXQncyBtb2RpZnlpbmcgdGhlIGJpbyBhbGxvY2F0aW9uIGFuZCBzZXR1cC4gTG9va3MgbGlrZSB0aGUgY29yZSBjaGFuZ2UgaXMgYW4gYWRkZWQgY2hlY2sgd2l0aGluIHRoZSBjb25kaXRpb25hbCB0aGF0IHNldHMgdGhlIGBCSU9fQ09NUExFVEVfSU5fVEFTS2AgZmxhZy4gSSBzZWUgaXQncyBhZGRlZCBhIGNoZWNrIGZvciBgYmgtXHUwMDNlYl9mb2xpb2AgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQuXG5cbk9yaWdpbmFsbHksIHRoZSBjb2RlIGNoZWNrZWQgaWYgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cdTAwM2ViX2ZvbGlvKWAgd2FzIHRydWUgYW5kIHRoZSBvcGVyYXRpb24gd2FzIGEgd3JpdGUuIE5vdywgaXQgZXhwbGljaXRseSBjaGVja3MgaWYgYGJoLVx1MDAzZWJfZm9saW9gIGlzIG5vbi1OVUxMICpiZWZvcmUqIGNhbGxpbmcgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZGAuIFRoaXMgaXMgYSBjbGFzc2ljIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBwcm90ZWN0aW9uLCBJIHByZXN1bWUuIFRoZXJlIG11c3QgaGF2ZSBiZWVuIHNvbWUgc2NlbmFyaW8gd2hlcmUgYGJoLVx1MDAzZWJfZm9saW9gIGNvdWxkIGJlIE5VTEwsIGxlYWRpbmcgdG8gYSBjcmFzaCBvciB1bmRlZmluZWQgYmVoYXZpb3IgaWYgYGZvbGlvX3Rlc3RfZHJvcGJlaGluZGAgd2FzIGNhbGxlZCBvbiBpdCBkaXJlY3RseS4gSSdkIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb250ZXh0cyB3aGVyZSBgX19iaF9zdWJtaXRgIGlzIGNhbGxlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyByb290IGNhdXNlIGFuZCB0aGUgY29uZGl0aW9ucyB0aGF0IG1ha2UgYGJoLVx1MDAzZWJfZm9saW9gIHBvdGVudGlhbGx5IE5VTEwuIFBlcmhhcHMgdGhlcmUncyBhIG5ldyBvciBwcm9ibGVtYXRpYyBjb2RlIHBhdGguIEl0J3MgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGFueXdheS4gSSdtIGFzc3VtaW5nIHRoZSBpbnRlbnQgaXMgdG8gcHJldmVudCBhIGtlcm5lbCBwYW5pYyBvciBhIHNpbWlsYXIgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzozNC41Mzg5OTAyMTVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg5OTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2J1ZmZlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwOTUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwOTU6XFx0XFx0QlVHX09OKCFidWZmZXJfbG9ja2VkKGJoKSk7XFxuMTA5NjpcXHRcXHRCVUdfT04oIWJ1ZmZlcl9tYXBwZWQoYmgpKTtcXG4xMDk3OlxcdFxcdEJVR19PTihidWZmZXJfZGVsYXkoYmgpKTtcXG4xMDk4OlxcdFxcdEJVR19PTihidWZmZXJfdW53cml0dGVuKGJoKSk7XFxuMTA5OTpcXHRcXG4xMTAwOlxcdFxcdHNldF9idWZmZXJfcmVxKGJoKTtcXG4xMTAxOlxcdFxcbjExMDI6XFx0XFx0aWYgKGJ1ZmZlcl9tZXRhKGJoKSlcXG4xMTAzOlxcdFxcdFxcdG9wZiB8PSBSRVFfTUVUQTtcXG4xMTA0OlxcdFxcdGlmIChidWZmZXJfcHJpbyhiaCkpXFxuMTEwNTpcXHRcXHRcXHRvcGYgfD0gUkVRX1BSSU87XFxuMTEwNjpcXHRcXG4xMTA3OlxcdFxcdGJpbyA9IGJpb19hbGxvYyhiaC1cXHUwMDNlYl9iZGV2LCAxLCBvcGYsIEdGUF9OT0lPKTtcXG4xMTA4OlxcdFxcbjExMDk6XFx0XFx0aWYgKGJoLVxcdTAwM2ViX2ZvbGlvIFxcdTAwMjZcXHUwMDI2IGZvbGlvX3Rlc3RfZHJvcGJlaGluZChiaC1cXHUwMDNlYl9mb2xpbykgXFx1MDAyNlxcdTAwMjZcXG4xMTEwOlxcdFxcdCAgICBvcF9pc193cml0ZShvcGYpKVxcbjExMTE6XFx0XFx0XFx0YmlvX3NldF9mbGFnKGJpbywgQklPX0NPTVBMRVRFX0lOX1RBU0spO1xcbjExMTI6XFx0XFxuMTExMzpcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRlNfRU5DUllQVElPTikpXFxuMTExNDpcXHRcXHRcXHRidWZmZXJfc2V0X2NyeXB0b19jdHgoYmlvLCBiaCwgR0ZQX05PSU8pO1xcbjExMTU6XFx0XFxuMTExNjpcXHRcXHRiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfc2VjdG9yID0gYmgtXFx1MDAzZWJfYmxvY2tuciAqIChiaC1cXHUwMDNlYl9zaXplIFxcdTAwM2VcXHUwMDNlIDkpO1xcbjExMTc6XFx0XFx0YmlvLVxcdTAwM2ViaV93cml0ZV9oaW50ID0gd3JpdGVfaGludDtcXG4xMTE4OlxcdFxcbjExMTk6XFx0XFx0aWYgKGJoLVxcdTAwM2ViX2ZvbGlvKVxcbjExMjA6XFx0XFx0XFx0YmlvX2FkZF9mb2xpb19ub2ZhaWwoYmlvLCBiaC1cXHUwMDNlYl9mb2xpbywgYmgtXFx1MDAzZWJfc2l6ZSxcXG4xMTIxOlxcdFxcdFxcdFxcdFxcdCAgICAgYmhfb2Zmc2V0KGJoKSk7XFxuMTEyMjpcXHRcXHRlbHNlXFxuMTEyMzpcXHRcXHRcXHRiaW9fYWRkX3ZpcnRfbm9mYWlsKGJpbywgYmgtXFx1MDAzZWJfZGF0YSwgYmgtXFx1MDAzZWJfc2l6ZSk7XFxuMTEyNDpcXHRcXG4xMTI1OlxcdFxcdGJpby1cXHUwMDNlYmlfZW5kX2lvID0gZW5kX2JpbztcXG4xMTI2OlxcdFxcdGJpby1cXHUwMDNlYmlfcHJpdmF0ZSA9IGJoO1xcbjExMjc6XFx0XFxuMTEyODpcXHRcXHQvKiBUYWtlIGNhcmUgb2YgYmgncyB0aGF0IHN0cmFkZGxlIHRoZSBlbmQgb2YgdGhlIGRldmljZSAqL1xcbjExMjk6XFx0XFx0Z3VhcmRfYmlvX2VvZChiaW8pO1xcbjExMzA6XFx0XFxuMTEzMTpcXHRcXHRpZiAod2JjKSB7XFxuMTEzMjpcXHRcXHRcXHR3YmNfaW5pdF9iaW8od2JjLCBiaW8pO1xcbjExMzM6XFx0XFx0XFx0aWYgKGJoLVxcdTAwM2ViX2ZvbGlvKVxcbjExMzQ6XFx0XFx0XFx0XFx0d2JjX2FjY291bnRfY2dyb3VwX293bmVyKHdiYywgYmgtXFx1MDAzZWJfZm9saW8sIGJoLVxcdTAwM2ViX3NpemUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMzowMzozNC41MzkzODM5OTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDIzOTU5NDY1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIGZpeCBmb3IgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBfX2JoX3N1Ym1pdGAuIE15IGFuYWx5c2lzIHNob3dzIHRoYXQgYGJoLVx1MDAzZWJfZm9saW9gICpjYW4qIGJlIE5VTEwsIGFuZCB0aGUgb3JpZ2luYWwgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVx1MDAzZWJfZm9saW8pYCBjYWxsLCBkaWRuJ3QgYWNjb3VudCBmb3IgdGhhdCBwb3NzaWJpbGl0eS4gVGhhdCdzIGEgY2xhc3NpYyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnLCBsZWFkaW5nIHRvIGEgcGFuaWMvY3Jhc2ggd2hlbiBgYmgtXHUwMDNlYl9mb2xpb2AgaXMgaW5kZWVkIE5VTEwuIFRoZSBwYXRjaCBjb3JyZWN0bHkgYWRkcyBhIE5VTEwgY2hlY2sgYmVmb3JlIGRlcmVmZXJlbmNpbmcsIG1ha2luZyB0aGUgY29kZSBzYWZlOiBgYmgtXHUwMDNlYl9mb2xpbyBcdTAwMjZcdTAwMjYgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVx1MDAzZWJfZm9saW8pYC4gR29vZCBjYXRjaC5cblxuTm93LCBsZXQncyBjb25zaWRlciB0aGUgS01TQU4gaW1wbGljYXRpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgZG9lcyB0aGlzIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/IEFuZCB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyBcIm5vLlwiIFdlJ3JlIG5vdCBhbGxvY2F0aW5nIG5ldyBtZW1vcnksIHRoZXJlIGFyZSBubyByZWFkcyBvciB3cml0ZXMgdG8gYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGlzIGlzbid0IGFuIGluZm8tbGVhayBpc3N1ZSB0byB1c2Vyc3BhY2UgZWl0aGVyLiBXZSdyZSBkZWFsaW5nIHdpdGggYSBzaW1wbGUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBhIHNpdHVhdGlvbiB0aGF0IHNob3VsZCBiZSBkZXRlY3RlZCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcywgbGlrZSB0aGUgT29wcy9wYW5pYyBhbmQgS0FTQU4uIEtNU0FOIGlzbid0IGRlc2lnbmVkIHRvIGNhdGNoIHRob3NlIHN0YW5kYXJkIGlzc3Vlcy5cblxuTGV0J3MgZG8gYSBxdWljayBjaGVja2xpc3QgdG8gY29uZmlybSBteSBhc3Nlc3NtZW50LlxuXG4xLiAgTm8ga2VybmVsIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSBoZXJlLlxuMi4gIFRoZXJlJ3Mgbm8gY29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIGJhc2VkIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBgYmgtXHUwMDNlYl9mb2xpb2AgaXMgYW4gZXhpc3RpbmcgZmllbGQgaW4gYHN0cnVjdCBidWZmZXJfaGVhZGAsIGFuZCBpdCdzIGluaXRpYWxpemVkLCBlaXRoZXIgdG8gcG9pbnQgdG8gYSBmb2xpbyBvciB0byBOVUxMLlxuMy4gIFdlJ3JlIG5vdCBhbGxvY2F0aW5nIG9yIGluaXRpYWxpemluZyBhbnkgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgaGVyZS5cbjQuICBObyBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aHMgYXJlIGJlaW5nIGhhbmRsZWQgaW4gYSB3YXkgdGhhdCBtaWdodCBleHBvc2UgdW5pbml0aWFsaXplZCBieXRlcyB0byBzdXJyb3VuZGluZyBjb2RlLlxuXG5TbywgYWxsIGNyaXRlcmlhIGhhdmUgYmVlbiBtZXQuIEJhc2VkIG9uIGFsbCBvZiB0aGlzLCB0aGUgYE5lZWRzS01TQU5gIGlzIGBmYWxzZWAuIFRoaXMgaXMgYSBjbGFzc2ljIGNhc2Ugd2hlcmUgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyBhbmQgS0FTQU4gc2hvdWxkIGJlIHN1ZmZpY2llbnQsIGFuZCBLTVNBTiB3b3VsZCBiZSBvdmVya2lsbC4gSXQgbG9va3MgbGlrZSBzdGFuZGFyZCBkZWZlbnNlcyBhcmUgYWRlcXVhdGUgZm9yIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzOTksIk91dHB1dFRva2VucyI6MTczLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDM6MDM6MzguNzc4OTgyOTgzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgTlVMTCBjaGVjayBmb3IgYGJoLVxcdTAwM2ViX2ZvbGlvYCBiZWZvcmUgY2FsbGluZyBgZm9saW9fdGVzdF9kcm9wYmVoaW5kKGJoLVxcdTAwM2ViX2ZvbGlvKWAgaW4gYF9fYmhfc3VibWl0KClgIHRvIHByZXZlbnQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBzdWJtaXR0aW5nIGJ1ZmZlciBoZWFkcyB0aGF0IGxhY2sgYW4gYXNzb2NpYXRlZCBmb2xpbyAoZS5nLiBidWZmZXJzIGJhY2tlZCBieSBgYmgtXFx1MDAzZWJfZGF0YWApLlxcblxcblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcsIHdoaWNoIGlzIGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdGlvbiAvIHBhZ2UgZmF1bHQgaGFuZGxlcnMgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgZG9lcyBub3QgcmVhZCBvciBicmFuY2ggb24gdW5pbml0aWFsaXplZCBtZW1vcnksIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIHRvIHVzZXJzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGJ1ZmZlciBsZW5ndGggY2FsY3VsYXRpb25zLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBOVUxMIGNoZWNrIGZvciBgYmgtXFx1MDAzZWJfZm9saW9gIGJlZm9yZSBjYWxsaW5nIGBmb2xpb190ZXN0X2Ryb3BiZWhpbmQoYmgtXFx1MDAzZWJfZm9saW8pYCBpbiBgX19iaF9zdWJtaXQoKWAgdG8gcHJldmVudCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIHN1Ym1pdHRpbmcgYnVmZmVyIGhlYWRzIHRoYXQgbGFjayBhbiBhc3NvY2lhdGVkIGZvbGlvIChlLmcuIGJ1ZmZlcnMgYmFja2VkIGJ5IGBiaC1cXHUwMDNlYl9kYXRhYCkuXFxuXFxuVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1Zywgd2hpY2ggaXMgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0aW9uIC8gcGFnZSBmYXVsdCBoYW5kbGVycyBhbmQgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCByZWFkIG9yIGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSwgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9maWVsZHMgdG8gdXNlcnNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgYnVmZmVyIGxlbmd0aCBjYWxjdWxhdGlvbnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowp64x9[1] Phase: Succeeded StartedAt: 2026-09-08 03:03:46 +0000 UTC FinishedAt: 2026-09-08 03:03:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp64x9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-08 03:03:46 +0000 UTC FinishedAt: 2026-09-08 03:03:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp64x9[2] Phase: Succeeded StartedAt: 2026-09-08 03:03:46 +0000 UTC FinishedAt: 2026-09-08 03:28:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp64x9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-09-08 03:03:46 +0000 UTC FinishedAt: 2026-09-08 03:28:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowp64x9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-08 03:03:46 +0000 UTC FinishedAt: 2026-09-08 03:03:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp64x9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-08 03:03:46 +0000 UTC FinishedAt: 2026-09-08 03:03:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowp64x9/series-workflowp64x9-convert-artifact-1988478463/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp64x9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-08 03:03:56 +0000 UTC FinishedAt: 2026-09-08 03:23:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp64x9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-08 03:03:56 +0000 UTC FinishedAt: 2026-09-08 03:23:08 +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:*ae3fd506-fa8f-450b-bd3f-b1083b9214c6,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-workflowp64x9/series-workflowp64x9-convert-artifact-1988478463/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": "b86f1b78-37a6-427a-99d4-22f356734486", "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-workflowp64x9/series-workflowp64x9-build-action-3959201925/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp64x9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-08 03:03:56 +0000 UTC FinishedAt: 2026-09-08 03:22:58 +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:*ae3fd506-fa8f-450b-bd3f-b1083b9214c6,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-workflowp64x9/series-workflowp64x9-convert-artifact-1988478463/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": "b86f1b78-37a6-427a-99d4-22f356734486", "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-workflowp64x9/series-workflowp64x9-build-action-3959201925/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp64x9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-08 03:23:08 +0000 UTC FinishedAt: 2026-09-08 03:23:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp64x9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-08 03:23:08 +0000 UTC FinishedAt: 2026-09-08 03:23:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp64x9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-08 03:23:08 +0000 UTC FinishedAt: 2026-09-08 03:23:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp64x9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-08 03:23:08 +0000 UTC FinishedAt: 2026-09-08 03:23:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowp64x9/series-workflowp64x9-convert-artifact-2480784398/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp64x9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-08 03:23:18 +0000 UTC FinishedAt: 2026-09-08 03:27:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp64x9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-08 03:23:18 +0000 UTC FinishedAt: 2026-09-08 03:27:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b86f1b78-37a6-427a-99d4-22f356734486,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-workflowp64x9/series-workflowp64x9-build-action-3959201925/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": false },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-workflowp64x9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Failed StartedAt: 2026-09-08 03:27:21 +0000 UTC FinishedAt: 2026-09-08 03:28:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp64x9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__bh_submit","bh_submit","__block_write_full_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"944a035ecca915ae947905dcfb03f2b9dc6d032c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BUFFER_HEAD","BLOCK"],"series_id":"0bfde347-d2a8-4d3f-829d-7e242426e8f2","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Failed StartedAt: 2026-09-08 03:27:21 +0000 UTC FinishedAt: 2026-09-08 03:27:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}