Name: series-workflowr76ml Phase: Succeeded StartedAt: 2026-08-21 14:33:24 +0000 UTC FinishedAt: 2026-08-21 18:55:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[0] Phase: Succeeded StartedAt: 2026-08-21 14:33:24 +0000 UTC FinishedAt: 2026-08-21 15:17:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[0].run-triage Phase: Succeeded StartedAt: 2026-08-21 14:33:24 +0000 UTC FinishedAt: 2026-08-21 15:17:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "746fc0787f616da418ffc04a110296fe95d53491", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "746fc0787f616da418ffc04a110296fe95d53491", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC" ], "series_id": "159e8c5d-d01a-4ed9-b94e-5898a5f82571" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nfc_llcp_send_i_frame", "nfc_llcp_queue_i_frames", "nfc_llcp_tx_work" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mY19sbGNwX3NlbmRfaV9mcmFtZSYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF90eF93b3JrJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiB1c2luZyBgc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzaylgLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgc29ja2V0IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50cyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gc29ja2V0IGRlc3RydWN0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3IgbWVtb3J5IGxlYWsgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiwgd2hpY2ggYWZmZWN0cyBzb2NrZXQgbWVtb3J5IGFjY291bnRpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTkZDIExMQ1AgY29yZSwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBORkMgc29ja2V0IG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNjI0ZjYwNmM4Y2Y2NWFkYzBkM2NhYThiYTQ1ZThkYWU4MjBiMWMxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjEgMTU6MTU6NTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX2NvcmUuYyBiL25ldC9uZmMvbGxjcF9jb3JlLmNcbmluZGV4IGNhYzFiNTQ4NzA2NGQuLjQ5Y2I2MzIyNjhjMGMgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2xsY3BfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL2xsY3BfY29yZS5jXG5AQCAtNzg2LDggJiM0Mzs3ODYsMTEgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3BfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXCYjMzQ7TExDUCBUeDogXCYjMzQ7LCBEVU1QX1BSRUZJWF9PRkZTRVQsXG4gXHRcdFx0XHRcdCAgICAgMTYsIDEsIHNrYi1cdTAwM2VkYXRhLCBza2ItXHUwMDNlbGVuLCB0cnVlKTtcbiBcbi1cdFx0XHRpZiAocHR5cGUgPT0gTExDUF9QRFVfSSlcbiYjNDM7XHRcdFx0aWYgKHB0eXBlID09IExMQ1BfUERVX0kpIHtcbiBcdFx0XHRcdGNvcHlfc2tiID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRcdFx0XHRpZiAoY29weV9za2IpXG4mIzQzO1x0XHRcdFx0XHRza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKTtcbiYjNDM7XHRcdFx0fVxuIFxuIFx0XHRcdF9fbmV0X3RpbWVzdGFtcChza2IpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZmNfbGxjcF9zZW5kX2lfZnJhbWUmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfcXVldWVfaV9mcmFtZXMmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfdHhfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbmZjX2xsY3BfdHhfd29ya2AgdG8gc2V0IHRoZSBzb2NrZXQgb3duZXIgb2YgYSBjb3BpZWQgc2tiLCB3aGljaCBhZmZlY3RzIHNvY2tldCBtZW1vcnkgYWNjb3VudGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBORkMgTExDUCBjb3JlLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIE5GQyBzb2NrZXQgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE2MjRmNjA2YzhjZjY1YWRjMGQzY2FhOGJhNDVlOGRhZTgyMGIxYzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAyMSAxNToxNTo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jCmluZGV4IGNhYzFiNTQ4NzA2NGQuLjQ5Y2I2MzIyNjhjMGMgMTAwNjQ0Ci0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9sbGNwX2NvcmUuYwpAQCAtNzg2LDggJiM0Mzs3ODYsMTEgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3BfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCQlwcmludF9oZXhfZHVtcF9kZWJ1ZygmIzM0O0xMQ1AgVHg6ICYjMzQ7LCBEVU1QX1BSRUZJWF9PRkZTRVQsCiAJCQkJCSAgICAgMTYsIDEsIHNrYi0mZ3Q7ZGF0YSwgc2tiLSZndDtsZW4sIHRydWUpOwogCi0JCQlpZiAocHR5cGUgPT0gTExDUF9QRFVfSSkKJiM0MzsJCQlpZiAocHR5cGUgPT0gTExDUF9QRFVfSSkgewogCQkJCWNvcHlfc2tiID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTsKJiM0MzsJCQkJaWYgKGNvcHlfc2tiKQomIzQzOwkJCQkJc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzayk7CiYjNDM7CQkJfQogCiAJCQlfX25ldF90aW1lc3RhbXAoc2tiKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDU0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIExMQ1AgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHRoZSBrZXkgZmlsZSBiZWluZyBtb2RpZmllZCBpcyBgbmV0L25mYy9sbGNwX2NvcmUuY2AuIERpdmluZyBkZWVwZXIsIHRoZSBwYXRjaCB6ZXJvZXMgaW4gb24gY2hhbmdlcyB3aXRoaW4gdGhlIGBuZmNfbGxjcF90eF93b3JrYCBmdW5jdGlvbi4gVGhlIGNydWNpYWwgYWRkaXRpb24gc2VlbXMgdG8gYmUgdGhpcyBsaW5lOiBgaWYgKGNvcHlfc2tiKSBza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKTtgIHdoZW4gY29weWluZyBhbiBgc2tiYC4KCk5vdywgdGhhdCBgc2tiX3NldF9vd25lcl93YCBjYWxsIGlzIHdoYXQgcmVhbGx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSXQgaW1wbGllcyBzb21lIG93bmVyc2hpcCBtYW5hZ2VtZW50IGlzIGJlaW5nIHR3ZWFrZWQgd2hlbiBoYW5kbGluZyBTZW5kIFNLQnMgd2l0aGluIHRoZSBORkMgTExDUCBzdGFjay4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBhZGRlZCBvd25lcnNoaXAgc2V0dGluZy4gV2UgbmVlZCB0byBnbyBiYWNrIGludG8gYG5mY19sbGNwX3R4X3dvcmtgIGFuZCBzZWUgdGhlIGNvbXBsZXRlIHBpY3R1cmUgdG8gYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugb24gbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIGxvb2tpbmcgYXQgaG93IHRoZSBgc2tiYCBpcyB1c2VkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBhZGRpdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgY29weV9za2JgIHZhcmlhYmxlIGlzIGJlaW5nIGhhbmRsZWQgYW5kIHdoYXQga2luZCBvZiBTS0IgaXMgYmVpbmcgaGFuZGxlZCB3aXRoIGBjb3B5X3NrYmAuIEkgYW0gd29uZGVyaW5nIGlmIHRoZSBhZGRpdGlvbiBoZXJlIGlzIHRvIGZpeCBzb21lIGtpbmQgb2YgcmVzb3VyY2UgbGVhayBpc3N1ZS4gVGhlIGNvbnRleHQgb2YgdGhlIGNoYW5nZSBpcyB2aXRhbC4gSSBuZWVkIHRvIHNlZSB3aGF0IGVsc2UgaGFzIGJlZW4gbW9kaWZpZWQgYW5kIGNvbXBhcmUgd2l0aCB0aGUgb2xkZXIgdmVyc2lvbiBvZiB0aGUgY29kZS4gSXMgdGhpcyBhIGJ1ZyBmaXgsIG9wdGltaXphdGlvbiwgb3IgYSBmdW5jdGlvbmFsIGNoYW5nZT8gV2Ugc2hvdWxkIGFsc28gY2hlY2sgb3RoZXIgY29tbWl0cyBpbiB0aGUgc2FtZSByYW5nZSBvZiB0aW1lIGFzIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mY19sbGNwX3R4X3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3BfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9jb3JlLmM9NzIxPXZvaWQgbmZjX2xsY3Bfc2VuZF90b19yYXdfc29jayhzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzYwLVxubmV0L25mYy9sbGNwX2NvcmUuYzo3NjE6c3RhdGljIHZvaWQgbmZjX2xsY3BfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc2Mi17XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNjU2PWludCBuZmNfbGxjcF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5mY19kZXYgKm5kZXYpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjc5LVx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSk7XG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2ODA6XHRJTklUX1dPUksoXHUwMDI2bG9jYWwtXHUwMDNldHhfd29yaywgbmZjX2xsY3BfdHhfd29yayk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2ODEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogTkZDIExMQ1AgYW5kIFNLQiBPd25lcnNoaXAqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1ha2luZyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBgbmZjX2xsY3BfdHhfd29ya2AuIFRoZSBrZXkgbGluZSB0aGF0IGp1bXBzIG91dCBpcyB0aGUgYWRkaXRpb24gb2YgYHNrYl9zZXRfb3duZXJfdyhjb3B5X3NrYiwgc2spYC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIHdlJiMzOTtyZSBlc3NlbnRpYWxseSB0YWtpbmcgb3duZXJzaGlwIG9mIGEgY29waWVkIFNLQiwgYW5kIHRoYXQgaGFzIGRpcmVjdCBpbXBsaWNhdGlvbnMgZm9yIHRoZSB3YXkgd2UgaGFuZGxlIHNvY2tldCBhY2NvdW50aW5nIGFuZCBvdmVyYWxsIG1lbW9yeSB0cmFja2luZyB3aXRoaW4gdGhlIHN5c3RlbS4KClRoaXMgaXNuJiMzOTt0IGp1c3QgY29zbWV0aWM7IGl0JiMzOTtzIGEgcmVhbCBmdW5jdGlvbmFsIHNoaWZ0LiBJdCYjMzk7cyB0ZWxsaW5nIG1lIHRvIHBheSBhdHRlbnRpb24gdG8gaG93IHRoaXMgaW1wYWN0cyB0aGUgcmVzb3VyY2UgbWFuYWdlbWVudCBhcm91bmQgTkZDIExMQ1AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBpbiBwbGF5IHRoYXQgZW5hYmxlIE5GQyBMTENQIGluIHRoZSBmaXJzdCBwbGFjZSwgYXMgdGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkNfTExDUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDg5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTkZDIEtjb25maWcqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgTkZDIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBzdGFuZGFyZCBhcHByb2FjaCDigJMgaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBgbmV0L25mYy9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZmVhdHVyZSBzZXQsIGRlcGVuZGVuY2llcywgYW5kIGJ1aWxkIG9wdGlvbnMgZm9yIHRoaXMgc3Vic3lzdGVtLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBjb3JlIE5GQyBmdW5jdGlvbmFsaXR5IGRlZmluaXRpb25zLCBtYXliZSBzb21lIHNwZWNpZmljIGRyaXZlciBzZWxlY3Rpb25zIGlmIHRoZXkmIzM5O3JlIGhhbmRsZWQgYXQgYSBoaWdoIGxldmVsLCBhbmQgYW55IHBsYXRmb3JtLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXBwbHkuIFRoaXMgS2NvbmZpZyB3aWxsIGxpa2VseSBsaW5rIHRvIG1vcmUgZ3JhbnVsYXIgb25lcyB3aXRoaW4gc3ViZGlyZWN0b3JpZXMgaWYgdGhpbmdzIGFyZSBwcm9wZXJseSBtb2R1bGFyaXplZC4gSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBjb21wbGV4IGRlcGVuZGVuY2llcywgcG9zc2libHkgaW52b2x2aW5nIG90aGVyIG5ldHdvcmtpbmcgY29tcG9uZW50cyBvciBoYXJkd2FyZSBzdXBwb3J0LCBzbyBJJiMzOTtsbCBuZWVkIHRvIGJlIHRob3JvdWdoLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBkZWZhdWx0IHNldHRpbmdzIHRoYXQgbWlnaHQgYmUgYmFrZWQgaW50byB0aGUga2VybmVsIGJ1aWxkLCBhbmQga2VlcCBhbiBleWUgb3V0IGZvciBhbnkgdW51c3VhbCBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIGNyZWF0ZSBwcm9ibGVtcyBsYXRlci4gUmlnaHQsIGxldCYjMzk7cyBnbyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZy01LVxubmV0L25mYy9LY29uZmlnOjY6bWVudWNvbmZpZyBORkNcbm5ldC9uZmMvS2NvbmZpZy03LVx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxuLS1cbm5ldC9uZmMvS2NvbmZpZy0xNi1cbm5ldC9uZmMvS2NvbmZpZzoxNzpjb25maWcgTkZDX0RJR0lUQUxcbm5ldC9uZmMvS2NvbmZpZy0xOC1cdGRlcGVuZHMgb24gTkZDXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE5GQyBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBwdWxsIHVwIHRoZSBgbmV0L25mYy9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGFzc3VtaW5nIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIHN0YW5kYXJkIExpbnV4IGtlcm5lbCBzb3VyY2UgaGVyZSwgc28gdGhpcyBpcyB3aGVyZSB3ZSYjMzk7bGwgZmluZCBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5lYXIgRmllbGQgQ29tbXVuaWNhdGlvbi4gSSYjMzk7bSBpbW1lZGlhdGVseSBsb29raW5nIGZvciB0aGUgZ2VuZXJhbCBzdHJ1Y3R1cmUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSB0aGUgc3RhbmRhcmQgYGNvbmZpZ2AgYmxvY2tzLCBgYm9vbGAsIGB0cmlzdGF0ZWAsIGFuZCBgc3RyaW5nYCBkZWZpbml0aW9ucy4gSSBhbnRpY2lwYXRlIHNlZWluZyBkZXBlbmRlbmNpZXMsIGxpa2VseSBvbiBvdGhlciBuZXR3b3JrLXJlbGF0ZWQgZmVhdHVyZXMgb3IgcG90ZW50aWFsbHkgZXZlbiBoYXJkd2FyZSBkcml2ZXJzLCBlc3BlY2lhbGx5IGlmIE5GQyBjb250cm9sbGVyIHN1cHBvcnQgaXMgbW9kdWxhcml6ZWQuCgpJJiMzOTttIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgaG93IHRoZXkmIzM5O3ZlIG9yZ2FuaXplZCB0aGUgb3B0aW9ucy4gQXJlIHRoZXkgZ3JvdXBlZCBieSBORkMgcHJvdG9jb2wgc3RhbmRhcmRzIChlLmcuLCBORkMtQSwgTkZDLUIsIE5GQy1GKT8gQnkgY29udHJvbGxlciB0eXBlPyBPciBtYXliZSBieSBmZWF0dXJlIHNldCwgbGlrZSByZWFkZXIvd3JpdGVyIGZ1bmN0aW9uYWxpdHkgdmVyc3VzIHBlZXItdG8tcGVlcj8gVGhlIG9yZ2FuaXphdGlvbiB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgdGhlIGRlc2lnbiBwaGlsb3NvcGh5LgoKTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0cy4gV2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgbmVlZCB0byBiZSBlbmFibGVkIGZvciBORkMgdG8gd29yaz8gQXJlIHRoZXJlIGFueSBoYXJkIGRlcGVuZGVuY2llcywgb3IgYXJlIG1vc3QgdGhpbmdzIGNvbmZpZ3VyYWJsZT8gVW5kZXJzdGFuZGluZyB0aGUgZGVmYXVsdHMgaXMga2V5IGJlY2F1c2UgdGhleSBkaWN0YXRlIHRoZSAmIzM0O291dC1vZi10aGUtYm94JiMzNDsgYmVoYXZpb3IuIEFyZSB0aGUgZGVmYXVsdHMgc2Vuc2libGUgZnJvbSBhIHNlY3VyaXR5IGFuZCB1c2FiaWxpdHkgc3RhbmRwb2ludD8gVGhhdCYjMzk7cyB3aGF0IEkmIzM5O2xsIGJlIGxvb2tpbmcgYXQuCgpJJiMzOTtsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSAmIzM0O2V4cGVydCYjMzQ7IG9wdGlvbnMsIGlmIHRoZXJlIGFyZSBhbnksIGFuZCBob3cgdGhleSBhcmUgZXhwbGFpbmVkLiBBcmUgdGhlcmUgY2xlYXIgZGVzY3JpcHRpb25zIG9mIHRoZSBpbXBhY3Qgb2YgdGhlc2Ugb3B0aW9ucz8gSSB3YW50IHRvIHNlZSBpZiB0aGUgS2NvbmZpZyBwcm92aWRlcyBzdWZmaWNpZW50IGd1aWRhbmNlIGZvciB0aG9zZSB3aG8gbWlnaHQgd2FudCB0byBjdXN0b21pemUgdGhlIE5GQyBzdGFjayBmb3IgdGhlaXIgc3BlY2lmaWMgZW1iZWRkZWQgZGV2aWNlIG9yIGFwcGxpY2F0aW9uLiBGaW5hbGx5LCBJJiMzOTtsbCBza2ltIGZvciBhbnkgZGVwcmVjYXRpb24gd2FybmluZ3Mgb3IgYW55dGhpbmcgdGhhdCBwb2ludHMgdG8gc29tZSBvZiB0aGUgY29kZSBiZWluZyByZXBsYWNlZCBvciB1bmRlciBkZXZlbG9wbWVudC4gQWx3YXlzIGludGVyZXN0aW5nIHRvIG5vdGUgdGhlICYjMzQ7VE9ETyYjMzQ7IGVudHJpZXMgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmZjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTkZDIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTkZDXG4gICA3Olx0XHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG4gICA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtORkMgc3Vic3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdGRlZmF1bHQgblxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHN1cHBvcnQgZm9yIE5GQyAoTmVhciBmaWVsZFxuICAxMjpcdFx0ICBjb21tdW5pY2F0aW9uKSBkZXZpY2VzLlxuICAxMzpcdFxuICAxNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsXG4gIDE1Olx0XHQgIGJlIGNhbGxlZCBuZmMuXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIE5GQ19ESUdJVEFMXG4gIDE4Olx0XHRkZXBlbmRzIG9uIE5GQ1xuICAxOTpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuICAyMDpcdFx0c2VsZWN0IENSQ19JVFVfVFxuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7TkZDIERpZ2l0YWwgUHJvdG9jb2wgc3RhY2sgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVmYXVsdCBuXG4gIDIzOlx0XHRoZWxwXG4gIDI0Olx0XHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGJ1aWxkIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrIHN1cHBvcnQuXG4gIDI1Olx0XHQgIFRoaXMgaXMgbmVlZGVkIGJ5IE5GQyBjaGlwc2V0cyB3aG9zZSBmaXJtd2FyZSBvbmx5IGltcGxlbWVudFxuICAyNjpcdFx0ICB0aGUgTkZDIGFuYWxvZyBsYXllci5cbiAgMjc6XHRcbiAgMjg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxuICAyOTpcdFx0ICBiZSBjYWxsZWQgbmZjX2RpZ2l0YWwuXG4gIDMwOlx0XG4gIDMxOlx0c291cmNlIFwmIzM0O25ldC9uZmMvbmNpL0tjb25maWdcJiMzNDtcbiAgMzI6XHRzb3VyY2UgXCYjMzQ7bmV0L25mYy9oY2kvS2NvbmZpZ1wmIzM0O1xuICAzMzpcdFxuICAzNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRm9jdXNpbmcgb24gTkZDIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gTkZDIGlzIGNsZWFybHkgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBwb2ludCBoZXJlLiBCdXQgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJJiMzOTttIHdvbmRlcmluZyBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGZvciBMTENQIHRoYXQgYXJlICpzZXBhcmF0ZSogZnJvbSB0aGUgZ2VuZXJhbCBORkMgc2V0dGluZ3MuIEl0JiMzOTtzIHVzdWFsbHkgdGhlIGNhc2UgdGhhdCB0aGVyZSBhcmUgbW9yZSBzcGVjaWZpYyBvcHRpb25zIGZvciBlYWNoIHByb3RvY29sLiBMZXQmIzM5O3Mgbm90IGFzc3VtZSBldmVyeXRoaW5nIGlzIHVuZGVyIHRoZSBgTkZDYCB1bWJyZWxsYSwgZXZlbiBpZiBpdCBzZWVtcyB0aGF0IHdheSBhdCBmaXJzdCBnbGFuY2UuIFRpbWUgdG8gZGl2ZSBpbnRvIGBuZXQvbmZjL01ha2VmaWxlYCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgaGludHMgb3Igc3BlY2lmaWMgYnVpbGQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBMTENQIHR1Y2tlZCBhd2F5IGluIHRoZXJlLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIE5GQyBhbmQgTExDUCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIE1ha2VmaWxlIGZvciB0aGUgTGludXggTkZDIHN1YnN5c3RlbS5cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0b2JqLSQoQ09ORklHX05GQykgJiM0Mzs9IG5mYy5vXG4gICA3Olx0b2JqLSQoQ09ORklHX05GQ19OQ0kpICYjNDM7PSBuY2kvXG4gICA4Olx0b2JqLSQoQ09ORklHX05GQ19IQ0kpICYjNDM7PSBoY2kvXG4gICA5Olx0b2JqLSQoQ09ORklHX05GQ19ESUdJVEFMKSAmIzQzOz0gbmZjX2RpZ2l0YWwub1xuICAxMDpcdFxuICAxMTpcdG5mYy1vYmpzIDo9IGNvcmUubyBuZXRsaW5rLm8gYWZfbmZjLm8gcmF3c29jay5vIGxsY3BfY29yZS5vIGxsY3BfY29tbWFuZHMubyBcXFxuICAxMjpcdFx0XHRsbGNwX3NvY2sub1xuICAxMzpcdFxuICAxNDpcdG5mY19kaWdpdGFsLW9ianMgOj0gZGlnaXRhbF9jb3JlLm8gZGlnaXRhbF90ZWNobm9sb2d5Lm8gZGlnaXRhbF9kZXAub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzgzCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgbGxjcF9jb3JlLm9gIE1vZHVsZSoqCgpPa2F5LCBzbyBgbGxjcF9jb3JlLm9gIGlzIGNsZWFybHkgcGFydCBvZiB0aGUgTkZDIG9iamVjdCBzZXQsIHNwZWNpZmljYWxseSBjb21waWxlZCB3aGVuIHRoZSBgQ09ORklHX05GQ2Agb3B0aW9uIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3Mgb3VyIHN0YXJ0aW5nIHBvaW50OiBgTkZDYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmbGFnLiBOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoaXMgYG5mY19sbGNwX3R4X3dvcmtgIGZ1bmN0aW9uLiBUaGUgY29kZSBpbmRpY2F0ZXMgaXQmIzM5O3MgYSB3b3JrcXVldWUgZnVuY3Rpb24sIG1lYW5pbmcgaXQmIzM5O3MgbGlrZWx5IGNhbGxlZCBhc3luY2hyb25vdXNseS4gSXQgc2VlbXMgYG5mY19sbGNwX3NlbmRfdG9fcmF3X3NvY2tgIGlzIG9uZSB0cmlnZ2VyLCBvciBwZXJoYXBzIG90aGVyIHBhdGhzLiBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGlzIGl0IHJlYWNoYWJsZT8gWWVzLCBhcHBhcmVudGx5IHRocm91Z2ggTkZDIHNvY2tldHMuIFRoYXTigJlzIGdvb2QuIFdlIGtub3cgdGhlIGNvbW11bmljYXRpb24gcGF0aHdheSBub3cuCgpNeSBnb2FsIGhlcmUgaXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0cy4gSXMgYG5mY19sbGNwX3R4X3dvcmtgIGl0c2VsZiBhIGdvb2QgY2FuZGlkYXRlLCBvciBzaG91bGQgSSBiZSBsb29raW5nIGZvciBmdW5jdGlvbnMgdGhhdCBmZWVkIGludG8gaXQ/IEl0JiMzOTtzIG1hcmtlZCBhcyBzdGF0aWMsIHdoaWNoIGNvdWxkIGluZGljYXRlIGl04oCZcyBpbnRlcm5hbCB0byB0aGUgbW9kdWxlLCBidXQgdGhhdCYjMzk7cyBub3QgYWx3YXlzIGEgaGFyZCBiYXJyaWVyLiBMZXQgbWUgdHJhY2UgYmFjayBhbmQgc2VlIHdoYXQgYWN0dWFsbHkgcXVldWVzIHRoaXMgd29yay4gVW5kZXJzdGFuZGluZyB0aGUgcXVldWluZyBtZWNoYW5pc20gd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiBjb250cm9sIGZsb3cgYW5kIHN0YXRlIG1hbmFnZW1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3F1ZXVlX3dvcmsuKnR4X3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9kYXRhLmM9MTcxPWludCBuY2lfc2VuZF9kYXRhKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCBfX3U4IGNvbm5faWQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9uY2kvZGF0YS5jLTE5OS1cdG5kZXYtXHUwMDNlY3VyX2Nvbm5faWQgPSBjb25uX2lkO1xubmV0L25mYy9uY2kvZGF0YS5jOjIwMDpcdHF1ZXVlX3dvcmsobmRldi1cdTAwM2V0eF93cSwgXHUwMDI2bmRldi1cdTAwM2V0eF93b3JrKTtcbm5ldC9uZmMvbmNpL2RhdGEuYy0yMDEtXG4tLVxubmV0L25mYy9uY2kvbnRmLmM9NTQ9c3RhdGljIGludCBuY2lfY29yZV9jb25uX2NyZWRpdHNfbnRmX3BhY2tldChzdHJ1Y3QgbmNpX2RldiAqbmRldixcbi0tXG5uZXQvbmZjL25jaS9udGYuYy05NC1cdGlmICghc2tiX3F1ZXVlX2VtcHR5KFx1MDAyNm5kZXYtXHUwMDNldHhfcSkpXG5uZXQvbmZjL25jaS9udGYuYzo5NTpcdFx0cXVldWVfd29yayhuZGV2LVx1MDAzZXR4X3dxLCBcdTAwMjZuZGV2LVx1MDAzZXR4X3dvcmspO1xubmV0L25mYy9uY2kvbnRmLmMtOTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0OTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2VzcywgZGVsaXZlcmVkIGFzIHRob3VnaCBJJiMzOTttIHdvcmtpbmcgdGhyb3VnaCBpdCBteXNlbGY6CgoqKkxMQ1AgSW1wbGVtZW50YXRpb24gRGVlcCBEaXZlKioKCk9rYXksIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBUaGlua2luZyBhYm91dCB0aGlzIGlzc3VlLCBJIGhhdmUgYSBmZWVsaW5nIHRoZSBwcm9ibGVtIGxpZXMgd2l0aGluIHRoZSBsb3ctbGV2ZWwgY29tbXVuaWNhdGlvbi4gSSBzaG91bGQgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBjb3JlIExMQ1AgaW1wbGVtZW50YXRpb24uIEEgZ29vZCBzdGFydGluZyBwb2ludCB3b3VsZCBiZSB0aGUgYG5ldC9uZmMvbGxjcF9jb3JlLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0cmFuc21pc3Npb24gd29yayBpcyBoYW5kbGVkLiBMZXQgbWUgc2VhcmNoIGZvciB0aGUgZnVuY3Rpb24gb3IgdmFyaWFibGUgcmVsYXRlZCB0byB0aGUgdHJhbnNtaXNzaW9uIHdvcmssIHRoYXQgaXMgYHR4X3dvcmtgLiBIb3BlZnVsbHkgdGhpcyB3aWxsIGdpdmUgbWUgYSBwb2ludCB0byBiZWdpbiB1bmRlcnN0YW5kaW5nIHRoZSBkYXRhIGZsb3cgaGVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IEkgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3R4X3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3BfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9jb3JlLmM9MTYwPXN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2NC1cdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSk7XG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2NTpcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2bG9jYWwtXHUwMDNldHhfd29yayk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2Ni1cdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2bG9jYWwtXHUwMDNlcnhfd29yayk7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz03MjE9dm9pZCBuZmNfbGxjcF9zZW5kX3RvX3Jhd19zb2NrKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy03NjAtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc2MTpzdGF0aWMgdm9pZCBuZmNfbGxjcF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzYyLXtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzYzLVx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwsXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc2NDpcdFx0XHRcdFx0XHQgICAgdHhfd29yayk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTc2NS1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTQ4PXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2NS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU2NjpcdHNjaGVkdWxlX3dvcmsoXHUwMDI2bG9jYWwtXHUwMDNldHhfd29yayk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1NjctXHRrZnJlZV9za2IobG9jYWwtXHUwMDNlcnhfcGVuZGluZyk7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNjI5PXZvaWQgbmZjX2xsY3BfbWFjX2lzX3VwKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHUzMiB0YXJnZXRfaWR4LFxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY0Ni1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTY0NzpcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZsb2NhbC1cdTAwM2V0eF93b3JrKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY0OC1cdH0gZWxzZSB7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNjU2PWludCBuZmNfbGxjcF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5mY19kZXYgKm5kZXYpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjc5LVx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSk7XG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2ODA6XHRJTklUX1dPUksoXHUwMDI2bG9jYWwtXHUwMDNldHhfd29yaywgbmZjX2xsY3BfdHhfd29yayk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2ODEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MzEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqTExDUCBUcmFuc21pdCBRdWV1ZSBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIE5GQyBMTENQIGNvZGUgYW5kIHRyYWNraW5nIGhvdyB0aGUgdHJhbnNtaXQgc2lkZSBpcyBtYW5hZ2VkLiBJIHNlZSB0aGF0IGBuZmNfbGxjcF90eF93b3JrYCBnZXRzIHNjaGVkdWxlZCBpbiB0d28gcGxhY2VzOiBgbmZjX2xsY3Bfcnhfd29ya2AgYW5kIGBuZmNfbGxjcF9tYWNfaXNfdXBgLiBUaGF0IG1ha2VzIHNlbnNlOyBpbmNvbWluZyBkYXRhIG1pZ2h0IHRyaWdnZXIgYSB0cmFuc21pdCwgYW5kIHRoZSBNQUMgbGF5ZXIgY29taW5nIG9ubGluZSBjb3VsZCBhbHNvIGtpY2sgdGhpbmdzIG9mZi4gQnV0IEkmIzM5O20gbWlzc2luZyBhIGNyaXRpY2FsIHBpZWNlIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGF0KiBhY3R1YWxseSBlbnF1ZXVlcyB0aGUgU29ja2V0IEJ1ZmZlcnMgKHNrYnMpIG9udG8gYGxvY2FsLSZndDt0eF9xdWV1ZWAuIFdoZXJlIGFyZSB0aGUgdHJhbnNtaXQgcGFja2V0cyBhY3R1YWxseSAqcHV0KiBiZWZvcmUgdGhlIHdvcmsgcXVldWUgZXZlbiBnZXRzIGEgY2hhbmNlIHRvIHNlZSB0aGVtPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgcXVldWUgdG8gZmluZCB0aGUgb3JpZ2luIHBvaW50cywgdG8gZnVsbHkgZ3Jhc3AgdGhlIGZsb3cgYW5kIHBvdGVudGlhbCBzeW5jaHJvbml6YXRpb24gaXNzdWVzLiBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIG1lYXQgb2YgdGhlIHRyYW5zbWl0IGxvZ2ljIHByb2JhYmx5IHJlc2lkZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3R4X3F1ZXVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3BfY29yZS5jPTQ1PXN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9wdXJnZShzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jaylcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTQ5LVxubmV0L25mYy9sbGNwX2NvcmUuYzo1MDpcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZzb2NrLVx1MDAzZXR4X3F1ZXVlKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNTEtXHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2c29jay1cdTAwM2V0eF9wZW5kaW5nX3F1ZXVlKTtcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTU2LVx0LyogU2VhcmNoIGZvciBsb2NhbCBwZW5kaW5nIFNLQnMgdGhhdCBhcmUgcmVsYXRlZCB0byB0aGlzIHNvY2tldCAqL1xubmV0L25mYy9sbGNwX2NvcmUuYzo1NzpcdHNrYl9xdWV1ZV93YWxrX3NhZmUoXHUwMDI2bG9jYWwtXHUwMDNldHhfcXVldWUsIHMsIHRtcCkge1xubmV0L25mYy9sbGNwX2NvcmUuYy01OC1cdFx0aWYgKHMtXHUwMDNlc2sgIT0gXHUwMDI2c29jay1cdTAwM2Vzaylcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTYwLVxubmV0L25mYy9sbGNwX2NvcmUuYzo2MTpcdFx0c2tiX3VubGluayhzLCBcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTYyLVx0XHRrZnJlZV9za2Iocyk7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz02Nj1zdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTcyLVxubmV0L25mYy9sbGNwX2NvcmUuYzo3MzpcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTc0LVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTYwPXN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2My1cdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmxvY2FsLVx1MDAzZWxpbmtfdGltZXIpO1xubmV0L25mYy9sbGNwX2NvcmUuYzoxNjQ6XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2bG9jYWwtXHUwMDNldHhfcXVldWUpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNjUtXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmxvY2FsLVx1MDAzZXR4X3dvcmspO1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9MzEyPXN0YXRpYyBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm5mY19sbGNwX3JlbW92ZV9sb2NhbChzdHJ1Y3QgbmZjX2RldiAqZGV2KVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMzE4LVx0XHRpZiAobG9jYWwtXHUwMDNlZGV2ID09IGRldikge1xubmV0L25mYy9sbGNwX2NvcmUuYzozMTk6XHRcdFx0c3Bpbl9sb2NrKFx1MDAyNmxvY2FsLVx1MDAzZXR4X3F1ZXVlLmxvY2spO1xubmV0L25mYy9sbGNwX2NvcmUuYy0zMjAtXHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2VsaXN0KTtcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MzIxOlx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmxvY2FsLVx1MDAzZXR4X3F1ZXVlLmxvY2spO1xubmV0L25mYy9sbGNwX2NvcmUuYy0zMjItXHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2bGxjcF9kZXZpY2VzX2xvY2spO1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9NzYxPXN0YXRpYyB2b2lkIG5mY19sbGNwX3R4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzY4LVxubmV0L25mYy9sbGNwX2NvcmUuYzo3Njk6XHRza2IgPSBza2JfZGVxdWV1ZShcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTc3MC1cdGlmIChza2IgIT0gTlVMTCkge1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzc3LVx0XHR9IGVsc2UgaWYgKGxsY3Bfc29jayBcdTAwMjZcdTAwMjYgIWxsY3Bfc29jay1cdTAwM2VyZW1vdGVfcmVhZHkpIHtcbm5ldC9uZmMvbGxjcF9jb3JlLmM6Nzc4Olx0XHRcdHNrYl9xdWV1ZV9oZWFkKFx1MDAyNmxvY2FsLVx1MDAzZXR4X3F1ZXVlLCBza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy03NzktXHRcdFx0bmZjX2xsY3Bfc2VuZF9zeW1tKGxvY2FsLVx1MDAzZWRldik7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xMDQ1PWludCBuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jaylcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEwNTgtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjEwNTk6XHRcdHBkdSA9IHNrYl9kZXF1ZXVlKFx1MDAyNnNvY2stXHUwMDNldHhfcXVldWUpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xMDYwLVx0XHRpZiAocGR1ID09IE5VTEwpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMDY1LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxMDY2Olx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSwgcGR1KTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA2Ny1cdFx0bnJfZnJhbWVzJiM0MzsmIzQzOztcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTEwNzM9c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9oZGxjKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMTQ0LVx0XHRcdHNrYl91bmxpbmsocywgXHUwMDI2bGxjcF9zb2NrLVx1MDAzZXR4X3BlbmRpbmdfcXVldWUpO1xubmV0L25mYy9sbGNwX2NvcmUuYzoxMTQ1Olx0XHRcdHNrYl9xdWV1ZV9oZWFkKFx1MDAyNmxvY2FsLVx1MDAzZXR4X3F1ZXVlLCBzKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTE0Ni1cdFx0fVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTY1Nj1pbnQgbmZjX2xsY3BfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuZmNfZGV2ICpuZGV2KVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY3OC1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTY3OTpcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2bG9jYWwtXHUwMDNldHhfcXVldWUpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNjgwLVx0SU5JVF9XT1JLKFx1MDAyNmxvY2FsLVx1MDAzZXR4X3dvcmssIG5mY19sbGNwX3R4X3dvcmspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTYwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2Ygd2hhdCYjMzk7cyBnb2luZyBvbjoKCioqUXVldWluZyBJLUZyYW1lcyBpbiB0aGUgTkZDIExMQ1AgTGF5ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBJLWZyYW1lcyBhcmUgaGFuZGxlZCBpbiB0aGUgTkZDIExMQ1AgbGF5ZXIuIFRoZSBjb3JlIGZ1bmN0aW9uIGhlcmUsIGl0IHNlZW1zLCBpcyBgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXNgLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiYjMzk7cyBqb2IgaXMgdG8gdGFrZSB0aGVzZSBJLWZyYW1lcyBhbmQgcHV0IHRoZW0gaW4gdGhlIGBsb2NhbC0mZ3Q7dHhfcXVldWVgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyB0aGUgbmF0dXJhbCB3YXkgdG8gbWFuYWdlIG91dGJvdW5kIGZyYW1lcy4gVG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIHF1ZXVpbmcgaGFwcGVucywgYW5kIHRvIGxvb2sgZm9yIHBvdGVudGlhbCBpc3N1ZXMgb3Igb3B0aW1pemF0aW9ucywgSSYjMzk7bGwgbmVlZCB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gYW5kIGltcGxlbWVudGF0aW9uIG9mIGBuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lc2Agd2l0aGluIGBuZXQvbmZjL2xsY3BfY29yZS5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgYW5kIHdoZXJlIEkgY2FuIGdhaW4gYSByZWFsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHRyYW5zbWlzc2lvbiBwcm9jZXNzLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgZnJhbWVzIGFyZSBhZGRlZCB0byB0aGUgcXVldWUsIGFuZCB3aGF0IGNvbmN1cnJlbmN5IG1lY2hhbmlzbXMsIGlmIGFueSwgYXJlIGluIHBsYWNlIHRvIG1hbmFnZSBhY2Nlc3MgdG8gdGhlIHF1ZXVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcC5oPTIwOD12b2lkIG5mY19sbGNwX3B1dF9zc2FwKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHU4IHNzYXApO1xubmV0L25mYy9sbGNwLmg6MjA5OmludCBuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jayk7XG5uZXQvbmZjL2xsY3AuaC0yMTAtdm9pZCBuZmNfbGxjcF9zZW5kX3RvX3Jhd19zb2NrKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM9NjYwPWludCBuZmNfbGxjcF9zZW5kX2lfZnJhbWUoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2ssXG4tLVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmMtNzI5LVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM6NzMwOlx0XHRuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhzb2NrKTtcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jLTczMS1cbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTkxND1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2Nvbm5lY3Qoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEwNDQtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjEwNDU6aW50IG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMDQ2LXtcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTEwNzM9c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9oZGxjKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMTUzLVxubmV0L25mYy9sbGNwX2NvcmUuYzoxMTU0Olx0aWYgKG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKGxsY3Bfc29jaykgPT0gMCBcdTAwMjZcdTAwMjYgcHR5cGUgPT0gTExDUF9QRFVfSSlcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTE1NS1cdFx0bmZjX2xsY3Bfc2VuZF9ycihsbGNwX3NvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDA2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gTExDUCBGcmFtZSBUcmFuc21pc3Npb24qKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRocm91Z2ggdGhpcyBORkMgY29kZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgdGhlIGxvdy1sZXZlbCBjb21tdW5pY2F0aW9uIHByb3RvY29sIChMTENQKS4gSSBzZWUgdGhhdCBgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lYCBpbiBgbmV0L25mYy9sbGNwX2NvbW1hbmRzLmNgIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3Igc2VuZGluZyBJLWZyYW1lcy4gTWFrZXMgc2Vuc2UuIEJ1dCB3aGVyZSBkb2VzIHRoZSBmcmFtZSBnZXQgKnF1ZXVlZCogZm9yIHNlbmRpbmc/IFRoZSBjb2RlIHRlbGxzIG1lIGl0IGNhbGxzIGBuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lc2AuIEFscmlnaHQsIHNvIHRoYXQmIzM5O3MgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBOb3csIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG5mY19sbGNwX3NlbmRfaV9mcmFtZWAgaXRzZWxmIGFuZCBzZWUgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgdGhlIHNlbmQsIHdoYXQgZGF0YSBpcyBwYXNzZWQsIGFuZCB3aGF0IHByZXBhcmF0b3J5IHN0ZXBzIGFyZSBpbnZvbHZlZCBiZWZvcmUgcXVldWluZyB0aGUgZnJhbWUuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgYW5kIHdpbmRvd2luZyBsb2dpYyB3aWxsIGJlIGhhbmRsZWQsIHdoaWNoIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfbGxjcF9zZW5kX2lfZnJhbWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3AuaD0yNDM9aW50IG5mY19sbGNwX3NlbmRfZGlzY29ubmVjdChzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jayk7XG5uZXQvbmZjL2xsY3AuaDoyNDQ6aW50IG5mY19sbGNwX3NlbmRfaV9mcmFtZShzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jayxcbm5ldC9uZmMvbGxjcC5oLTI0NS1cdFx0XHQgIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbik7XG4tLVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM9NjI3PWludCBuZmNfbGxjcF9zZW5kX2RtKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHU4IHNzYXAsIHU4IGRzYXAsIHU4IHJlYXNvbilcbi0tXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy02NTktXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYzo2NjA6aW50IG5mY19sbGNwX3NlbmRfaV9mcmFtZShzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jayxcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jLTY2MS1cdFx0XHQgIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTc4NT1zdGF0aWMgaW50IGxsY3Bfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTgzNC1cbm5ldC9uZmMvbGxjcF9zb2NrLmM6ODM1Olx0cmV0dXJuIG5mY19sbGNwX3NlbmRfaV9mcmFtZShsbGNwX3NvY2ssIG1zZywgbGVuKTtcbm5ldC9uZmMvbGxjcF9zb2NrLmMtODM2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY5OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogTExDUCBTb2NrZXQgU2VuZCBPcGVyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyYWNpbmcgaG93IHRoaXMgY29kZSBpcyByZWFjaGVkLiBgbGxjcF9zb2NrX3NlbmRtc2dgIGNhbGxzIGBuZmNfbGxjcF9zZW5kX2lfZnJhbWVgLCBhbmQgdGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgc2VuZCBvcGVyYXRpb24gb3ZlciB0aGUgc29ja2V0LiBUaGlzIG1lYW5zIHRoYXQgdXNlcnNwYWNlIGNvZGUgY2FuIHJlYWNoIHRoaXMgbG9naWMgdGhyb3VnaCBzdGFuZGFyZCBzb2NrZXQgb3BlcmF0aW9ucywgd2hpY2ggaXMgaW1wb3J0YW50IGZvciBmdXp6aW5nLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYHNrYl9zZXRfb3duZXJfd2Ag4oCTIHRoYXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gcGF5IGF0dGVudGlvbiB0by4gVGhlIHJlbGV2YW50IGNvbmZpZyBoZXJlIGlzIGBORkNgLgoKVGhlIHF1ZXN0aW9uIG5vdyBpcywgd2hhdCBhcmUgdGhlIGJlc3QgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nPyBgbGxjcF9zb2NrX3NlbmRtc2dgIGxvb2tzIGxpa2UgYSBzdHJvbmcgY2FuZGlkYXRlIGJlY2F1c2UgaXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IGZyb20gdGhlIHNvY2tldCBsYXllci4gSSBzaG91bGQgYWxzbyBjb25zaWRlciBgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lYCBkaXJlY3RseSwgdGhhdCYjMzk7cyB3aGVyZSB0aGUgYWN0dWFsIGZyYW1lIHRyYW5zbWlzc2lvbiBoYXBwZW5zLiBXYWl0LCBJIGFsbW9zdCBmb3Jnb3QsIGBuZmNfbGxjcF90eF93b3JrYC4uLiBidXQgdGhhdCYjMzk7cyBtYXJrZWQgc3RhdGljLCByaWdodD8gWWVzLCBzbyB0aGF0JiMzOTtzIHByb2JhYmx5IG5vdCBhIGdvb2QgZnV6emluZyB0YXJnZXQgc2luY2UgaXQgY2FuJiMzOTt0IGJlIGNhbGxlZCBkaXJlY3RseS4gYG5mY19sbGNwX3NlbmRfaV9mcmFtZWAgaXMgbm9uLXN0YXRpYyB0aG91Z2gsIHNvIHRoYXQmIzM5O3MgZ29vZC4KClNvLCBsZXQmIzM5O3MgY2lyY2xlIGJhY2suIGBsbGNwX3NvY2tfc2VuZG1zZ2AgYW5kIGBuZmNfbGxjcF9zZW5kX2lfZnJhbWVgIGFyZSB0aGUga2V5IGFyZWFzLiBJIG5lZWQgdG8gZGlnIGludG8gYGxsY3Bfc29ja19zZW5kbXNnYCBhbmQgc2VlIHdoYXQmIzM5O3MgcmVhbGx5IGhhcHBlbmluZyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGxjcF9zb2NrX3NlbmRtc2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3Bfc29jay5jPTY2MT1zdGF0aWMgaW50IGxsY3Bfc29ja19jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICpfYWRkcixcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTc4NC1cbm5ldC9uZmMvbGxjcF9zb2NrLmM6Nzg1OnN0YXRpYyBpbnQgbGxjcF9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxubmV0L25mYy9sbGNwX3NvY2suYy03ODYtXHRcdFx0ICAgICBzaXplX3QgbGVuKVxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmM9OTI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGxsY3Bfc29ja19vcHMgPSB7XG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy05NDEtXHQuZ2V0c29ja29wdCAgICAgPSBuZmNfbGxjcF9nZXRzb2Nrb3B0LFxubmV0L25mYy9sbGNwX3NvY2suYzo5NDI6XHQuc2VuZG1zZyAgICAgICAgPSBsbGNwX3NvY2tfc2VuZG1zZyxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTQzLVx0LnJlY3Ztc2cgICAgICAgID0gbGxjcF9zb2NrX3JlY3Ztc2csXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTM4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIExMQ1AgRnJhbWUgVHJhbnNtaXNzaW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgTExDUCBmcmFtZSB0cmFuc21pc3Npb24gY29kZS4gVGhlIGZ1bmN0aW9uIGBsbGNwX3NvY2tfc2VuZG1zZ2AgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIG1ha2VzIGl0IGEgYml0IHRyaWNreSwgYmVjYXVzZSBpdCBjb3VsZCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgb3IgaXQgbWF5IG5vdCBldmVuIGhhdmUgYSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MuIFRoaXMgbWFrZXMgZGlyZWN0IGFuYWx5c2lzIGRpZmZpY3VsdC4KCkhvd2V2ZXIsIGBuZmNfbGxjcF9zZW5kX2lfZnJhbWVgIGlzIGRlY2xhcmVkIGFzIG5vbi1zdGF0aWMuIFRoaXMgaXMgbXVjaCBtb3JlIHByb21pc2luZy4gSSYjMzk7bGwgZm9jdXMgbXkgYXR0ZW50aW9uIHRoZXJlIGFuZCBzZWUgd2hhdCBpbnNpZ2h0cyBJIGNhbiBnbGVhbiBmcm9tIHRoaXMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mY19sbGNwX3NlbmRfaV9mcmFtZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9jb21tYW5kcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9jb21tYW5kcy5jPTYyNz1pbnQgbmZjX2xsY3Bfc2VuZF9kbShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCB1OCBzc2FwLCB1OCBkc2FwLCB1OCByZWFzb24pXG4tLVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmMtNjU5LVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM6NjYwOmludCBuZmNfbGxjcF9zZW5kX2lfZnJhbWUoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2ssXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy02NjEtXHRcdFx0ICBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTIxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipJbnRlcm5hbCBSZXZpZXcgb2YgTkZDIExMQ1AgRnJhbWUgVHJhbnNtaXNzaW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIHdoYXQgYW0gSSB0aGlua2luZyBhYm91dCBoZXJlPyAqbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lKiBpc24mIzM5O3QgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIHF1ZXN0aW9uIGluIG15IG1pbmQgYWJvdXQgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgZm9yIGNvbmN1cnJlbmN5IGlzc3Vlcy4gVGhlbiwgdGhhdCBuYXR1cmFsbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgKm5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKi4gQXJlIHRoZXNlIHR3byByZWxhdGVkPyBJcyB0aGUgcXVldWluZyBtZWNoYW5pc20gdGhyZWFkLXNhZmUgb3IgaXMgaXQgc29tZWhvdyBsaW5rZWQ/IFBlcmhhcHMgdGhlcmUmIzM5O3MgYSBkZXNpZ24gZGVjaXNpb24gSSBuZWVkIHRvIHJldmlldy4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBub24tc3RhdGljIG5hdHVyZSBvZiB0aGUgc2VuZGluZyBmdW5jdGlvbiBpcyBoYW5kbGVkIGNvcnJlY3RseSBpZiBtdWx0aXBsZSB0aHJlYWRzIGNvdWxkIGJlIGNhbGxpbmcgaXQuIEl0IHNvdW5kcyBsaWtlIHRoZXJlIGNvdWxkIGJlIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX2NvcmUuYz05MTQ9c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9jb25uZWN0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMDQ0LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxMDQ1OmludCBuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jaylcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA0Ni17XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xMDczPXN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfaGRsYyhzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTE1My1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTE1NDpcdGlmIChuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhsbGNwX3NvY2spID09IDAgXHUwMDI2XHUwMDI2IHB0eXBlID09IExMQ1BfUERVX0kpXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTUtXHRcdG5mY19sbGNwX3NlbmRfcnIobGxjcF9zb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NTcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgUmVhc29uaW5nIG9uIEFQSSBFbnRyeXBvaW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXNgIGZ1bmN0aW9uLiBJdCYjMzk7cyAqbm90KiBzdGF0aWMsIHdoaWNoIGlzIGdvb2QuIFRoYXQmIzM5O3MgdGhlIGZpcnN0IGNoZWNrLiBXaGF0IGFib3V0IGBuZmNfbGxjcF90eF93b3JrYCB0aG91Z2g/IEhtbSwgaXQgKmlzKiBzdGF0aWMsIGJ1dCB0aGVuIEkgcmVtZW1iZXIgaXQmIzM5O3MgYSB3b3JrcXVldWUgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0JiMzOTtzIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgdG8gYElOSVRfV09SS2AuIFRoYXQgbWVhbnMgdGhlIGNvbXBpbGVyIGFsbW9zdCBjZXJ0YWlubHkgKndvbiYjMzk7dCogaW5saW5lIGl0LCBzbyBpdCB3aWxsIGhhdmUgaXRzIG93biBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCYjMzk7cyB3aGF0IHRoZSBwcm9tcHQgd2FudGVkLCBhdm9pZGluZyBpbmxpbmVkIGZ1bmN0aW9ucyEKClNvIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHdhbnRzIG1lIHRvIGNob29zZSBub24tc3RhdGljLCAqbm9uLWlubGluZWQqIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMuIFNpbmNlIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaXQsIGV2ZW4gdGhvdWdoIGBuZmNfbGxjcF90eF93b3JrYCBpcyBzdGF0aWMsIGJlY2F1c2UgaXQmIzM5O3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQmIzM5O3MgYSBnb29kIGVudHJ5IHBvaW50LiBCdXQgYG5mY19sbGNwX3NlbmRfaV9mcmFtZWAgbG9va3MgZXZlbiBiZXR0ZXIsIGFuZCBpdCAqaXMqIG5vbi1zdGF0aWMsIHNvIGxldCYjMzk7cyBzdGljayB3aXRoIHRoYXQuCgpOb3csIGxldCYjMzk7cyBzZWUgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24uIElzIGp1c3QgYE5GQ2AgZW5hYmxlZD8gTGV0JiMzOTtzIGNoZWNrLiBgTkZDYCBkZXBlbmRzIG9uIGBSRktJTEwgfHwgIVJGS0lMTGAuIFRoYXQmIzM5O3MgYSBiaXQgb2RkLi4uIEFoLCB3YWl0LiBgTkZDYCBpcyBgdHJpc3RhdGUgJiMzNDtORkMgc3Vic3lzdGVtIHN1cHBvcnQmIzM0O2AuIE9rYXksIHRoYXQgbWFrZXMgbW9yZSBzZW5zZS4gQXJlIHRoZXJlIGFueSBvdGhlciBjb25maWcgb3B0aW9ucyB0aGF0IGFyZSBuZWVkZWQ/IExpa2UsIGBORkNfTkNJYCBvciBgTkZDX0hDSWA/CgpUaGUgcGF0Y2ggaXMgaW4gYG5ldC9uZmMvbGxjcF9jb3JlLmNgLCBzbyBpdCBzaG91bGQgYmUgd2l0aGluIGBsbGNwX2NvcmUub2AuIFRoYXQgZmlsZSBnZXRzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19ORkNgIGlzIGVuYWJsZWQsIHdoaWNoIGFsbCBzZWVtcyB0byBiZSB0aGUgY2FzZSwgc28gbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgYG5ldC9uZmMvTWFrZWZpbGVgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IE5GQyBzdWJzeXN0ZW0uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG9iai0kKENPTkZJR19ORkMpICYjNDM7PSBuZmMub1xuICAgNzpcdG9iai0kKENPTkZJR19ORkNfTkNJKSAmIzQzOz0gbmNpL1xuICAgODpcdG9iai0kKENPTkZJR19ORkNfSENJKSAmIzQzOz0gaGNpL1xuICAgOTpcdG9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgJiM0Mzs9IG5mY19kaWdpdGFsLm9cbiAgMTA6XHRcbiAgMTE6XHRuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcbiAgMTI6XHRcdFx0bGxjcF9zb2NrLm9cbiAgMTM6XHRcbiAgMTQ6XHRuZmNfZGlnaXRhbC1vYmpzIDo9IGRpZ2l0YWxfY29yZS5vIGRpZ2l0YWxfdGVjaG5vbG9neS5vIGRpZ2l0YWxfZGVwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0MzYKCQkJCQkJCW91dHB1dDogMTI2CgkJCQkJCQl0aG91Z2h0czogMjc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBORkMgTExDUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgQ09ORklHX05GQ2AgaXMgaW5kZWVkIGVub3VnaCB0byBidWlsZCBgbGxjcF9jb3JlLmNgLiBMZXQmIzM5O3MgYnJlYWsgZG93biBteSB0aGlua2luZzoKClRoZSBpbml0aWFsIGFzc2Vzc21lbnQgZmxhZ3MgdGhpcyBhcyBXb3J0aEZ1enppbmcsIGFuZCB0aGUgcHJpbWFyeSBmb2N1cyBmYWxscyBvbiBgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lYCwgYG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzYCwgYW5kIGBuZmNfbGxjcF90eF93b3JrYC4gVGhlIG9ubHkgZW5hYmxpbmcgY29uZmlnIGlzIGBORkNgLiBUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiB0aGlzIHBhdGNoIGFsdGVycyB0aGUgZnVuY3Rpb24gYG5mY19sbGNwX3R4X3dvcmtgLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGFuIHNrYiYjMzk7cyBvd25lciBpcyBzZXQgYWZ0ZXIgaXQmIzM5O3MgY29waWVkLiBUaGlzIGRpcmVjdGx5IGltcGFjdHMgc29ja2V0IGFjY291bnRpbmcsIGFuZCB0aGF0IGNvZGUgKmlzKiByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIE5GQyBzb2NrZXQgb3BlcmF0aW9ucy4KCkhvd2V2ZXIsIEkgcGF1c2VkIGhlcmUuIGBuZmNfbGxjcF90eF93b3JrYCBpcyBkZWNsYXJlZCBhcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCYjMzk7cyBhIHBvaW50IHRvIGNvbnNpZGVyLiBXaGlsZSBub3QgbmVjZXNzYXJpbHkgZGlzcXVhbGlmeWluZyBpdCwgaXQmIzM5O3MgZ2VuZXJhbGx5IGJlc3QgdG8gcHJvdmlkZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBpZiBhdmFpbGFibGUuIGBuZmNfbGxjcF9zZW5kX2lfZnJhbWVgIGFuZCBgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXNgIGFyZSBkZWZpbml0ZWx5IGdvb2QgY2hvaWNlcy4gSSYjMzk7bSBnb2luZyB0byBpbmNsdWRlIGBuZmNfbGxjcF90eF93b3JrYCBhcyB3ZWxsLCBzaW5jZSBpdCYjMzk7cyB0aGUgZnVuY3Rpb24gKmRpcmVjdGx5KiBtb2RpZmllZCBieSB0aGUgcGF0Y2ggYW5kIGl0JiMzOTtzIGEgd29ya3F1ZXVlIGhhbmRsZXIsIG1ha2luZyBpbmxpbmluZyBsZXNzIGxpa2VseS4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIGNhcHR1cmUgdGhlIGFsdGVyZWQgbG9naWMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBxdWlja2x5IGRvdWJsZS1jaGVja2VkIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gQW5kIHllcywgYE5GQ2AgaXMgYWxsIHRoYXQmIzM5O3MgcmVxdWlyZWQuCgpJJiMzOTttIGNvbmZpZGVudCBpbiB0aGlzIGV2YWx1YXRpb24sIHNvIEkmIzM5O20gY2FsbGluZyBzZXQtcmVzdWx0cyBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZmNfbGxjcF9zZW5kX2lfZnJhbWUmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfcXVldWVfaV9mcmFtZXMmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfdHhfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbmZjX2xsY3BfdHhfd29ya2AgdG8gc2V0IHRoZSBzb2NrZXQgb3duZXIgb2YgYSBjb3BpZWQgc2tiLCB3aGljaCBhZmZlY3RzIHNvY2tldCBtZW1vcnkgYWNjb3VudGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBORkMgTExDUCBjb3JlLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIE5GQyBzb2NrZXQgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZjX2xsY3Bfc2VuZF9pX2ZyYW1lJiMzNDssCiAgICAmIzM0O25mY19sbGNwX3F1ZXVlX2lfZnJhbWVzJiMzNDssCiAgICAmIzM0O25mY19sbGNwX3R4X3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiwgd2hpY2ggYWZmZWN0cyBzb2NrZXQgbWVtb3J5IGFjY291bnRpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTkZDIExMQ1AgY29yZSwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBORkMgc29ja2V0IG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiB1c2luZyBgc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzaylgLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgc29ja2V0IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50cyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gc29ja2V0IGRlc3RydWN0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3IgbWVtb3J5IGxlYWsgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTYyNGY2MDZjOGNmNjVhZGMwZDNjYWE4YmE0NWU4ZGFlODIwYjFjMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDIxIDE1OjE1OjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX2NvcmUuYyBiL25ldC9uZmMvbGxjcF9jb3JlLmMKaW5kZXggY2FjMWI1NDg3MDY0ZC4uNDljYjYzMjI2OGMwYyAxMDA2NDQKLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL2xsY3BfY29yZS5jCkBAIC03ODYsOCAmIzQzOzc4NiwxMSBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJCXByaW50X2hleF9kdW1wX2RlYnVnKCYjMzQ7TExDUCBUeDogJiMzNDssIERVTVBfUFJFRklYX09GRlNFVCwKIAkJCQkJICAgICAxNiwgMSwgc2tiLSZndDtkYXRhLCBza2ItJmd0O2xlbiwgdHJ1ZSk7CiAKLQkJCWlmIChwdHlwZSA9PSBMTENQX1BEVV9JKQomIzQzOwkJCWlmIChwdHlwZSA9PSBMTENQX1BEVV9JKSB7CiAJCQkJY29weV9za2IgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpOwomIzQzOwkJCQlpZiAoY29weV9za2IpCiYjNDM7CQkJCQlza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKTsKJiM0MzsJCQl9CiAKIAkJCV9fbmV0X3RpbWVzdGFtcChza2IpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDUxCgkJCQkJCQlvdXRwdXQ6IDE2MQoJCQkJCQkJdGhvdWdodHM6IDM0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBMTENQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBuZmNfbGxjcF90eF93b3JrYCBpbiBgbmV0L25mYy9sbGNwX2NvcmUuY2AuIEl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0JiMzOTtzIGFkZGluZyBgc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzayk7YCBhZnRlciBhIHN1Y2Nlc3NmdWwgYHNrYl9jb3B5YCBvZiB0aGUgYHNrYmAgKHNvY2tldCBidWZmZXIpLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhpcyBzZWVtZWQgbGlrZSBpdCB3YXMgcmVsYXRlZCB0byBzb2NrZXQgYWNjb3VudGluZyBhbmQgbWVtb3J5IHRyYWNraW5nLCBub3QsIGNydWNpYWxseSwgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIEkgZGlkIGEgcXVpY2sgZG91YmxlLWNoZWNrIG9mIHRoZSBjb2RlIHNuaXBwZXQganVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmU6CgpgYGBjCi0JCQlpZiAocHR5cGUgPT0gTExDUF9QRFVfSSkKJiM0MzsJCQlpZiAocHR5cGUgPT0gTExDUF9QRFVfSSkgewogCQkJCWNvcHlfc2tiID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTsKJiM0MzsJCQkJaWYgKGNvcHlfc2tiKQomIzQzOwkJCQkJc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzayk7CiYjNDM7CQkJfQpgYGAKClllcCwgaXQmIzM5O3MgZGVmaW5pdGVseSBhYm91dCBmaXhpbmcgYSBtZW1vcnkgYWNjb3VudGluZyBwcm9ibGVtLCBvciBwb3NzaWJseSBhIHVzZS1hZnRlci1mcmVlL21lbW9yeSBsZWFrIHJlbGF0ZWQgdG8gaG93IHRoZSBza2Igb3duZXJzaGlwIGlzIGhhbmRsZWQgYWZ0ZXIgdGhlIGNvcHkuIEl0JiMzOTtzIG5vdCBpbnRyb2R1Y2luZyBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgYW5kIGRlZmluaXRlbHkgbm8gaW5mby1sZWFrcywgc28gSSBjYW4gcHV0IHRob3NlIGNvbmNlcm5zIGFzaWRlLiBJZiB0aGVyZSAqd2VyZSogbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlcywgS0FTQU4sIEtNRU1MRUFLLCBvciB0aGUgc3RhbmRhcmQgdG9vbHMgd291bGQgY2F0Y2ggdGhlbSwgYnV0IEtNU0FOIGlzIHdoYXQgd2UgbmVlZCB0byB3b3JyeSBhYm91dCB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LgoKTG9va2luZyBhdCB0aGUgY29kZSBhZ2FpbiwgSSYjMzk7bSBjb21mb3J0YWJsZSB0aGF0IGBza2JfY29weWAgY3JlYXRlcyBhICpjb3B5KiBvZiB0aGUgZGF0YSwgYW5kIHRoZW4gYHNrYl9zZXRfb3duZXJfd2Agc2V0cyB0aGUgc29ja2V0IG93bmVyIGZvciB3cml0ZSBhY2NvdW50aW5nIHB1cnBvc2VzIG9uIHRoZSBjb3B5LiBUaGVyZSYjMzk7cyBqdXN0IG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGludm9sdmVkIGhlcmUuIEl0JiMzOTtzIHNhZmUgdG8gc2F5IHRoZXJlJiMzOTtzIG5vIHJlYXNvbiB0byBmbGFnIHRoaXMgZm9yIEtNU0FOLiBJJiMzOTttIGdvaW5nIHRvIGdvIGFoZWFkIGFuZCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGFuZCBtb3ZlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbmZjX2xsY3BfdHhfd29ya2AgdG8gc2V0IHRoZSBzb2NrZXQgb3duZXIgb2YgYSBjb3BpZWQgc2tiIHVzaW5nIGBza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKWAuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBzb2NrZXQgbWVtb3J5IGFjY291bnRpbmcgYW5kIHBvdGVudGlhbGx5IHByZXZlbnRzIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byBzb2NrZXQgZGVzdHJ1Y3Rpb24uIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IGJvdW5kcyBjaGVja2luZywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgbWVtb3J5IGNvcnJ1cHRpb24sIHVzZS1hZnRlci1mcmVlLCBvciBtZW1vcnkgbGVhayBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtNRU1MRUFLLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiB1c2luZyBgc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzaylgLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgc29ja2V0IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50cyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gc29ja2V0IGRlc3RydWN0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3IgbWVtb3J5IGxlYWsgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTU6NTMuODE0NTk0ODgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgxMDU5ODA1NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZjX2xsY3Bfc2VuZF9pX2ZyYW1lXCIsXG4gICAgXCJuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lc1wiLFxuICAgIFwibmZjX2xsY3BfdHhfd29ya1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiB1c2luZyBgc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzaylgLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgc29ja2V0IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50cyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gc29ja2V0IGRlc3RydWN0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3IgbWVtb3J5IGxlYWsgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZjX2xsY3BfdHhfd29ya2AgdG8gc2V0IHRoZSBzb2NrZXQgb3duZXIgb2YgYSBjb3BpZWQgc2tiLCB3aGljaCBhZmZlY3RzIHNvY2tldCBtZW1vcnkgYWNjb3VudGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBORkMgTExDUCBjb3JlLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIE5GQyBzb2NrZXQgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTU6NTMuODE0NjAyMjQyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTk1Njg2NDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTYyNGY2MDZjOGNmNjVhZGMwZDNjYWE4YmE0NWU4ZGFlODIwYjFjMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxNToxNTo1MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xcbmluZGV4IGNhYzFiNTQ4NzA2NGQuLjQ5Y2I2MzIyNjhjMGMgMTAwNjQ0XFxuLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuY1xcbisrKyBiL25ldC9uZmMvbGxjcF9jb3JlLmNcXG5AQCAtNzg2LDggKzc4NiwxMSBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0XFx0XFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXFxcIkxMQ1AgVHg6IFxcXCIsIERVTVBfUFJFRklYX09GRlNFVCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAxNiwgMSwgc2tiLVxcdTAwM2VkYXRhLCBza2ItXFx1MDAzZWxlbiwgdHJ1ZSk7XFxuIFxcbi1cXHRcXHRcXHRpZiAocHR5cGUgPT0gTExDUF9QRFVfSSlcXG4rXFx0XFx0XFx0aWYgKHB0eXBlID09IExMQ1BfUERVX0kpIHtcXG4gXFx0XFx0XFx0XFx0Y29weV9za2IgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpO1xcbitcXHRcXHRcXHRcXHRpZiAoY29weV9za2IpXFxuK1xcdFxcdFxcdFxcdFxcdHNrYl9zZXRfb3duZXJfdyhjb3B5X3NrYiwgc2spO1xcbitcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRfX25ldF90aW1lc3RhbXAoc2tiKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE1OjU1LjQxMTIyMTQyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Njg1NTczMDE0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZjX2xsY3Bfc2VuZF9pX2ZyYW1lXCIsXG4gICAgXCJuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lc1wiLFxuICAgIFwibmZjX2xsY3BfdHhfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBuZmNfbGxjcF90eF93b3JrYCB0byBzZXQgdGhlIHNvY2tldCBvd25lciBvZiBhIGNvcGllZCBza2IsIHdoaWNoIGFmZmVjdHMgc29ja2V0IG1lbW9yeSBhY2NvdW50aW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE5GQyBMTENQIGNvcmUsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgTkZDIHNvY2tldCBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNjI0ZjYwNmM4Y2Y2NWFkYzBkM2NhYThiYTQ1ZThkYWU4MjBiMWMxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjEgMTU6MTU6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuaW5kZXggY2FjMWI1NDg3MDY0ZC4uNDljYjYzMjI2OGMwYyAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmNcbisrKyBiL25ldC9uZmMvbGxjcF9jb3JlLmNcbkBAIC03ODYsOCArNzg2LDExIEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3R4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdHByaW50X2hleF9kdW1wX2RlYnVnKFwiTExDUCBUeDogXCIsIERVTVBfUFJFRklYX09GRlNFVCxcbiBcdFx0XHRcdFx0ICAgICAxNiwgMSwgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4sIHRydWUpO1xuIFxuLVx0XHRcdGlmIChwdHlwZSA9PSBMTENQX1BEVV9JKVxuK1x0XHRcdGlmIChwdHlwZSA9PSBMTENQX1BEVV9JKSB7XG4gXHRcdFx0XHRjb3B5X3NrYiA9IHNrYl9jb3B5KHNrYiwgR0ZQX0FUT01JQyk7XG4rXHRcdFx0XHRpZiAoY29weV9za2IpXG4rXHRcdFx0XHRcdHNrYl9zZXRfb3duZXJfdyhjb3B5X3NrYiwgc2spO1xuK1x0XHRcdH1cbiBcbiBcdFx0XHRfX25ldF90aW1lc3RhbXAoc2tiKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE1OjU1LjQxMTIyMzgzMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3OTA1NjQzMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBORkMgTExDUCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHRoZSBrZXkgZmlsZSBiZWluZyBtb2RpZmllZCBpcyBgbmV0L25mYy9sbGNwX2NvcmUuY2AuIERpdmluZyBkZWVwZXIsIHRoZSBwYXRjaCB6ZXJvZXMgaW4gb24gY2hhbmdlcyB3aXRoaW4gdGhlIGBuZmNfbGxjcF90eF93b3JrYCBmdW5jdGlvbi4gVGhlIGNydWNpYWwgYWRkaXRpb24gc2VlbXMgdG8gYmUgdGhpcyBsaW5lOiBgaWYgKGNvcHlfc2tiKSBza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKTtgIHdoZW4gY29weWluZyBhbiBgc2tiYC5cblxuTm93LCB0aGF0IGBza2Jfc2V0X293bmVyX3dgIGNhbGwgaXMgd2hhdCByZWFsbHkgcGlxdWVzIG15IGludGVyZXN0LiBJdCBpbXBsaWVzIHNvbWUgb3duZXJzaGlwIG1hbmFnZW1lbnQgaXMgYmVpbmcgdHdlYWtlZCB3aGVuIGhhbmRsaW5nIFNlbmQgU0tCcyB3aXRoaW4gdGhlIE5GQyBMTENQIHN0YWNrLiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgYWRkZWQgb3duZXJzaGlwIHNldHRpbmcuIFdlIG5lZWQgdG8gZ28gYmFjayBpbnRvIGBuZmNfbGxjcF90eF93b3JrYCBhbmQgc2VlIHRoZSBjb21wbGV0ZSBwaWN0dXJlIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIG9uIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBsb29raW5nIGF0IGhvdyB0aGUgYHNrYmAgaXMgdXNlZCBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgYWRkaXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYGNvcHlfc2tiYCB2YXJpYWJsZSBpcyBiZWluZyBoYW5kbGVkIGFuZCB3aGF0IGtpbmQgb2YgU0tCIGlzIGJlaW5nIGhhbmRsZWQgd2l0aCBgY29weV9za2JgLiBJIGFtIHdvbmRlcmluZyBpZiB0aGUgYWRkaXRpb24gaGVyZSBpcyB0byBmaXggc29tZSBraW5kIG9mIHJlc291cmNlIGxlYWsgaXNzdWUuIFRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2UgaXMgdml0YWwuIEkgbmVlZCB0byBzZWUgd2hhdCBlbHNlIGhhcyBiZWVuIG1vZGlmaWVkIGFuZCBjb21wYXJlIHdpdGggdGhlIG9sZGVyIHZlcnNpb24gb2YgdGhlIGNvZGUuIElzIHRoaXMgYSBidWcgZml4LCBvcHRpbWl6YXRpb24sIG9yIGEgZnVuY3Rpb25hbCBjaGFuZ2U/IFdlIHNob3VsZCBhbHNvIGNoZWNrIG90aGVyIGNvbW1pdHMgaW4gdGhlIHNhbWUgcmFuZ2Ugb2YgdGltZSBhcyB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1NCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjAwLjIwMTc5MTIxNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzg3OTMyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZmNfbGxjcF90eF93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvbGxjcF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9sbGNwX2NvcmUuYz03MjE9dm9pZCBuZmNfbGxjcF9zZW5kX3RvX3Jhd19zb2NrKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc2MC1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc2MTpzdGF0aWMgdm9pZCBuZmNfbGxjcF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc2Mi17XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE2NTY9aW50IG5mY19sbGNwX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqbmRldilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY3OS1cXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTY4MDpcXHRJTklUX1dPUksoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF93b3JrLCBuZmNfbGxjcF90eF93b3JrKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2ODEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjAwLjI3OTY3NDU0NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NTc5ODk2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogTkZDIExMQ1AgYW5kIFNLQiBPd25lcnNoaXAqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIG1ha2luZyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBgbmZjX2xsY3BfdHhfd29ya2AuIFRoZSBrZXkgbGluZSB0aGF0IGp1bXBzIG91dCBpcyB0aGUgYWRkaXRpb24gb2YgYHNrYl9zZXRfb3duZXJfdyhjb3B5X3NrYiwgc2spYC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIHdlJ3JlIGVzc2VudGlhbGx5IHRha2luZyBvd25lcnNoaXAgb2YgYSBjb3BpZWQgU0tCLCBhbmQgdGhhdCBoYXMgZGlyZWN0IGltcGxpY2F0aW9ucyBmb3IgdGhlIHdheSB3ZSBoYW5kbGUgc29ja2V0IGFjY291bnRpbmcgYW5kIG92ZXJhbGwgbWVtb3J5IHRyYWNraW5nIHdpdGhpbiB0aGUgc3lzdGVtLlxuXG5UaGlzIGlzbid0IGp1c3QgY29zbWV0aWM7IGl0J3MgYSByZWFsIGZ1bmN0aW9uYWwgc2hpZnQuIEl0J3MgdGVsbGluZyBtZSB0byBwYXkgYXR0ZW50aW9uIHRvIGhvdyB0aGlzIGltcGFjdHMgdGhlIHJlc291cmNlIG1hbmFnZW1lbnQgYXJvdW5kIE5GQyBMTENQLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW4gcGxheSB0aGF0IGVuYWJsZSBORkMgTExDUCBpbiB0aGUgZmlyc3QgcGxhY2UsIGFzIHRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjowNC4yMzc2NjY0ODFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU2NzM1NDYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfTExDUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6MDQuMjkzMzQ3MDk2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MDcyNzUzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTkZDIEtjb25maWcqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBORkMgY29uZmlndXJhdGlvbi4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgYXBwcm9hY2gg4oCTIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgYG5ldC9uZmMvYCBkaXJlY3RvcnkuIFRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZmVhdHVyZSBzZXQsIGRlcGVuZGVuY2llcywgYW5kIGJ1aWxkIG9wdGlvbnMgZm9yIHRoaXMgc3Vic3lzdGVtLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGNvcmUgTkZDIGZ1bmN0aW9uYWxpdHkgZGVmaW5pdGlvbnMsIG1heWJlIHNvbWUgc3BlY2lmaWMgZHJpdmVyIHNlbGVjdGlvbnMgaWYgdGhleSdyZSBoYW5kbGVkIGF0IGEgaGlnaCBsZXZlbCwgYW5kIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IGFwcGx5LiBUaGlzIEtjb25maWcgd2lsbCBsaWtlbHkgbGluayB0byBtb3JlIGdyYW51bGFyIG9uZXMgd2l0aGluIHN1YmRpcmVjdG9yaWVzIGlmIHRoaW5ncyBhcmUgcHJvcGVybHkgbW9kdWxhcml6ZWQuIEknbSBhbnRpY2lwYXRpbmcgc29tZSBjb21wbGV4IGRlcGVuZGVuY2llcywgcG9zc2libHkgaW52b2x2aW5nIG90aGVyIG5ldHdvcmtpbmcgY29tcG9uZW50cyBvciBoYXJkd2FyZSBzdXBwb3J0LCBzbyBJJ2xsIG5lZWQgdG8gYmUgdGhvcm91Z2guIEknbGwgbmVlZCB0byBsb29rIGZvciBhbnkgZGVmYXVsdCBzZXR0aW5ncyB0aGF0IG1pZ2h0IGJlIGJha2VkIGludG8gdGhlIGtlcm5lbCBidWlsZCwgYW5kIGtlZXAgYW4gZXllIG91dCBmb3IgYW55IHVudXN1YWwgY29uZmlndXJhdGlvbnMgdGhhdCBjb3VsZCBjcmVhdGUgcHJvYmxlbXMgbGF0ZXIuIFJpZ2h0LCBsZXQncyBnbyFcblxuXG4iLCJJbnB1dFRva2VucyI6MzA4OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjA3LjczNDA3NzIwOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDgwNjIxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL0tjb25maWctNS1cXG5uZXQvbmZjL0tjb25maWc6NjptZW51Y29uZmlnIE5GQ1xcbm5ldC9uZmMvS2NvbmZpZy03LVxcdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcXG4tLVxcbm5ldC9uZmMvS2NvbmZpZy0xNi1cXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXFxubmV0L25mYy9LY29uZmlnLTE4LVxcdGRlcGVuZHMgb24gTkZDXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjA3Ljc4ODg4ODMzNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODUyODM5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE5GQyBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgcHVsbCB1cCB0aGUgYG5ldC9uZmMvS2NvbmZpZ2AgZmlsZS4gSSdtIGFzc3VtaW5nIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgc3RhbmRhcmQgTGludXgga2VybmVsIHNvdXJjZSBoZXJlLCBzbyB0aGlzIGlzIHdoZXJlIHdlJ2xsIGZpbmQgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBOZWFyIEZpZWxkIENvbW11bmljYXRpb24uIEknbSBpbW1lZGlhdGVseSBsb29raW5nIGZvciB0aGUgZ2VuZXJhbCBzdHJ1Y3R1cmUuIEknbSBleHBlY3RpbmcgdG8gc2VlIHRoZSBzdGFuZGFyZCBgY29uZmlnYCBibG9ja3MsIGBib29sYCwgYHRyaXN0YXRlYCwgYW5kIGBzdHJpbmdgIGRlZmluaXRpb25zLiBJIGFudGljaXBhdGUgc2VlaW5nIGRlcGVuZGVuY2llcywgbGlrZWx5IG9uIG90aGVyIG5ldHdvcmstcmVsYXRlZCBmZWF0dXJlcyBvciBwb3RlbnRpYWxseSBldmVuIGhhcmR3YXJlIGRyaXZlcnMsIGVzcGVjaWFsbHkgaWYgTkZDIGNvbnRyb2xsZXIgc3VwcG9ydCBpcyBtb2R1bGFyaXplZC5cblxuSSdtIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgaG93IHRoZXkndmUgb3JnYW5pemVkIHRoZSBvcHRpb25zLiBBcmUgdGhleSBncm91cGVkIGJ5IE5GQyBwcm90b2NvbCBzdGFuZGFyZHMgKGUuZy4sIE5GQy1BLCBORkMtQiwgTkZDLUYpPyBCeSBjb250cm9sbGVyIHR5cGU/IE9yIG1heWJlIGJ5IGZlYXR1cmUgc2V0LCBsaWtlIHJlYWRlci93cml0ZXIgZnVuY3Rpb25hbGl0eSB2ZXJzdXMgcGVlci10by1wZWVyPyBUaGUgb3JnYW5pemF0aW9uIHdpbGwgdGVsbCBtZSBhIGxvdCBhYm91dCB0aGUgZGVzaWduIHBoaWxvc29waHkuXG5cbk15IGZvY3VzIHdpbGwgYmUgb24gdGhlIGRlcGVuZGVuY2llcyBhbmQgZGVmYXVsdHMuIFdoYXQgb3RoZXIga2VybmVsIGZlYXR1cmVzIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgTkZDIHRvIHdvcms/IEFyZSB0aGVyZSBhbnkgaGFyZCBkZXBlbmRlbmNpZXMsIG9yIGFyZSBtb3N0IHRoaW5ncyBjb25maWd1cmFibGU/IFVuZGVyc3RhbmRpbmcgdGhlIGRlZmF1bHRzIGlzIGtleSBiZWNhdXNlIHRoZXkgZGljdGF0ZSB0aGUgXCJvdXQtb2YtdGhlLWJveFwiIGJlaGF2aW9yLiBBcmUgdGhlIGRlZmF1bHRzIHNlbnNpYmxlIGZyb20gYSBzZWN1cml0eSBhbmQgdXNhYmlsaXR5IHN0YW5kcG9pbnQ/IFRoYXQncyB3aGF0IEknbGwgYmUgbG9va2luZyBhdC5cblxuSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBcImV4cGVydFwiIG9wdGlvbnMsIGlmIHRoZXJlIGFyZSBhbnksIGFuZCBob3cgdGhleSBhcmUgZXhwbGFpbmVkLiBBcmUgdGhlcmUgY2xlYXIgZGVzY3JpcHRpb25zIG9mIHRoZSBpbXBhY3Qgb2YgdGhlc2Ugb3B0aW9ucz8gSSB3YW50IHRvIHNlZSBpZiB0aGUgS2NvbmZpZyBwcm92aWRlcyBzdWZmaWNpZW50IGd1aWRhbmNlIGZvciB0aG9zZSB3aG8gbWlnaHQgd2FudCB0byBjdXN0b21pemUgdGhlIE5GQyBzdGFjayBmb3IgdGhlaXIgc3BlY2lmaWMgZW1iZWRkZWQgZGV2aWNlIG9yIGFwcGxpY2F0aW9uLiBGaW5hbGx5LCBJJ2xsIHNraW0gZm9yIGFueSBkZXByZWNhdGlvbiB3YXJuaW5ncyBvciBhbnl0aGluZyB0aGF0IHBvaW50cyB0byBzb21lIG9mIHRoZSBjb2RlIGJlaW5nIHJlcGxhY2VkIG9yIHVuZGVyIGRldmVsb3BtZW50LiBBbHdheXMgaW50ZXJlc3RpbmcgdG8gbm90ZSB0aGUgXCJUT0RPXCIgZW50cmllcyBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6MTIuMzc0MTc0OTI4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZmMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTkZDIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgTkZDXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxuICAgODpcXHRcXHR0cmlzdGF0ZSBcXFwiTkZDIHN1YnN5c3RlbSBzdXBwb3J0XFxcIlxcbiAgIDk6XFx0XFx0ZGVmYXVsdCBuXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgc3VwcG9ydCBmb3IgTkZDIChOZWFyIGZpZWxkXFxuICAxMjpcXHRcXHQgIGNvbW11bmljYXRpb24pIGRldmljZXMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxcbiAgMTU6XFx0XFx0ICBiZSBjYWxsZWQgbmZjLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgTkZDX0RJR0lUQUxcXG4gIDE4OlxcdFxcdGRlcGVuZHMgb24gTkZDXFxuICAxOTpcXHRcXHRzZWxlY3QgQ1JDX0NDSVRUXFxuICAyMDpcXHRcXHRzZWxlY3QgQ1JDX0lUVV9UXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiTkZDIERpZ2l0YWwgUHJvdG9jb2wgc3RhY2sgc3VwcG9ydFxcXCJcXG4gIDIyOlxcdFxcdGRlZmF1bHQgblxcbiAgMjM6XFx0XFx0aGVscFxcbiAgMjQ6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBidWlsZCBORkMgZGlnaXRhbCBwcm90b2NvbCBzdGFjayBzdXBwb3J0LlxcbiAgMjU6XFx0XFx0ICBUaGlzIGlzIG5lZWRlZCBieSBORkMgY2hpcHNldHMgd2hvc2UgZmlybXdhcmUgb25seSBpbXBsZW1lbnRcXG4gIDI2OlxcdFxcdCAgdGhlIE5GQyBhbmFsb2cgbGF5ZXIuXFxuICAyNzpcXHRcXG4gIDI4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxcbiAgMjk6XFx0XFx0ICBiZSBjYWxsZWQgbmZjX2RpZ2l0YWwuXFxuICAzMDpcXHRcXG4gIDMxOlxcdHNvdXJjZSBcXFwibmV0L25mYy9uY2kvS2NvbmZpZ1xcXCJcXG4gIDMyOlxcdHNvdXJjZSBcXFwibmV0L25mYy9oY2kvS2NvbmZpZ1xcXCJcXG4gIDMzOlxcdFxcbiAgMzQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25mYy9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjoxMi4zNzQyNTQ2NjhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4MDU5NTQ5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRm9jdXNpbmcgb24gTkZDIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBORkMgaXMgY2xlYXJseSB0aGUgY2VudHJhbCBjb25maWd1cmF0aW9uIHBvaW50IGhlcmUuIEJ1dCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEknbSB3b25kZXJpbmcgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgTExDUCB0aGF0IGFyZSAqc2VwYXJhdGUqIGZyb20gdGhlIGdlbmVyYWwgTkZDIHNldHRpbmdzLiBJdCdzIHVzdWFsbHkgdGhlIGNhc2UgdGhhdCB0aGVyZSBhcmUgbW9yZSBzcGVjaWZpYyBvcHRpb25zIGZvciBlYWNoIHByb3RvY29sLiBMZXQncyBub3QgYXNzdW1lIGV2ZXJ5dGhpbmcgaXMgdW5kZXIgdGhlIGBORkNgIHVtYnJlbGxhLCBldmVuIGlmIGl0IHNlZW1zIHRoYXQgd2F5IGF0IGZpcnN0IGdsYW5jZS4gVGltZSB0byBkaXZlIGludG8gYG5ldC9uZmMvTWFrZWZpbGVgIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBoaW50cyBvciBzcGVjaWZpYyBidWlsZCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIExMQ1AgdHVja2VkIGF3YXkgaW4gdGhlcmUuIEknbSBob3BpbmcgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBORkMgYW5kIExMQ1AgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMxOSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6MTUuNzU0ODU0OTI0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZmMvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IE5GQyBzdWJzeXN0ZW0uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai0kKENPTkZJR19ORkMpICs9IG5mYy5vXFxuICAgNzpcXHRvYmotJChDT05GSUdfTkZDX05DSSkgKz0gbmNpL1xcbiAgIDg6XFx0b2JqLSQoQ09ORklHX05GQ19IQ0kpICs9IGhjaS9cXG4gICA5OlxcdG9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgKz0gbmZjX2RpZ2l0YWwub1xcbiAgMTA6XFx0XFxuICAxMTpcXHRuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcXFxcbiAgMTI6XFx0XFx0XFx0bGxjcF9zb2NrLm9cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0bmZjX2RpZ2l0YWwtb2JqcyA6PSBkaWdpdGFsX2NvcmUubyBkaWdpdGFsX3RlY2hub2xvZ3kubyBkaWdpdGFsX2RlcC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjE1Ljc1NDk0NTc3NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM3Mzk5NDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgbGxjcF9jb3JlLm9gIE1vZHVsZSoqXG5cbk9rYXksIHNvIGBsbGNwX2NvcmUub2AgaXMgY2xlYXJseSBwYXJ0IG9mIHRoZSBORkMgb2JqZWN0IHNldCwgc3BlY2lmaWNhbGx5IGNvbXBpbGVkIHdoZW4gdGhlIGBDT05GSUdfTkZDYCBvcHRpb24gaXMgZW5hYmxlZC4gVGhhdCdzIG91ciBzdGFydGluZyBwb2ludDogYE5GQ2AgaXMgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmxhZy4gTm93LCBsZXQncyBsb29rIGF0IHRoaXMgYG5mY19sbGNwX3R4X3dvcmtgIGZ1bmN0aW9uLiBUaGUgY29kZSBpbmRpY2F0ZXMgaXQncyBhIHdvcmtxdWV1ZSBmdW5jdGlvbiwgbWVhbmluZyBpdCdzIGxpa2VseSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuIEl0IHNlZW1zIGBuZmNfbGxjcF9zZW5kX3RvX3Jhd19zb2NrYCBpcyBvbmUgdHJpZ2dlciwgb3IgcGVyaGFwcyBvdGhlciBwYXRocy4gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBpcyBpdCByZWFjaGFibGU/IFllcywgYXBwYXJlbnRseSB0aHJvdWdoIE5GQyBzb2NrZXRzLiBUaGF04oCZcyBnb29kLiBXZSBrbm93IHRoZSBjb21tdW5pY2F0aW9uIHBhdGh3YXkgbm93LlxuXG5NeSBnb2FsIGhlcmUgaXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0cy4gSXMgYG5mY19sbGNwX3R4X3dvcmtgIGl0c2VsZiBhIGdvb2QgY2FuZGlkYXRlLCBvciBzaG91bGQgSSBiZSBsb29raW5nIGZvciBmdW5jdGlvbnMgdGhhdCBmZWVkIGludG8gaXQ/IEl0J3MgbWFya2VkIGFzIHN0YXRpYywgd2hpY2ggY291bGQgaW5kaWNhdGUgaXTigJlzIGludGVybmFsIHRvIHRoZSBtb2R1bGUsIGJ1dCB0aGF0J3Mgbm90IGFsd2F5cyBhIGhhcmQgYmFycmllci4gTGV0IG1lIHRyYWNlIGJhY2sgYW5kIHNlZSB3aGF0IGFjdHVhbGx5IHF1ZXVlcyB0aGlzIHdvcmsuIFVuZGVyc3RhbmRpbmcgdGhlIHF1ZXVpbmcgbWVjaGFuaXNtIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gY29udHJvbCBmbG93IGFuZCBzdGF0ZSBtYW5hZ2VtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzgzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6MjAuNDkyMzQ4MTUzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTQxODYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV93b3JrLip0eF93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbmNpL2RhdGEuYz0xNzE9aW50IG5jaV9zZW5kX2RhdGEoc3RydWN0IG5jaV9kZXYgKm5kZXYsIF9fdTggY29ubl9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvbmNpL2RhdGEuYy0xOTktXFx0bmRldi1cXHUwMDNlY3VyX2Nvbm5faWQgPSBjb25uX2lkO1xcbm5ldC9uZmMvbmNpL2RhdGEuYzoyMDA6XFx0cXVldWVfd29yayhuZGV2LVxcdTAwM2V0eF93cSwgXFx1MDAyNm5kZXYtXFx1MDAzZXR4X3dvcmspO1xcbm5ldC9uZmMvbmNpL2RhdGEuYy0yMDEtXFxuLS1cXG5uZXQvbmZjL25jaS9udGYuYz01ND1zdGF0aWMgaW50IG5jaV9jb3JlX2Nvbm5fY3JlZGl0c19udGZfcGFja2V0KHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxcbi0tXFxubmV0L25mYy9uY2kvbnRmLmMtOTQtXFx0aWYgKCFza2JfcXVldWVfZW1wdHkoXFx1MDAyNm5kZXYtXFx1MDAzZXR4X3EpKVxcbm5ldC9uZmMvbmNpL250Zi5jOjk1OlxcdFxcdHF1ZXVlX3dvcmsobmRldi1cXHUwMDNldHhfd3EsIFxcdTAwMjZuZGV2LVxcdTAwM2V0eF93b3JrKTtcXG5uZXQvbmZjL25jaS9udGYuYy05Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6MjAuNTY3NzcwNTUxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMzc0Mjk5OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2VzcywgZGVsaXZlcmVkIGFzIHRob3VnaCBJJ20gd29ya2luZyB0aHJvdWdoIGl0IG15c2VsZjpcblxuKipMTENQIEltcGxlbWVudGF0aW9uIERlZXAgRGl2ZSoqXG5cbk9rYXksIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBUaGlua2luZyBhYm91dCB0aGlzIGlzc3VlLCBJIGhhdmUgYSBmZWVsaW5nIHRoZSBwcm9ibGVtIGxpZXMgd2l0aGluIHRoZSBsb3ctbGV2ZWwgY29tbXVuaWNhdGlvbi4gSSBzaG91bGQgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBjb3JlIExMQ1AgaW1wbGVtZW50YXRpb24uIEEgZ29vZCBzdGFydGluZyBwb2ludCB3b3VsZCBiZSB0aGUgYG5ldC9uZmMvbGxjcF9jb3JlLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0cmFuc21pc3Npb24gd29yayBpcyBoYW5kbGVkLiBMZXQgbWUgc2VhcmNoIGZvciB0aGUgZnVuY3Rpb24gb3IgdmFyaWFibGUgcmVsYXRlZCB0byB0aGUgdHJhbnNtaXNzaW9uIHdvcmssIHRoYXQgaXMgYHR4X3dvcmtgLiBIb3BlZnVsbHkgdGhpcyB3aWxsIGdpdmUgbWUgYSBwb2ludCB0byBiZWdpbiB1bmRlcnN0YW5kaW5nIHRoZSBkYXRhIGZsb3cgaGVyZS4gTGV0J3Mgc2VlIHdoYXQgSSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ5OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjIzLjcwNTIwMzI1MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzIzNjA1MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHhfd29ya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL2xsY3BfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcF9jb3JlLmM9MTYwPXN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY0LVxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2bG9jYWwtXFx1MDAzZXR4X3F1ZXVlKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2NTpcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfd29yayk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjYtXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2bG9jYWwtXFx1MDAzZXJ4X3dvcmspO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz03MjE9dm9pZCBuZmNfbGxjcF9zZW5kX3RvX3Jhd19zb2NrKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc2MC1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc2MTpzdGF0aWMgdm9pZCBuZmNfbGxjcF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc2Mi17XFxubmV0L25mYy9sbGNwX2NvcmUuYy03NjMtXFx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwsXFxubmV0L25mYy9sbGNwX2NvcmUuYzo3NjQ6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHR4X3dvcmspO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzY1LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE1NDg9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1NjUtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTY2OlxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF93b3JrKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1NjctXFx0a2ZyZWVfc2tiKGxvY2FsLVxcdTAwM2VyeF9wZW5kaW5nKTtcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTYyOT12b2lkIG5mY19sbGNwX21hY19pc191cChzdHJ1Y3QgbmZjX2RldiAqZGV2LCB1MzIgdGFyZ2V0X2lkeCxcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY0Ni1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2NDc6XFx0XFx0c2NoZWR1bGVfd29yayhcXHUwMDI2bG9jYWwtXFx1MDAzZXR4X3dvcmspO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY0OC1cXHR9IGVsc2Uge1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNjU2PWludCBuZmNfbGxjcF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5mY19kZXYgKm5kZXYpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2NzktXFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2bG9jYWwtXFx1MDAzZXR4X3F1ZXVlKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2ODA6XFx0SU5JVF9XT1JLKFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfd29yaywgbmZjX2xsY3BfdHhfd29yayk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjgxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjoyMy43Nzc1NzAxOTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4NjAzMTMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqTExDUCBUcmFuc21pdCBRdWV1ZSBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBORkMgTExDUCBjb2RlIGFuZCB0cmFja2luZyBob3cgdGhlIHRyYW5zbWl0IHNpZGUgaXMgbWFuYWdlZC4gSSBzZWUgdGhhdCBgbmZjX2xsY3BfdHhfd29ya2AgZ2V0cyBzY2hlZHVsZWQgaW4gdHdvIHBsYWNlczogYG5mY19sbGNwX3J4X3dvcmtgIGFuZCBgbmZjX2xsY3BfbWFjX2lzX3VwYC4gVGhhdCBtYWtlcyBzZW5zZTsgaW5jb21pbmcgZGF0YSBtaWdodCB0cmlnZ2VyIGEgdHJhbnNtaXQsIGFuZCB0aGUgTUFDIGxheWVyIGNvbWluZyBvbmxpbmUgY291bGQgYWxzbyBraWNrIHRoaW5ncyBvZmYuIEJ1dCBJJ20gbWlzc2luZyBhIGNyaXRpY2FsIHBpZWNlIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGF0KiBhY3R1YWxseSBlbnF1ZXVlcyB0aGUgU29ja2V0IEJ1ZmZlcnMgKHNrYnMpIG9udG8gYGxvY2FsLVx1MDAzZXR4X3F1ZXVlYC4gV2hlcmUgYXJlIHRoZSB0cmFuc21pdCBwYWNrZXRzIGFjdHVhbGx5ICpwdXQqIGJlZm9yZSB0aGUgd29yayBxdWV1ZSBldmVuIGdldHMgYSBjaGFuY2UgdG8gc2VlIHRoZW0/IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBxdWV1ZSB0byBmaW5kIHRoZSBvcmlnaW4gcG9pbnRzLCB0byBmdWxseSBncmFzcCB0aGUgZmxvdyBhbmQgcG90ZW50aWFsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgbWVhdCBvZiB0aGUgdHJhbnNtaXQgbG9naWMgcHJvYmFibHkgcmVzaWRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQzMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjI3LjU2MzYwNDA0OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NjI2MjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInR4X3F1ZXVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvbGxjcF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9sbGNwX2NvcmUuYz00NT1zdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcHVyZ2Uoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2spXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTQ5LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6NTA6XFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZzb2NrLVxcdTAwM2V0eF9xdWV1ZSk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy01MS1cXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNnNvY2stXFx1MDAzZXR4X3BlbmRpbmdfcXVldWUpO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy01Ni1cXHQvKiBTZWFyY2ggZm9yIGxvY2FsIHBlbmRpbmcgU0tCcyB0aGF0IGFyZSByZWxhdGVkIHRvIHRoaXMgc29ja2V0ICovXFxubmV0L25mYy9sbGNwX2NvcmUuYzo1NzpcXHRza2JfcXVldWVfd2Fsa19zYWZlKFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUsIHMsIHRtcCkge1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNTgtXFx0XFx0aWYgKHMtXFx1MDAzZXNrICE9IFxcdTAwMjZzb2NrLVxcdTAwM2VzaylcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNjAtXFxubmV0L25mYy9sbGNwX2NvcmUuYzo2MTpcXHRcXHRza2JfdW5saW5rKHMsIFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNjItXFx0XFx0a2ZyZWVfc2tiKHMpO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz02Nj1zdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzItXFxubmV0L25mYy9sbGNwX2NvcmUuYzo3MzpcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF9xdWV1ZSk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy03NC1cXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTYwPXN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTYzLVxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZsb2NhbC1cXHUwMDNlbGlua190aW1lcik7XFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNjQ6XFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY1LVxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF93b3JrKTtcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MzEyPXN0YXRpYyBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm5mY19sbGNwX3JlbW92ZV9sb2NhbChzdHJ1Y3QgbmZjX2RldiAqZGV2KVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0zMTgtXFx0XFx0aWYgKGxvY2FsLVxcdTAwM2VkZXYgPT0gZGV2KSB7XFxubmV0L25mYy9sbGNwX2NvcmUuYzozMTk6XFx0XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUubG9jayk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0zMjAtXFx0XFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2bG9jYWwtXFx1MDAzZWxpc3QpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MzIxOlxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUubG9jayk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0zMjItXFx0XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmxsY3BfZGV2aWNlc19sb2NrKTtcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9NzYxPXN0YXRpYyB2b2lkIG5mY19sbGNwX3R4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy03NjgtXFxubmV0L25mYy9sbGNwX2NvcmUuYzo3Njk6XFx0c2tiID0gc2tiX2RlcXVldWUoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF9xdWV1ZSk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy03NzAtXFx0aWYgKHNrYiAhPSBOVUxMKSB7XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc3Ny1cXHRcXHR9IGVsc2UgaWYgKGxsY3Bfc29jayBcXHUwMDI2XFx1MDAyNiAhbGxjcF9zb2NrLVxcdTAwM2VyZW1vdGVfcmVhZHkpIHtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc3ODpcXHRcXHRcXHRza2JfcXVldWVfaGVhZChcXHUwMDI2bG9jYWwtXFx1MDAzZXR4X3F1ZXVlLCBza2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzc5LVxcdFxcdFxcdG5mY19sbGNwX3NlbmRfc3ltbShsb2NhbC1cXHUwMDNlZGV2KTtcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTA0NT1pbnQgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXMoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2spXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEwNTgtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxMDU5OlxcdFxcdHBkdSA9IHNrYl9kZXF1ZXVlKFxcdTAwMjZzb2NrLVxcdTAwM2V0eF9xdWV1ZSk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xMDYwLVxcdFxcdGlmIChwZHUgPT0gTlVMTClcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA2NS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjEwNjY6XFx0XFx0c2tiX3F1ZXVlX3RhaWwoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF9xdWV1ZSwgcGR1KTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEwNjctXFx0XFx0bnJfZnJhbWVzKys7XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTEwNzM9c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9oZGxjKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNDQtXFx0XFx0XFx0c2tiX3VubGluayhzLCBcXHUwMDI2bGxjcF9zb2NrLVxcdTAwM2V0eF9wZW5kaW5nX3F1ZXVlKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjExNDU6XFx0XFx0XFx0c2tiX3F1ZXVlX2hlYWQoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF9xdWV1ZSwgcyk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xMTQ2LVxcdFxcdH1cXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTY1Nj1pbnQgbmZjX2xsY3BfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuZmNfZGV2ICpuZGV2KVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjc4LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTY3OTpcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY4MC1cXHRJTklUX1dPUksoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF93b3JrLCBuZmNfbGxjcF90eF93b3JrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6MjcuNjcxMjM1NjdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0OTc4NjgxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHdoYXQncyBnb2luZyBvbjpcblxuKipRdWV1aW5nIEktRnJhbWVzIGluIHRoZSBORkMgTExDUCBMYXllcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBJLWZyYW1lcyBhcmUgaGFuZGxlZCBpbiB0aGUgTkZDIExMQ1AgbGF5ZXIuIFRoZSBjb3JlIGZ1bmN0aW9uIGhlcmUsIGl0IHNlZW1zLCBpcyBgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXNgLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBmdW5jdGlvbidzIGpvYiBpcyB0byB0YWtlIHRoZXNlIEktZnJhbWVzIGFuZCBwdXQgdGhlbSBpbiB0aGUgYGxvY2FsLVx1MDAzZXR4X3F1ZXVlYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyB0aGUgbmF0dXJhbCB3YXkgdG8gbWFuYWdlIG91dGJvdW5kIGZyYW1lcy4gVG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIHF1ZXVpbmcgaGFwcGVucywgYW5kIHRvIGxvb2sgZm9yIHBvdGVudGlhbCBpc3N1ZXMgb3Igb3B0aW1pemF0aW9ucywgSSdsbCBuZWVkIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUuIFNwZWNpZmljYWxseSwgSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXNgIHdpdGhpbiBgbmV0L25mYy9sbGNwX2NvcmUuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIGFuZCB3aGVyZSBJIGNhbiBnYWluIGEgcmVhbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0cmFuc21pc3Npb24gcHJvY2Vzcy4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGZyYW1lcyBhcmUgYWRkZWQgdG8gdGhlIHF1ZXVlLCBhbmQgd2hhdCBjb25jdXJyZW5jeSBtZWNoYW5pc21zLCBpZiBhbnksIGFyZSBpbiBwbGFjZSB0byBtYW5hZ2UgYWNjZXNzIHRvIHRoZSBxdWV1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE2MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjMxLjgyMTAyNTQwN1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyODM3MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcC5oPTIwOD12b2lkIG5mY19sbGNwX3B1dF9zc2FwKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHU4IHNzYXApO1xcbm5ldC9uZmMvbGxjcC5oOjIwOTppbnQgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXMoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2spO1xcbm5ldC9uZmMvbGxjcC5oLTIxMC12b2lkIG5mY19sbGNwX3NlbmRfdG9fcmF3X3NvY2soc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jPTY2MD1pbnQgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrLFxcbi0tXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmMtNzI5LVxcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jOjczMDpcXHRcXHRuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhzb2NrKTtcXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy03MzEtXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTkxND1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2Nvbm5lY3Qoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA0NC1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjEwNDU6aW50IG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA0Ni17XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTEwNzM9c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9oZGxjKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTMtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxMTU0OlxcdGlmIChuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhsbGNwX3NvY2spID09IDAgXFx1MDAyNlxcdTAwMjYgcHR5cGUgPT0gTExDUF9QRFVfSSlcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTUtXFx0XFx0bmZjX2xsY3Bfc2VuZF9ycihsbGNwX3NvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjozMS45NTM4ODE0N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzk3ODg4NTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byBMTENQIEZyYW1lIFRyYW5zbWlzc2lvbioqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRocm91Z2ggdGhpcyBORkMgY29kZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgdGhlIGxvdy1sZXZlbCBjb21tdW5pY2F0aW9uIHByb3RvY29sIChMTENQKS4gSSBzZWUgdGhhdCBgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lYCBpbiBgbmV0L25mYy9sbGNwX2NvbW1hbmRzLmNgIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3Igc2VuZGluZyBJLWZyYW1lcy4gTWFrZXMgc2Vuc2UuIEJ1dCB3aGVyZSBkb2VzIHRoZSBmcmFtZSBnZXQgKnF1ZXVlZCogZm9yIHNlbmRpbmc/IFRoZSBjb2RlIHRlbGxzIG1lIGl0IGNhbGxzIGBuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lc2AuIEFscmlnaHQsIHNvIHRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuIE5vdywgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBuZmNfbGxjcF9zZW5kX2lfZnJhbWVgIGl0c2VsZiBhbmQgc2VlIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgZGF0YSBmbG93LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoZSBzZW5kLCB3aGF0IGRhdGEgaXMgcGFzc2VkLCBhbmQgd2hhdCBwcmVwYXJhdG9yeSBzdGVwcyBhcmUgaW52b2x2ZWQgYmVmb3JlIHF1ZXVpbmcgdGhlIGZyYW1lLiBUaGlzIGlzIGxpa2VseSB3aGVyZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIGFuZCB3aW5kb3dpbmcgbG9naWMgd2lsbCBiZSBoYW5kbGVkLCB3aGljaCBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAwNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjM2LjM1MTc3MzI2NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NzQxOTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19sbGNwX3NlbmRfaV9mcmFtZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2xsY3AuaD0yNDM9aW50IG5mY19sbGNwX3NlbmRfZGlzY29ubmVjdChzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jayk7XFxubmV0L25mYy9sbGNwLmg6MjQ0OmludCBuZmNfbGxjcF9zZW5kX2lfZnJhbWUoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2ssXFxubmV0L25mYy9sbGNwLmgtMjQ1LVxcdFxcdFxcdCAgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKTtcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jPTYyNz1pbnQgbmZjX2xsY3Bfc2VuZF9kbShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCB1OCBzc2FwLCB1OCBkc2FwLCB1OCByZWFzb24pXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy02NTktXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM6NjYwOmludCBuZmNfbGxjcF9zZW5kX2lfZnJhbWUoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2ssXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmMtNjYxLVxcdFxcdFxcdCAgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz03ODU9c3RhdGljIGludCBsbGNwX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTgzNC1cXG5uZXQvbmZjL2xsY3Bfc29jay5jOjgzNTpcXHRyZXR1cm4gbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lKGxsY3Bfc29jaywgbXNnLCBsZW4pO1xcbm5ldC9uZmMvbGxjcF9zb2NrLmMtODM2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6MzYuNDU4NTIxMzY1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NDkwNTc3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IExMQ1AgU29ja2V0IFNlbmQgT3BlcmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyBob3cgdGhpcyBjb2RlIGlzIHJlYWNoZWQuIGBsbGNwX3NvY2tfc2VuZG1zZ2AgY2FsbHMgYG5mY19sbGNwX3NlbmRfaV9mcmFtZWAsIGFuZCB0aGF0J3MgdGhlIGNvcmUgb2YgdGhlIHNlbmQgb3BlcmF0aW9uIG92ZXIgdGhlIHNvY2tldC4gVGhpcyBtZWFucyB0aGF0IHVzZXJzcGFjZSBjb2RlIGNhbiByZWFjaCB0aGlzIGxvZ2ljIHRocm91Z2ggc3RhbmRhcmQgc29ja2V0IG9wZXJhdGlvbnMsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgZnV6emluZy4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBza2Jfc2V0X293bmVyX3dgIOKAkyB0aGF0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gcGF5IGF0dGVudGlvbiB0by4gVGhlIHJlbGV2YW50IGNvbmZpZyBoZXJlIGlzIGBORkNgLlxuXG5UaGUgcXVlc3Rpb24gbm93IGlzLCB3aGF0IGFyZSB0aGUgYmVzdCBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIGZ1enppbmc/IGBsbGNwX3NvY2tfc2VuZG1zZ2AgbG9va3MgbGlrZSBhIHN0cm9uZyBjYW5kaWRhdGUgYmVjYXVzZSBpdCdzIHRoZSBlbnRyeSBwb2ludCBmcm9tIHRoZSBzb2NrZXQgbGF5ZXIuIEkgc2hvdWxkIGFsc28gY29uc2lkZXIgYG5mY19sbGNwX3NlbmRfaV9mcmFtZWAgZGlyZWN0bHksIHRoYXQncyB3aGVyZSB0aGUgYWN0dWFsIGZyYW1lIHRyYW5zbWlzc2lvbiBoYXBwZW5zLiBXYWl0LCBJIGFsbW9zdCBmb3Jnb3QsIGBuZmNfbGxjcF90eF93b3JrYC4uLiBidXQgdGhhdCdzIG1hcmtlZCBzdGF0aWMsIHJpZ2h0PyBZZXMsIHNvIHRoYXQncyBwcm9iYWJseSBub3QgYSBnb29kIGZ1enppbmcgdGFyZ2V0IHNpbmNlIGl0IGNhbid0IGJlIGNhbGxlZCBkaXJlY3RseS4gYG5mY19sbGNwX3NlbmRfaV9mcmFtZWAgaXMgbm9uLXN0YXRpYyB0aG91Z2gsIHNvIHRoYXQncyBnb29kLlxuXG5TbywgbGV0J3MgY2lyY2xlIGJhY2suIGBsbGNwX3NvY2tfc2VuZG1zZ2AgYW5kIGBuZmNfbGxjcF9zZW5kX2lfZnJhbWVgIGFyZSB0aGUga2V5IGFyZWFzLiBJIG5lZWQgdG8gZGlnIGludG8gYGxsY3Bfc29ja19zZW5kbXNnYCBhbmQgc2VlIHdoYXQncyByZWFsbHkgaGFwcGVuaW5nIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Njk4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjQyLjEwNzU4MjAyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDM2OTYyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsbGNwX3NvY2tfc2VuZG1zZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2xsY3Bfc29jay5jPTY2MT1zdGF0aWMgaW50IGxsY3Bfc29ja19jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICpfYWRkcixcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtNzg0LVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6Nzg1OnN0YXRpYyBpbnQgbGxjcF9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtNzg2LVxcdFxcdFxcdCAgICAgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM9OTI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGxsY3Bfc29ja19vcHMgPSB7XFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTk0MS1cXHQuZ2V0c29ja29wdCAgICAgPSBuZmNfbGxjcF9nZXRzb2Nrb3B0LFxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6OTQyOlxcdC5zZW5kbXNnICAgICAgICA9IGxsY3Bfc29ja19zZW5kbXNnLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTQzLVxcdC5yZWN2bXNnICAgICAgICA9IGxsY3Bfc29ja19yZWN2bXNnLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjo0Mi4xODE5NTU3NThaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0MjcwNjEwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTExDUCBGcmFtZSBUcmFuc21pc3Npb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgTExDUCBmcmFtZSB0cmFuc21pc3Npb24gY29kZS4gVGhlIGZ1bmN0aW9uIGBsbGNwX3NvY2tfc2VuZG1zZ2AgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIG1ha2VzIGl0IGEgYml0IHRyaWNreSwgYmVjYXVzZSBpdCBjb3VsZCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgb3IgaXQgbWF5IG5vdCBldmVuIGhhdmUgYSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MuIFRoaXMgbWFrZXMgZGlyZWN0IGFuYWx5c2lzIGRpZmZpY3VsdC5cblxuSG93ZXZlciwgYG5mY19sbGNwX3NlbmRfaV9mcmFtZWAgaXMgZGVjbGFyZWQgYXMgbm9uLXN0YXRpYy4gVGhpcyBpcyBtdWNoIG1vcmUgcHJvbWlzaW5nLiBJJ2xsIGZvY3VzIG15IGF0dGVudGlvbiB0aGVyZSBhbmQgc2VlIHdoYXQgaW5zaWdodHMgSSBjYW4gZ2xlYW4gZnJvbSB0aGlzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDUzOCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjQ1LjcyNDY3MTY1MVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIyMjcyMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3Bfc2VuZF9pX2ZyYW1lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jPTYyNz1pbnQgbmZjX2xsY3Bfc2VuZF9kbShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCB1OCBzc2FwLCB1OCBkc2FwLCB1OCByZWFzb24pXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy02NTktXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM6NjYwOmludCBuZmNfbGxjcF9zZW5kX2lfZnJhbWUoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2ssXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmMtNjYxLVxcdFxcdFxcdCAgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjo0NS43ODY5MDQ1NThaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3MTYwNTIxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipJbnRlcm5hbCBSZXZpZXcgb2YgTkZDIExMQ1AgRnJhbWUgVHJhbnNtaXNzaW9uKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCB3aGF0IGFtIEkgdGhpbmtpbmcgYWJvdXQgaGVyZT8gKm5mY19sbGNwX3NlbmRfaV9mcmFtZSogaXNuJ3QgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIHF1ZXN0aW9uIGluIG15IG1pbmQgYWJvdXQgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgZm9yIGNvbmN1cnJlbmN5IGlzc3Vlcy4gVGhlbiwgdGhhdCBuYXR1cmFsbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgKm5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKi4gQXJlIHRoZXNlIHR3byByZWxhdGVkPyBJcyB0aGUgcXVldWluZyBtZWNoYW5pc20gdGhyZWFkLXNhZmUgb3IgaXMgaXQgc29tZWhvdyBsaW5rZWQ/IFBlcmhhcHMgdGhlcmUncyBhIGRlc2lnbiBkZWNpc2lvbiBJIG5lZWQgdG8gcmV2aWV3LiBJIHNob3VsZCBkb3VibGUgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIG5vbi1zdGF0aWMgbmF0dXJlIG9mIHRoZSBzZW5kaW5nIGZ1bmN0aW9uIGlzIGhhbmRsZWQgY29ycmVjdGx5IGlmIG11bHRpcGxlIHRocmVhZHMgY291bGQgYmUgY2FsbGluZyBpdC4gSXQgc291bmRzIGxpa2UgdGhlcmUgY291bGQgYmUgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTIxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6NDkuNDU4NTEzNzI1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg2NzgyOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3BfcXVldWVfaV9mcmFtZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9sbGNwX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2xsY3BfY29yZS5jPTkxND1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2Nvbm5lY3Qoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA0NC1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjEwNDU6aW50IG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA0Ni17XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTEwNzM9c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9oZGxjKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTMtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxMTU0OlxcdGlmIChuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhsbGNwX3NvY2spID09IDAgXFx1MDAyNlxcdTAwMjYgcHR5cGUgPT0gTExDUF9QRFVfSSlcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTUtXFx0XFx0bmZjX2xsY3Bfc2VuZF9ycihsbGNwX3NvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjo0OS41NjcxOTY3MzZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA5Mzc4MzExMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgb24gQVBJIEVudHJ5cG9pbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXNgIGZ1bmN0aW9uLiBJdCdzICpub3QqIHN0YXRpYywgd2hpY2ggaXMgZ29vZC4gVGhhdCdzIHRoZSBmaXJzdCBjaGVjay4gV2hhdCBhYm91dCBgbmZjX2xsY3BfdHhfd29ya2AgdGhvdWdoPyBIbW0sIGl0ICppcyogc3RhdGljLCBidXQgdGhlbiBJIHJlbWVtYmVyIGl0J3MgYSB3b3JrcXVldWUgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB0byBgSU5JVF9XT1JLYC4gVGhhdCBtZWFucyB0aGUgY29tcGlsZXIgYWxtb3N0IGNlcnRhaW5seSAqd29uJ3QqIGlubGluZSBpdCwgc28gaXQgd2lsbCBoYXZlIGl0cyBvd24gZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFRoYXQncyB3aGF0IHRoZSBwcm9tcHQgd2FudGVkLCBhdm9pZGluZyBpbmxpbmVkIGZ1bmN0aW9ucyFcblxuU28gdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgd2FudHMgbWUgdG8gY2hvb3NlIG5vbi1zdGF0aWMsICpub24taW5saW5lZCogQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucy4gU2luY2UgSSdtIHRoaW5raW5nIGFib3V0IGl0LCBldmVuIHRob3VnaCBgbmZjX2xsY3BfdHhfd29ya2AgaXMgc3RhdGljLCBiZWNhdXNlIGl0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQncyBhIGdvb2QgZW50cnkgcG9pbnQuIEJ1dCBgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lYCBsb29rcyBldmVuIGJldHRlciwgYW5kIGl0ICppcyogbm9uLXN0YXRpYywgc28gbGV0J3Mgc3RpY2sgd2l0aCB0aGF0LlxuXG5Ob3csIGxldCdzIHNlZSBhYm91dCB0aGUgY29uZmlndXJhdGlvbi4gSXMganVzdCBgTkZDYCBlbmFibGVkPyBMZXQncyBjaGVjay4gYE5GQ2AgZGVwZW5kcyBvbiBgUkZLSUxMIHx8ICFSRktJTExgLiBUaGF0J3MgYSBiaXQgb2RkLi4uIEFoLCB3YWl0LiBgTkZDYCBpcyBgdHJpc3RhdGUgXCJORkMgc3Vic3lzdGVtIHN1cHBvcnRcImAuIE9rYXksIHRoYXQgbWFrZXMgbW9yZSBzZW5zZS4gQXJlIHRoZXJlIGFueSBvdGhlciBjb25maWcgb3B0aW9ucyB0aGF0IGFyZSBuZWVkZWQ/IExpa2UsIGBORkNfTkNJYCBvciBgTkZDX0hDSWA/XG5cblRoZSBwYXRjaCBpcyBpbiBgbmV0L25mYy9sbGNwX2NvcmUuY2AsIHNvIGl0IHNob3VsZCBiZSB3aXRoaW4gYGxsY3BfY29yZS5vYC4gVGhhdCBmaWxlIGdldHMgY29tcGlsZWQgd2hlbiBgQ09ORklHX05GQ2AgaXMgZW5hYmxlZCwgd2hpY2ggYWxsIHNlZW1zIHRvIGJlIHRoZSBjYXNlLCBzbyBsZXQncyBkb3VibGUtY2hlY2sgdGhlIGBuZXQvbmZjL01ha2VmaWxlYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ1NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjo1NS42NjA5ODI0NzhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFrZWZpbGUgZm9yIHRoZSBMaW51eCBORkMgc3Vic3lzdGVtLlxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRvYmotJChDT05GSUdfTkZDKSArPSBuZmMub1xcbiAgIDc6XFx0b2JqLSQoQ09ORklHX05GQ19OQ0kpICs9IG5jaS9cXG4gICA4OlxcdG9iai0kKENPTkZJR19ORkNfSENJKSArPSBoY2kvXFxuICAgOTpcXHRvYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICs9IG5mY19kaWdpdGFsLm9cXG4gIDEwOlxcdFxcbiAgMTE6XFx0bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXFxcXG4gIDEyOlxcdFxcdFxcdGxsY3Bfc29jay5vXFxuICAxMzpcXHRcXG4gIDE0OlxcdG5mY19kaWdpdGFsLW9ianMgOj0gZGlnaXRhbF9jb3JlLm8gZGlnaXRhbF90ZWNobm9sb2d5Lm8gZGlnaXRhbF9kZXAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjo1NS42NjEwNDU5OThaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE2MTczOTc2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTkZDIExMQ1AgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBDT05GSUdfTkZDYCBpcyBpbmRlZWQgZW5vdWdoIHRvIGJ1aWxkIGBsbGNwX2NvcmUuY2AuIExldCdzIGJyZWFrIGRvd24gbXkgdGhpbmtpbmc6XG5cblRoZSBpbml0aWFsIGFzc2Vzc21lbnQgZmxhZ3MgdGhpcyBhcyBXb3J0aEZ1enppbmcsIGFuZCB0aGUgcHJpbWFyeSBmb2N1cyBmYWxscyBvbiBgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lYCwgYG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzYCwgYW5kIGBuZmNfbGxjcF90eF93b3JrYC4gVGhlIG9ubHkgZW5hYmxpbmcgY29uZmlnIGlzIGBORkNgLiBUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiB0aGlzIHBhdGNoIGFsdGVycyB0aGUgZnVuY3Rpb24gYG5mY19sbGNwX3R4X3dvcmtgLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGFuIHNrYidzIG93bmVyIGlzIHNldCBhZnRlciBpdCdzIGNvcGllZC4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIHNvY2tldCBhY2NvdW50aW5nLCBhbmQgdGhhdCBjb2RlICppcyogcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBORkMgc29ja2V0IG9wZXJhdGlvbnMuXG5cbkhvd2V2ZXIsIEkgcGF1c2VkIGhlcmUuIGBuZmNfbGxjcF90eF93b3JrYCBpcyBkZWNsYXJlZCBhcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCdzIGEgcG9pbnQgdG8gY29uc2lkZXIuIFdoaWxlIG5vdCBuZWNlc3NhcmlseSBkaXNxdWFsaWZ5aW5nIGl0LCBpdCdzIGdlbmVyYWxseSBiZXN0IHRvIHByb3ZpZGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgaWYgYXZhaWxhYmxlLiBgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lYCBhbmQgYG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzYCBhcmUgZGVmaW5pdGVseSBnb29kIGNob2ljZXMuIEknbSBnb2luZyB0byBpbmNsdWRlIGBuZmNfbGxjcF90eF93b3JrYCBhcyB3ZWxsLCBzaW5jZSBpdCdzIHRoZSBmdW5jdGlvbiAqZGlyZWN0bHkqIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaCBhbmQgaXQncyBhIHdvcmtxdWV1ZSBoYW5kbGVyLCBtYWtpbmcgaW5saW5pbmcgbGVzcyBsaWtlbHkuIEl0J3MgaW1wb3J0YW50IHRvIGNhcHR1cmUgdGhlIGFsdGVyZWQgbG9naWMuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJIHF1aWNrbHkgZG91YmxlLWNoZWNrZWQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBBbmQgeWVzLCBgTkZDYCBpcyBhbGwgdGhhdCdzIHJlcXVpcmVkLlxuXG5JJ20gY29uZmlkZW50IGluIHRoaXMgZXZhbHVhdGlvbiwgc28gSSdtIGNhbGxpbmcgc2V0LXJlc3VsdHMgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQzNiwiT3V0cHV0VG9rZW5zIjoxMjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNzowMy44MjI3ODg0ODhaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDU3MzE0NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mY19sbGNwX3NlbmRfaV9mcmFtZVwiLFxuICAgIFwibmZjX2xsY3BfcXVldWVfaV9mcmFtZXNcIixcbiAgICBcIm5mY19sbGNwX3R4X3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZjX2xsY3BfdHhfd29ya2AgdG8gc2V0IHRoZSBzb2NrZXQgb3duZXIgb2YgYSBjb3BpZWQgc2tiLCB3aGljaCBhZmZlY3RzIHNvY2tldCBtZW1vcnkgYWNjb3VudGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBORkMgTExDUCBjb3JlLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIE5GQyBzb2NrZXQgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZmNfbGxjcF9zZW5kX2lfZnJhbWVcIixcbiAgICBcIm5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzXCIsXG4gICAgXCJuZmNfbGxjcF90eF93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiwgd2hpY2ggYWZmZWN0cyBzb2NrZXQgbWVtb3J5IGFjY291bnRpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTkZDIExMQ1AgY29yZSwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBORkMgc29ja2V0IG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE3OjAzLjk2ODUyNzAzNFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk1MjAzNTQ3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE3OjAzLjk2ODk2NzYyNFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3OTUxNTkwNTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZjX2xsY3BfdHhfd29ya2AgdG8gc2V0IHRoZSBzb2NrZXQgb3duZXIgb2YgYSBjb3BpZWQgc2tiIHVzaW5nIGBza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKWAuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBzb2NrZXQgbWVtb3J5IGFjY291bnRpbmcgYW5kIHBvdGVudGlhbGx5IHByZXZlbnRzIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byBzb2NrZXQgZGVzdHJ1Y3Rpb24uIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IGJvdW5kcyBjaGVja2luZywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgbWVtb3J5IGNvcnJ1cHRpb24sIHVzZS1hZnRlci1mcmVlLCBvciBtZW1vcnkgbGVhayBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtNRU1MRUFLLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE2MjRmNjA2YzhjZjY1YWRjMGQzY2FhOGJhNDVlOGRhZTgyMGIxYzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxNToxNTo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jXG5pbmRleCBjYWMxYjU0ODcwNjRkLi40OWNiNjMyMjY4YzBjIDEwMDY0NFxuLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuY1xuKysrIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuQEAgLTc4Niw4ICs3ODYsMTEgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3BfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXCJMTENQIFR4OiBcIiwgRFVNUF9QUkVGSVhfT0ZGU0VULFxuIFx0XHRcdFx0XHQgICAgIDE2LCAxLCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbiwgdHJ1ZSk7XG4gXG4tXHRcdFx0aWYgKHB0eXBlID09IExMQ1BfUERVX0kpXG4rXHRcdFx0aWYgKHB0eXBlID09IExMQ1BfUERVX0kpIHtcbiBcdFx0XHRcdGNvcHlfc2tiID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTtcbitcdFx0XHRcdGlmIChjb3B5X3NrYilcbitcdFx0XHRcdFx0c2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzayk7XG4rXHRcdFx0fVxuIFxuIFx0XHRcdF9fbmV0X3RpbWVzdGFtcChza2IpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTc6MDMuOTY4OTY4NDg0WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NTE1NjI5OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTExDUCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiByZXZpZXdpbmcgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYG5mY19sbGNwX3R4X3dvcmtgIGluIGBuZXQvbmZjL2xsY3BfY29yZS5jYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCdzIGFkZGluZyBgc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzayk7YCBhZnRlciBhIHN1Y2Nlc3NmdWwgYHNrYl9jb3B5YCBvZiB0aGUgYHNrYmAgKHNvY2tldCBidWZmZXIpLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhpcyBzZWVtZWQgbGlrZSBpdCB3YXMgcmVsYXRlZCB0byBzb2NrZXQgYWNjb3VudGluZyBhbmQgbWVtb3J5IHRyYWNraW5nLCBub3QsIGNydWNpYWxseSwgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIEkgZGlkIGEgcXVpY2sgZG91YmxlLWNoZWNrIG9mIHRoZSBjb2RlIHNuaXBwZXQganVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmU6XG5cbmBgYGNcbi1cdFx0XHRpZiAocHR5cGUgPT0gTExDUF9QRFVfSSlcbitcdFx0XHRpZiAocHR5cGUgPT0gTExDUF9QRFVfSSkge1xuIFx0XHRcdFx0Y29weV9za2IgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpO1xuK1x0XHRcdFx0aWYgKGNvcHlfc2tiKVxuK1x0XHRcdFx0XHRza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKTtcbitcdFx0XHR9XG5gYGBcblxuWWVwLCBpdCdzIGRlZmluaXRlbHkgYWJvdXQgZml4aW5nIGEgbWVtb3J5IGFjY291bnRpbmcgcHJvYmxlbSwgb3IgcG9zc2libHkgYSB1c2UtYWZ0ZXItZnJlZS9tZW1vcnkgbGVhayByZWxhdGVkIHRvIGhvdyB0aGUgc2tiIG93bmVyc2hpcCBpcyBoYW5kbGVkIGFmdGVyIHRoZSBjb3B5LiBJdCdzIG5vdCBpbnRyb2R1Y2luZyBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgYW5kIGRlZmluaXRlbHkgbm8gaW5mby1sZWFrcywgc28gSSBjYW4gcHV0IHRob3NlIGNvbmNlcm5zIGFzaWRlLiBJZiB0aGVyZSAqd2VyZSogbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlcywgS0FTQU4sIEtNRU1MRUFLLCBvciB0aGUgc3RhbmRhcmQgdG9vbHMgd291bGQgY2F0Y2ggdGhlbSwgYnV0IEtNU0FOIGlzIHdoYXQgd2UgbmVlZCB0byB3b3JyeSBhYm91dCB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlIGFnYWluLCBJJ20gY29tZm9ydGFibGUgdGhhdCBgc2tiX2NvcHlgIGNyZWF0ZXMgYSAqY29weSogb2YgdGhlIGRhdGEsIGFuZCB0aGVuIGBza2Jfc2V0X293bmVyX3dgIHNldHMgdGhlIHNvY2tldCBvd25lciBmb3Igd3JpdGUgYWNjb3VudGluZyBwdXJwb3NlcyBvbiB0aGUgY29weS4gVGhlcmUncyBqdXN0IG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGludm9sdmVkIGhlcmUuIEl0J3Mgc2FmZSB0byBzYXkgdGhlcmUncyBubyByZWFzb24gdG8gZmxhZyB0aGlzIGZvciBLTVNBTi4gSSdtIGdvaW5nIHRvIGdvIGFoZWFkIGFuZCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGFuZCBtb3ZlIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDUxLCJPdXRwdXRUb2tlbnMiOjE2MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE3OjExLjkyMDUzNDUwMVoiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiB1c2luZyBgc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzaylgLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgc29ja2V0IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50cyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gc29ja2V0IGRlc3RydWN0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3IgbWVtb3J5IGxlYWsgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZjX2xsY3BfdHhfd29ya2AgdG8gc2V0IHRoZSBzb2NrZXQgb3duZXIgb2YgYSBjb3BpZWQgc2tiIHVzaW5nIGBza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKWAuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBzb2NrZXQgbWVtb3J5IGFjY291bnRpbmcgYW5kIHBvdGVudGlhbGx5IHByZXZlbnRzIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byBzb2NrZXQgZGVzdHJ1Y3Rpb24uIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IGJvdW5kcyBjaGVja2luZywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgbWVtb3J5IGNvcnJ1cHRpb24sIHVzZS1hZnRlci1mcmVlLCBvciBtZW1vcnkgbGVhayBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtNRU1MRUFLLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowr76ml[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-21 14:33:24 +0000 UTC FinishedAt: 2026-08-21 15:17:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "746fc0787f616da418ffc04a110296fe95d53491", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "746fc0787f616da418ffc04a110296fe95d53491", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC" ], "series_id": "159e8c5d-d01a-4ed9-b94e-5898a5f82571" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nfc_llcp_send_i_frame", "nfc_llcp_queue_i_frames", "nfc_llcp_tx_work" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mY19sbGNwX3NlbmRfaV9mcmFtZSYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF90eF93b3JrJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiB1c2luZyBgc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzaylgLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgc29ja2V0IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50cyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gc29ja2V0IGRlc3RydWN0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3IgbWVtb3J5IGxlYWsgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiwgd2hpY2ggYWZmZWN0cyBzb2NrZXQgbWVtb3J5IGFjY291bnRpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTkZDIExMQ1AgY29yZSwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBORkMgc29ja2V0IG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNjI0ZjYwNmM4Y2Y2NWFkYzBkM2NhYThiYTQ1ZThkYWU4MjBiMWMxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjEgMTU6MTU6NTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX2NvcmUuYyBiL25ldC9uZmMvbGxjcF9jb3JlLmNcbmluZGV4IGNhYzFiNTQ4NzA2NGQuLjQ5Y2I2MzIyNjhjMGMgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2xsY3BfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL2xsY3BfY29yZS5jXG5AQCAtNzg2LDggJiM0Mzs3ODYsMTEgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3BfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXCYjMzQ7TExDUCBUeDogXCYjMzQ7LCBEVU1QX1BSRUZJWF9PRkZTRVQsXG4gXHRcdFx0XHRcdCAgICAgMTYsIDEsIHNrYi1cdTAwM2VkYXRhLCBza2ItXHUwMDNlbGVuLCB0cnVlKTtcbiBcbi1cdFx0XHRpZiAocHR5cGUgPT0gTExDUF9QRFVfSSlcbiYjNDM7XHRcdFx0aWYgKHB0eXBlID09IExMQ1BfUERVX0kpIHtcbiBcdFx0XHRcdGNvcHlfc2tiID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRcdFx0XHRpZiAoY29weV9za2IpXG4mIzQzO1x0XHRcdFx0XHRza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKTtcbiYjNDM7XHRcdFx0fVxuIFxuIFx0XHRcdF9fbmV0X3RpbWVzdGFtcChza2IpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZmNfbGxjcF9zZW5kX2lfZnJhbWUmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfcXVldWVfaV9mcmFtZXMmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfdHhfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbmZjX2xsY3BfdHhfd29ya2AgdG8gc2V0IHRoZSBzb2NrZXQgb3duZXIgb2YgYSBjb3BpZWQgc2tiLCB3aGljaCBhZmZlY3RzIHNvY2tldCBtZW1vcnkgYWNjb3VudGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBORkMgTExDUCBjb3JlLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIE5GQyBzb2NrZXQgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE2MjRmNjA2YzhjZjY1YWRjMGQzY2FhOGJhNDVlOGRhZTgyMGIxYzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAyMSAxNToxNTo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jCmluZGV4IGNhYzFiNTQ4NzA2NGQuLjQ5Y2I2MzIyNjhjMGMgMTAwNjQ0Ci0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9sbGNwX2NvcmUuYwpAQCAtNzg2LDggJiM0Mzs3ODYsMTEgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3BfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCQlwcmludF9oZXhfZHVtcF9kZWJ1ZygmIzM0O0xMQ1AgVHg6ICYjMzQ7LCBEVU1QX1BSRUZJWF9PRkZTRVQsCiAJCQkJCSAgICAgMTYsIDEsIHNrYi0mZ3Q7ZGF0YSwgc2tiLSZndDtsZW4sIHRydWUpOwogCi0JCQlpZiAocHR5cGUgPT0gTExDUF9QRFVfSSkKJiM0MzsJCQlpZiAocHR5cGUgPT0gTExDUF9QRFVfSSkgewogCQkJCWNvcHlfc2tiID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTsKJiM0MzsJCQkJaWYgKGNvcHlfc2tiKQomIzQzOwkJCQkJc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzayk7CiYjNDM7CQkJfQogCiAJCQlfX25ldF90aW1lc3RhbXAoc2tiKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDU0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIExMQ1AgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHRoZSBrZXkgZmlsZSBiZWluZyBtb2RpZmllZCBpcyBgbmV0L25mYy9sbGNwX2NvcmUuY2AuIERpdmluZyBkZWVwZXIsIHRoZSBwYXRjaCB6ZXJvZXMgaW4gb24gY2hhbmdlcyB3aXRoaW4gdGhlIGBuZmNfbGxjcF90eF93b3JrYCBmdW5jdGlvbi4gVGhlIGNydWNpYWwgYWRkaXRpb24gc2VlbXMgdG8gYmUgdGhpcyBsaW5lOiBgaWYgKGNvcHlfc2tiKSBza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKTtgIHdoZW4gY29weWluZyBhbiBgc2tiYC4KCk5vdywgdGhhdCBgc2tiX3NldF9vd25lcl93YCBjYWxsIGlzIHdoYXQgcmVhbGx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSXQgaW1wbGllcyBzb21lIG93bmVyc2hpcCBtYW5hZ2VtZW50IGlzIGJlaW5nIHR3ZWFrZWQgd2hlbiBoYW5kbGluZyBTZW5kIFNLQnMgd2l0aGluIHRoZSBORkMgTExDUCBzdGFjay4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBhZGRlZCBvd25lcnNoaXAgc2V0dGluZy4gV2UgbmVlZCB0byBnbyBiYWNrIGludG8gYG5mY19sbGNwX3R4X3dvcmtgIGFuZCBzZWUgdGhlIGNvbXBsZXRlIHBpY3R1cmUgdG8gYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugb24gbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIGxvb2tpbmcgYXQgaG93IHRoZSBgc2tiYCBpcyB1c2VkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBhZGRpdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgY29weV9za2JgIHZhcmlhYmxlIGlzIGJlaW5nIGhhbmRsZWQgYW5kIHdoYXQga2luZCBvZiBTS0IgaXMgYmVpbmcgaGFuZGxlZCB3aXRoIGBjb3B5X3NrYmAuIEkgYW0gd29uZGVyaW5nIGlmIHRoZSBhZGRpdGlvbiBoZXJlIGlzIHRvIGZpeCBzb21lIGtpbmQgb2YgcmVzb3VyY2UgbGVhayBpc3N1ZS4gVGhlIGNvbnRleHQgb2YgdGhlIGNoYW5nZSBpcyB2aXRhbC4gSSBuZWVkIHRvIHNlZSB3aGF0IGVsc2UgaGFzIGJlZW4gbW9kaWZpZWQgYW5kIGNvbXBhcmUgd2l0aCB0aGUgb2xkZXIgdmVyc2lvbiBvZiB0aGUgY29kZS4gSXMgdGhpcyBhIGJ1ZyBmaXgsIG9wdGltaXphdGlvbiwgb3IgYSBmdW5jdGlvbmFsIGNoYW5nZT8gV2Ugc2hvdWxkIGFsc28gY2hlY2sgb3RoZXIgY29tbWl0cyBpbiB0aGUgc2FtZSByYW5nZSBvZiB0aW1lIGFzIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mY19sbGNwX3R4X3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3BfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9jb3JlLmM9NzIxPXZvaWQgbmZjX2xsY3Bfc2VuZF90b19yYXdfc29jayhzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzYwLVxubmV0L25mYy9sbGNwX2NvcmUuYzo3NjE6c3RhdGljIHZvaWQgbmZjX2xsY3BfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc2Mi17XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNjU2PWludCBuZmNfbGxjcF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5mY19kZXYgKm5kZXYpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjc5LVx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSk7XG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2ODA6XHRJTklUX1dPUksoXHUwMDI2bG9jYWwtXHUwMDNldHhfd29yaywgbmZjX2xsY3BfdHhfd29yayk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2ODEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogTkZDIExMQ1AgYW5kIFNLQiBPd25lcnNoaXAqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1ha2luZyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBgbmZjX2xsY3BfdHhfd29ya2AuIFRoZSBrZXkgbGluZSB0aGF0IGp1bXBzIG91dCBpcyB0aGUgYWRkaXRpb24gb2YgYHNrYl9zZXRfb3duZXJfdyhjb3B5X3NrYiwgc2spYC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIHdlJiMzOTtyZSBlc3NlbnRpYWxseSB0YWtpbmcgb3duZXJzaGlwIG9mIGEgY29waWVkIFNLQiwgYW5kIHRoYXQgaGFzIGRpcmVjdCBpbXBsaWNhdGlvbnMgZm9yIHRoZSB3YXkgd2UgaGFuZGxlIHNvY2tldCBhY2NvdW50aW5nIGFuZCBvdmVyYWxsIG1lbW9yeSB0cmFja2luZyB3aXRoaW4gdGhlIHN5c3RlbS4KClRoaXMgaXNuJiMzOTt0IGp1c3QgY29zbWV0aWM7IGl0JiMzOTtzIGEgcmVhbCBmdW5jdGlvbmFsIHNoaWZ0LiBJdCYjMzk7cyB0ZWxsaW5nIG1lIHRvIHBheSBhdHRlbnRpb24gdG8gaG93IHRoaXMgaW1wYWN0cyB0aGUgcmVzb3VyY2UgbWFuYWdlbWVudCBhcm91bmQgTkZDIExMQ1AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBpbiBwbGF5IHRoYXQgZW5hYmxlIE5GQyBMTENQIGluIHRoZSBmaXJzdCBwbGFjZSwgYXMgdGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkNfTExDUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDg5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTkZDIEtjb25maWcqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgTkZDIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBzdGFuZGFyZCBhcHByb2FjaCDigJMgaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBgbmV0L25mYy9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZmVhdHVyZSBzZXQsIGRlcGVuZGVuY2llcywgYW5kIGJ1aWxkIG9wdGlvbnMgZm9yIHRoaXMgc3Vic3lzdGVtLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBjb3JlIE5GQyBmdW5jdGlvbmFsaXR5IGRlZmluaXRpb25zLCBtYXliZSBzb21lIHNwZWNpZmljIGRyaXZlciBzZWxlY3Rpb25zIGlmIHRoZXkmIzM5O3JlIGhhbmRsZWQgYXQgYSBoaWdoIGxldmVsLCBhbmQgYW55IHBsYXRmb3JtLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXBwbHkuIFRoaXMgS2NvbmZpZyB3aWxsIGxpa2VseSBsaW5rIHRvIG1vcmUgZ3JhbnVsYXIgb25lcyB3aXRoaW4gc3ViZGlyZWN0b3JpZXMgaWYgdGhpbmdzIGFyZSBwcm9wZXJseSBtb2R1bGFyaXplZC4gSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBjb21wbGV4IGRlcGVuZGVuY2llcywgcG9zc2libHkgaW52b2x2aW5nIG90aGVyIG5ldHdvcmtpbmcgY29tcG9uZW50cyBvciBoYXJkd2FyZSBzdXBwb3J0LCBzbyBJJiMzOTtsbCBuZWVkIHRvIGJlIHRob3JvdWdoLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBkZWZhdWx0IHNldHRpbmdzIHRoYXQgbWlnaHQgYmUgYmFrZWQgaW50byB0aGUga2VybmVsIGJ1aWxkLCBhbmQga2VlcCBhbiBleWUgb3V0IGZvciBhbnkgdW51c3VhbCBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIGNyZWF0ZSBwcm9ibGVtcyBsYXRlci4gUmlnaHQsIGxldCYjMzk7cyBnbyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZy01LVxubmV0L25mYy9LY29uZmlnOjY6bWVudWNvbmZpZyBORkNcbm5ldC9uZmMvS2NvbmZpZy03LVx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxuLS1cbm5ldC9uZmMvS2NvbmZpZy0xNi1cbm5ldC9uZmMvS2NvbmZpZzoxNzpjb25maWcgTkZDX0RJR0lUQUxcbm5ldC9uZmMvS2NvbmZpZy0xOC1cdGRlcGVuZHMgb24gTkZDXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE5GQyBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBwdWxsIHVwIHRoZSBgbmV0L25mYy9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGFzc3VtaW5nIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIHN0YW5kYXJkIExpbnV4IGtlcm5lbCBzb3VyY2UgaGVyZSwgc28gdGhpcyBpcyB3aGVyZSB3ZSYjMzk7bGwgZmluZCBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5lYXIgRmllbGQgQ29tbXVuaWNhdGlvbi4gSSYjMzk7bSBpbW1lZGlhdGVseSBsb29raW5nIGZvciB0aGUgZ2VuZXJhbCBzdHJ1Y3R1cmUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSB0aGUgc3RhbmRhcmQgYGNvbmZpZ2AgYmxvY2tzLCBgYm9vbGAsIGB0cmlzdGF0ZWAsIGFuZCBgc3RyaW5nYCBkZWZpbml0aW9ucy4gSSBhbnRpY2lwYXRlIHNlZWluZyBkZXBlbmRlbmNpZXMsIGxpa2VseSBvbiBvdGhlciBuZXR3b3JrLXJlbGF0ZWQgZmVhdHVyZXMgb3IgcG90ZW50aWFsbHkgZXZlbiBoYXJkd2FyZSBkcml2ZXJzLCBlc3BlY2lhbGx5IGlmIE5GQyBjb250cm9sbGVyIHN1cHBvcnQgaXMgbW9kdWxhcml6ZWQuCgpJJiMzOTttIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgaG93IHRoZXkmIzM5O3ZlIG9yZ2FuaXplZCB0aGUgb3B0aW9ucy4gQXJlIHRoZXkgZ3JvdXBlZCBieSBORkMgcHJvdG9jb2wgc3RhbmRhcmRzIChlLmcuLCBORkMtQSwgTkZDLUIsIE5GQy1GKT8gQnkgY29udHJvbGxlciB0eXBlPyBPciBtYXliZSBieSBmZWF0dXJlIHNldCwgbGlrZSByZWFkZXIvd3JpdGVyIGZ1bmN0aW9uYWxpdHkgdmVyc3VzIHBlZXItdG8tcGVlcj8gVGhlIG9yZ2FuaXphdGlvbiB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgdGhlIGRlc2lnbiBwaGlsb3NvcGh5LgoKTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0cy4gV2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgbmVlZCB0byBiZSBlbmFibGVkIGZvciBORkMgdG8gd29yaz8gQXJlIHRoZXJlIGFueSBoYXJkIGRlcGVuZGVuY2llcywgb3IgYXJlIG1vc3QgdGhpbmdzIGNvbmZpZ3VyYWJsZT8gVW5kZXJzdGFuZGluZyB0aGUgZGVmYXVsdHMgaXMga2V5IGJlY2F1c2UgdGhleSBkaWN0YXRlIHRoZSAmIzM0O291dC1vZi10aGUtYm94JiMzNDsgYmVoYXZpb3IuIEFyZSB0aGUgZGVmYXVsdHMgc2Vuc2libGUgZnJvbSBhIHNlY3VyaXR5IGFuZCB1c2FiaWxpdHkgc3RhbmRwb2ludD8gVGhhdCYjMzk7cyB3aGF0IEkmIzM5O2xsIGJlIGxvb2tpbmcgYXQuCgpJJiMzOTtsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSAmIzM0O2V4cGVydCYjMzQ7IG9wdGlvbnMsIGlmIHRoZXJlIGFyZSBhbnksIGFuZCBob3cgdGhleSBhcmUgZXhwbGFpbmVkLiBBcmUgdGhlcmUgY2xlYXIgZGVzY3JpcHRpb25zIG9mIHRoZSBpbXBhY3Qgb2YgdGhlc2Ugb3B0aW9ucz8gSSB3YW50IHRvIHNlZSBpZiB0aGUgS2NvbmZpZyBwcm92aWRlcyBzdWZmaWNpZW50IGd1aWRhbmNlIGZvciB0aG9zZSB3aG8gbWlnaHQgd2FudCB0byBjdXN0b21pemUgdGhlIE5GQyBzdGFjayBmb3IgdGhlaXIgc3BlY2lmaWMgZW1iZWRkZWQgZGV2aWNlIG9yIGFwcGxpY2F0aW9uLiBGaW5hbGx5LCBJJiMzOTtsbCBza2ltIGZvciBhbnkgZGVwcmVjYXRpb24gd2FybmluZ3Mgb3IgYW55dGhpbmcgdGhhdCBwb2ludHMgdG8gc29tZSBvZiB0aGUgY29kZSBiZWluZyByZXBsYWNlZCBvciB1bmRlciBkZXZlbG9wbWVudC4gQWx3YXlzIGludGVyZXN0aW5nIHRvIG5vdGUgdGhlICYjMzQ7VE9ETyYjMzQ7IGVudHJpZXMgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmZjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTkZDIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTkZDXG4gICA3Olx0XHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG4gICA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtORkMgc3Vic3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdGRlZmF1bHQgblxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHN1cHBvcnQgZm9yIE5GQyAoTmVhciBmaWVsZFxuICAxMjpcdFx0ICBjb21tdW5pY2F0aW9uKSBkZXZpY2VzLlxuICAxMzpcdFxuICAxNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsXG4gIDE1Olx0XHQgIGJlIGNhbGxlZCBuZmMuXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIE5GQ19ESUdJVEFMXG4gIDE4Olx0XHRkZXBlbmRzIG9uIE5GQ1xuICAxOTpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuICAyMDpcdFx0c2VsZWN0IENSQ19JVFVfVFxuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7TkZDIERpZ2l0YWwgUHJvdG9jb2wgc3RhY2sgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVmYXVsdCBuXG4gIDIzOlx0XHRoZWxwXG4gIDI0Olx0XHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGJ1aWxkIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrIHN1cHBvcnQuXG4gIDI1Olx0XHQgIFRoaXMgaXMgbmVlZGVkIGJ5IE5GQyBjaGlwc2V0cyB3aG9zZSBmaXJtd2FyZSBvbmx5IGltcGxlbWVudFxuICAyNjpcdFx0ICB0aGUgTkZDIGFuYWxvZyBsYXllci5cbiAgMjc6XHRcbiAgMjg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxuICAyOTpcdFx0ICBiZSBjYWxsZWQgbmZjX2RpZ2l0YWwuXG4gIDMwOlx0XG4gIDMxOlx0c291cmNlIFwmIzM0O25ldC9uZmMvbmNpL0tjb25maWdcJiMzNDtcbiAgMzI6XHRzb3VyY2UgXCYjMzQ7bmV0L25mYy9oY2kvS2NvbmZpZ1wmIzM0O1xuICAzMzpcdFxuICAzNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRm9jdXNpbmcgb24gTkZDIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gTkZDIGlzIGNsZWFybHkgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBwb2ludCBoZXJlLiBCdXQgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJJiMzOTttIHdvbmRlcmluZyBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGZvciBMTENQIHRoYXQgYXJlICpzZXBhcmF0ZSogZnJvbSB0aGUgZ2VuZXJhbCBORkMgc2V0dGluZ3MuIEl0JiMzOTtzIHVzdWFsbHkgdGhlIGNhc2UgdGhhdCB0aGVyZSBhcmUgbW9yZSBzcGVjaWZpYyBvcHRpb25zIGZvciBlYWNoIHByb3RvY29sLiBMZXQmIzM5O3Mgbm90IGFzc3VtZSBldmVyeXRoaW5nIGlzIHVuZGVyIHRoZSBgTkZDYCB1bWJyZWxsYSwgZXZlbiBpZiBpdCBzZWVtcyB0aGF0IHdheSBhdCBmaXJzdCBnbGFuY2UuIFRpbWUgdG8gZGl2ZSBpbnRvIGBuZXQvbmZjL01ha2VmaWxlYCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgaGludHMgb3Igc3BlY2lmaWMgYnVpbGQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBMTENQIHR1Y2tlZCBhd2F5IGluIHRoZXJlLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIE5GQyBhbmQgTExDUCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIE1ha2VmaWxlIGZvciB0aGUgTGludXggTkZDIHN1YnN5c3RlbS5cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0b2JqLSQoQ09ORklHX05GQykgJiM0Mzs9IG5mYy5vXG4gICA3Olx0b2JqLSQoQ09ORklHX05GQ19OQ0kpICYjNDM7PSBuY2kvXG4gICA4Olx0b2JqLSQoQ09ORklHX05GQ19IQ0kpICYjNDM7PSBoY2kvXG4gICA5Olx0b2JqLSQoQ09ORklHX05GQ19ESUdJVEFMKSAmIzQzOz0gbmZjX2RpZ2l0YWwub1xuICAxMDpcdFxuICAxMTpcdG5mYy1vYmpzIDo9IGNvcmUubyBuZXRsaW5rLm8gYWZfbmZjLm8gcmF3c29jay5vIGxsY3BfY29yZS5vIGxsY3BfY29tbWFuZHMubyBcXFxuICAxMjpcdFx0XHRsbGNwX3NvY2sub1xuICAxMzpcdFxuICAxNDpcdG5mY19kaWdpdGFsLW9ianMgOj0gZGlnaXRhbF9jb3JlLm8gZGlnaXRhbF90ZWNobm9sb2d5Lm8gZGlnaXRhbF9kZXAub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzgzCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgbGxjcF9jb3JlLm9gIE1vZHVsZSoqCgpPa2F5LCBzbyBgbGxjcF9jb3JlLm9gIGlzIGNsZWFybHkgcGFydCBvZiB0aGUgTkZDIG9iamVjdCBzZXQsIHNwZWNpZmljYWxseSBjb21waWxlZCB3aGVuIHRoZSBgQ09ORklHX05GQ2Agb3B0aW9uIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3Mgb3VyIHN0YXJ0aW5nIHBvaW50OiBgTkZDYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmbGFnLiBOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoaXMgYG5mY19sbGNwX3R4X3dvcmtgIGZ1bmN0aW9uLiBUaGUgY29kZSBpbmRpY2F0ZXMgaXQmIzM5O3MgYSB3b3JrcXVldWUgZnVuY3Rpb24sIG1lYW5pbmcgaXQmIzM5O3MgbGlrZWx5IGNhbGxlZCBhc3luY2hyb25vdXNseS4gSXQgc2VlbXMgYG5mY19sbGNwX3NlbmRfdG9fcmF3X3NvY2tgIGlzIG9uZSB0cmlnZ2VyLCBvciBwZXJoYXBzIG90aGVyIHBhdGhzLiBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGlzIGl0IHJlYWNoYWJsZT8gWWVzLCBhcHBhcmVudGx5IHRocm91Z2ggTkZDIHNvY2tldHMuIFRoYXTigJlzIGdvb2QuIFdlIGtub3cgdGhlIGNvbW11bmljYXRpb24gcGF0aHdheSBub3cuCgpNeSBnb2FsIGhlcmUgaXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0cy4gSXMgYG5mY19sbGNwX3R4X3dvcmtgIGl0c2VsZiBhIGdvb2QgY2FuZGlkYXRlLCBvciBzaG91bGQgSSBiZSBsb29raW5nIGZvciBmdW5jdGlvbnMgdGhhdCBmZWVkIGludG8gaXQ/IEl0JiMzOTtzIG1hcmtlZCBhcyBzdGF0aWMsIHdoaWNoIGNvdWxkIGluZGljYXRlIGl04oCZcyBpbnRlcm5hbCB0byB0aGUgbW9kdWxlLCBidXQgdGhhdCYjMzk7cyBub3QgYWx3YXlzIGEgaGFyZCBiYXJyaWVyLiBMZXQgbWUgdHJhY2UgYmFjayBhbmQgc2VlIHdoYXQgYWN0dWFsbHkgcXVldWVzIHRoaXMgd29yay4gVW5kZXJzdGFuZGluZyB0aGUgcXVldWluZyBtZWNoYW5pc20gd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiBjb250cm9sIGZsb3cgYW5kIHN0YXRlIG1hbmFnZW1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3F1ZXVlX3dvcmsuKnR4X3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9kYXRhLmM9MTcxPWludCBuY2lfc2VuZF9kYXRhKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCBfX3U4IGNvbm5faWQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9uY2kvZGF0YS5jLTE5OS1cdG5kZXYtXHUwMDNlY3VyX2Nvbm5faWQgPSBjb25uX2lkO1xubmV0L25mYy9uY2kvZGF0YS5jOjIwMDpcdHF1ZXVlX3dvcmsobmRldi1cdTAwM2V0eF93cSwgXHUwMDI2bmRldi1cdTAwM2V0eF93b3JrKTtcbm5ldC9uZmMvbmNpL2RhdGEuYy0yMDEtXG4tLVxubmV0L25mYy9uY2kvbnRmLmM9NTQ9c3RhdGljIGludCBuY2lfY29yZV9jb25uX2NyZWRpdHNfbnRmX3BhY2tldChzdHJ1Y3QgbmNpX2RldiAqbmRldixcbi0tXG5uZXQvbmZjL25jaS9udGYuYy05NC1cdGlmICghc2tiX3F1ZXVlX2VtcHR5KFx1MDAyNm5kZXYtXHUwMDNldHhfcSkpXG5uZXQvbmZjL25jaS9udGYuYzo5NTpcdFx0cXVldWVfd29yayhuZGV2LVx1MDAzZXR4X3dxLCBcdTAwMjZuZGV2LVx1MDAzZXR4X3dvcmspO1xubmV0L25mYy9uY2kvbnRmLmMtOTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0OTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2VzcywgZGVsaXZlcmVkIGFzIHRob3VnaCBJJiMzOTttIHdvcmtpbmcgdGhyb3VnaCBpdCBteXNlbGY6CgoqKkxMQ1AgSW1wbGVtZW50YXRpb24gRGVlcCBEaXZlKioKCk9rYXksIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBUaGlua2luZyBhYm91dCB0aGlzIGlzc3VlLCBJIGhhdmUgYSBmZWVsaW5nIHRoZSBwcm9ibGVtIGxpZXMgd2l0aGluIHRoZSBsb3ctbGV2ZWwgY29tbXVuaWNhdGlvbi4gSSBzaG91bGQgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBjb3JlIExMQ1AgaW1wbGVtZW50YXRpb24uIEEgZ29vZCBzdGFydGluZyBwb2ludCB3b3VsZCBiZSB0aGUgYG5ldC9uZmMvbGxjcF9jb3JlLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0cmFuc21pc3Npb24gd29yayBpcyBoYW5kbGVkLiBMZXQgbWUgc2VhcmNoIGZvciB0aGUgZnVuY3Rpb24gb3IgdmFyaWFibGUgcmVsYXRlZCB0byB0aGUgdHJhbnNtaXNzaW9uIHdvcmssIHRoYXQgaXMgYHR4X3dvcmtgLiBIb3BlZnVsbHkgdGhpcyB3aWxsIGdpdmUgbWUgYSBwb2ludCB0byBiZWdpbiB1bmRlcnN0YW5kaW5nIHRoZSBkYXRhIGZsb3cgaGVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IEkgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3R4X3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3BfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9jb3JlLmM9MTYwPXN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2NC1cdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSk7XG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2NTpcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2bG9jYWwtXHUwMDNldHhfd29yayk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2Ni1cdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2bG9jYWwtXHUwMDNlcnhfd29yayk7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz03MjE9dm9pZCBuZmNfbGxjcF9zZW5kX3RvX3Jhd19zb2NrKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy03NjAtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc2MTpzdGF0aWMgdm9pZCBuZmNfbGxjcF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzYyLXtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzYzLVx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwsXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc2NDpcdFx0XHRcdFx0XHQgICAgdHhfd29yayk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTc2NS1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTQ4PXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2NS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU2NjpcdHNjaGVkdWxlX3dvcmsoXHUwMDI2bG9jYWwtXHUwMDNldHhfd29yayk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1NjctXHRrZnJlZV9za2IobG9jYWwtXHUwMDNlcnhfcGVuZGluZyk7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNjI5PXZvaWQgbmZjX2xsY3BfbWFjX2lzX3VwKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHUzMiB0YXJnZXRfaWR4LFxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY0Ni1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTY0NzpcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZsb2NhbC1cdTAwM2V0eF93b3JrKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY0OC1cdH0gZWxzZSB7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNjU2PWludCBuZmNfbGxjcF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5mY19kZXYgKm5kZXYpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjc5LVx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSk7XG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2ODA6XHRJTklUX1dPUksoXHUwMDI2bG9jYWwtXHUwMDNldHhfd29yaywgbmZjX2xsY3BfdHhfd29yayk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2ODEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MzEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqTExDUCBUcmFuc21pdCBRdWV1ZSBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIE5GQyBMTENQIGNvZGUgYW5kIHRyYWNraW5nIGhvdyB0aGUgdHJhbnNtaXQgc2lkZSBpcyBtYW5hZ2VkLiBJIHNlZSB0aGF0IGBuZmNfbGxjcF90eF93b3JrYCBnZXRzIHNjaGVkdWxlZCBpbiB0d28gcGxhY2VzOiBgbmZjX2xsY3Bfcnhfd29ya2AgYW5kIGBuZmNfbGxjcF9tYWNfaXNfdXBgLiBUaGF0IG1ha2VzIHNlbnNlOyBpbmNvbWluZyBkYXRhIG1pZ2h0IHRyaWdnZXIgYSB0cmFuc21pdCwgYW5kIHRoZSBNQUMgbGF5ZXIgY29taW5nIG9ubGluZSBjb3VsZCBhbHNvIGtpY2sgdGhpbmdzIG9mZi4gQnV0IEkmIzM5O20gbWlzc2luZyBhIGNyaXRpY2FsIHBpZWNlIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGF0KiBhY3R1YWxseSBlbnF1ZXVlcyB0aGUgU29ja2V0IEJ1ZmZlcnMgKHNrYnMpIG9udG8gYGxvY2FsLSZndDt0eF9xdWV1ZWAuIFdoZXJlIGFyZSB0aGUgdHJhbnNtaXQgcGFja2V0cyBhY3R1YWxseSAqcHV0KiBiZWZvcmUgdGhlIHdvcmsgcXVldWUgZXZlbiBnZXRzIGEgY2hhbmNlIHRvIHNlZSB0aGVtPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgcXVldWUgdG8gZmluZCB0aGUgb3JpZ2luIHBvaW50cywgdG8gZnVsbHkgZ3Jhc3AgdGhlIGZsb3cgYW5kIHBvdGVudGlhbCBzeW5jaHJvbml6YXRpb24gaXNzdWVzLiBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIG1lYXQgb2YgdGhlIHRyYW5zbWl0IGxvZ2ljIHByb2JhYmx5IHJlc2lkZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3R4X3F1ZXVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3BfY29yZS5jPTQ1PXN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9wdXJnZShzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jaylcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTQ5LVxubmV0L25mYy9sbGNwX2NvcmUuYzo1MDpcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZzb2NrLVx1MDAzZXR4X3F1ZXVlKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNTEtXHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2c29jay1cdTAwM2V0eF9wZW5kaW5nX3F1ZXVlKTtcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTU2LVx0LyogU2VhcmNoIGZvciBsb2NhbCBwZW5kaW5nIFNLQnMgdGhhdCBhcmUgcmVsYXRlZCB0byB0aGlzIHNvY2tldCAqL1xubmV0L25mYy9sbGNwX2NvcmUuYzo1NzpcdHNrYl9xdWV1ZV93YWxrX3NhZmUoXHUwMDI2bG9jYWwtXHUwMDNldHhfcXVldWUsIHMsIHRtcCkge1xubmV0L25mYy9sbGNwX2NvcmUuYy01OC1cdFx0aWYgKHMtXHUwMDNlc2sgIT0gXHUwMDI2c29jay1cdTAwM2Vzaylcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTYwLVxubmV0L25mYy9sbGNwX2NvcmUuYzo2MTpcdFx0c2tiX3VubGluayhzLCBcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTYyLVx0XHRrZnJlZV9za2Iocyk7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz02Nj1zdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTcyLVxubmV0L25mYy9sbGNwX2NvcmUuYzo3MzpcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTc0LVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTYwPXN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2My1cdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmxvY2FsLVx1MDAzZWxpbmtfdGltZXIpO1xubmV0L25mYy9sbGNwX2NvcmUuYzoxNjQ6XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2bG9jYWwtXHUwMDNldHhfcXVldWUpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNjUtXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmxvY2FsLVx1MDAzZXR4X3dvcmspO1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9MzEyPXN0YXRpYyBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm5mY19sbGNwX3JlbW92ZV9sb2NhbChzdHJ1Y3QgbmZjX2RldiAqZGV2KVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMzE4LVx0XHRpZiAobG9jYWwtXHUwMDNlZGV2ID09IGRldikge1xubmV0L25mYy9sbGNwX2NvcmUuYzozMTk6XHRcdFx0c3Bpbl9sb2NrKFx1MDAyNmxvY2FsLVx1MDAzZXR4X3F1ZXVlLmxvY2spO1xubmV0L25mYy9sbGNwX2NvcmUuYy0zMjAtXHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2VsaXN0KTtcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MzIxOlx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmxvY2FsLVx1MDAzZXR4X3F1ZXVlLmxvY2spO1xubmV0L25mYy9sbGNwX2NvcmUuYy0zMjItXHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2bGxjcF9kZXZpY2VzX2xvY2spO1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9NzYxPXN0YXRpYyB2b2lkIG5mY19sbGNwX3R4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzY4LVxubmV0L25mYy9sbGNwX2NvcmUuYzo3Njk6XHRza2IgPSBza2JfZGVxdWV1ZShcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTc3MC1cdGlmIChza2IgIT0gTlVMTCkge1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzc3LVx0XHR9IGVsc2UgaWYgKGxsY3Bfc29jayBcdTAwMjZcdTAwMjYgIWxsY3Bfc29jay1cdTAwM2VyZW1vdGVfcmVhZHkpIHtcbm5ldC9uZmMvbGxjcF9jb3JlLmM6Nzc4Olx0XHRcdHNrYl9xdWV1ZV9oZWFkKFx1MDAyNmxvY2FsLVx1MDAzZXR4X3F1ZXVlLCBza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy03NzktXHRcdFx0bmZjX2xsY3Bfc2VuZF9zeW1tKGxvY2FsLVx1MDAzZWRldik7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xMDQ1PWludCBuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jaylcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEwNTgtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjEwNTk6XHRcdHBkdSA9IHNrYl9kZXF1ZXVlKFx1MDAyNnNvY2stXHUwMDNldHhfcXVldWUpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xMDYwLVx0XHRpZiAocGR1ID09IE5VTEwpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMDY1LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxMDY2Olx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSwgcGR1KTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA2Ny1cdFx0bnJfZnJhbWVzJiM0MzsmIzQzOztcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTEwNzM9c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9oZGxjKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMTQ0LVx0XHRcdHNrYl91bmxpbmsocywgXHUwMDI2bGxjcF9zb2NrLVx1MDAzZXR4X3BlbmRpbmdfcXVldWUpO1xubmV0L25mYy9sbGNwX2NvcmUuYzoxMTQ1Olx0XHRcdHNrYl9xdWV1ZV9oZWFkKFx1MDAyNmxvY2FsLVx1MDAzZXR4X3F1ZXVlLCBzKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTE0Ni1cdFx0fVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTY1Nj1pbnQgbmZjX2xsY3BfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuZmNfZGV2ICpuZGV2KVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY3OC1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTY3OTpcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2bG9jYWwtXHUwMDNldHhfcXVldWUpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNjgwLVx0SU5JVF9XT1JLKFx1MDAyNmxvY2FsLVx1MDAzZXR4X3dvcmssIG5mY19sbGNwX3R4X3dvcmspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTYwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2Ygd2hhdCYjMzk7cyBnb2luZyBvbjoKCioqUXVldWluZyBJLUZyYW1lcyBpbiB0aGUgTkZDIExMQ1AgTGF5ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBJLWZyYW1lcyBhcmUgaGFuZGxlZCBpbiB0aGUgTkZDIExMQ1AgbGF5ZXIuIFRoZSBjb3JlIGZ1bmN0aW9uIGhlcmUsIGl0IHNlZW1zLCBpcyBgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXNgLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiYjMzk7cyBqb2IgaXMgdG8gdGFrZSB0aGVzZSBJLWZyYW1lcyBhbmQgcHV0IHRoZW0gaW4gdGhlIGBsb2NhbC0mZ3Q7dHhfcXVldWVgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyB0aGUgbmF0dXJhbCB3YXkgdG8gbWFuYWdlIG91dGJvdW5kIGZyYW1lcy4gVG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIHF1ZXVpbmcgaGFwcGVucywgYW5kIHRvIGxvb2sgZm9yIHBvdGVudGlhbCBpc3N1ZXMgb3Igb3B0aW1pemF0aW9ucywgSSYjMzk7bGwgbmVlZCB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gYW5kIGltcGxlbWVudGF0aW9uIG9mIGBuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lc2Agd2l0aGluIGBuZXQvbmZjL2xsY3BfY29yZS5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgYW5kIHdoZXJlIEkgY2FuIGdhaW4gYSByZWFsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHRyYW5zbWlzc2lvbiBwcm9jZXNzLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgZnJhbWVzIGFyZSBhZGRlZCB0byB0aGUgcXVldWUsIGFuZCB3aGF0IGNvbmN1cnJlbmN5IG1lY2hhbmlzbXMsIGlmIGFueSwgYXJlIGluIHBsYWNlIHRvIG1hbmFnZSBhY2Nlc3MgdG8gdGhlIHF1ZXVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcC5oPTIwOD12b2lkIG5mY19sbGNwX3B1dF9zc2FwKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHU4IHNzYXApO1xubmV0L25mYy9sbGNwLmg6MjA5OmludCBuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jayk7XG5uZXQvbmZjL2xsY3AuaC0yMTAtdm9pZCBuZmNfbGxjcF9zZW5kX3RvX3Jhd19zb2NrKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM9NjYwPWludCBuZmNfbGxjcF9zZW5kX2lfZnJhbWUoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2ssXG4tLVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmMtNzI5LVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM6NzMwOlx0XHRuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhzb2NrKTtcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jLTczMS1cbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTkxND1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2Nvbm5lY3Qoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEwNDQtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjEwNDU6aW50IG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMDQ2LXtcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTEwNzM9c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9oZGxjKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMTUzLVxubmV0L25mYy9sbGNwX2NvcmUuYzoxMTU0Olx0aWYgKG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKGxsY3Bfc29jaykgPT0gMCBcdTAwMjZcdTAwMjYgcHR5cGUgPT0gTExDUF9QRFVfSSlcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTE1NS1cdFx0bmZjX2xsY3Bfc2VuZF9ycihsbGNwX3NvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDA2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gTExDUCBGcmFtZSBUcmFuc21pc3Npb24qKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRocm91Z2ggdGhpcyBORkMgY29kZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgdGhlIGxvdy1sZXZlbCBjb21tdW5pY2F0aW9uIHByb3RvY29sIChMTENQKS4gSSBzZWUgdGhhdCBgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lYCBpbiBgbmV0L25mYy9sbGNwX2NvbW1hbmRzLmNgIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3Igc2VuZGluZyBJLWZyYW1lcy4gTWFrZXMgc2Vuc2UuIEJ1dCB3aGVyZSBkb2VzIHRoZSBmcmFtZSBnZXQgKnF1ZXVlZCogZm9yIHNlbmRpbmc/IFRoZSBjb2RlIHRlbGxzIG1lIGl0IGNhbGxzIGBuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lc2AuIEFscmlnaHQsIHNvIHRoYXQmIzM5O3MgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBOb3csIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG5mY19sbGNwX3NlbmRfaV9mcmFtZWAgaXRzZWxmIGFuZCBzZWUgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgdGhlIHNlbmQsIHdoYXQgZGF0YSBpcyBwYXNzZWQsIGFuZCB3aGF0IHByZXBhcmF0b3J5IHN0ZXBzIGFyZSBpbnZvbHZlZCBiZWZvcmUgcXVldWluZyB0aGUgZnJhbWUuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgYW5kIHdpbmRvd2luZyBsb2dpYyB3aWxsIGJlIGhhbmRsZWQsIHdoaWNoIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfbGxjcF9zZW5kX2lfZnJhbWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3AuaD0yNDM9aW50IG5mY19sbGNwX3NlbmRfZGlzY29ubmVjdChzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jayk7XG5uZXQvbmZjL2xsY3AuaDoyNDQ6aW50IG5mY19sbGNwX3NlbmRfaV9mcmFtZShzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jayxcbm5ldC9uZmMvbGxjcC5oLTI0NS1cdFx0XHQgIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbik7XG4tLVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM9NjI3PWludCBuZmNfbGxjcF9zZW5kX2RtKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHU4IHNzYXAsIHU4IGRzYXAsIHU4IHJlYXNvbilcbi0tXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy02NTktXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYzo2NjA6aW50IG5mY19sbGNwX3NlbmRfaV9mcmFtZShzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jayxcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jLTY2MS1cdFx0XHQgIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTc4NT1zdGF0aWMgaW50IGxsY3Bfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTgzNC1cbm5ldC9uZmMvbGxjcF9zb2NrLmM6ODM1Olx0cmV0dXJuIG5mY19sbGNwX3NlbmRfaV9mcmFtZShsbGNwX3NvY2ssIG1zZywgbGVuKTtcbm5ldC9uZmMvbGxjcF9zb2NrLmMtODM2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY5OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogTExDUCBTb2NrZXQgU2VuZCBPcGVyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyYWNpbmcgaG93IHRoaXMgY29kZSBpcyByZWFjaGVkLiBgbGxjcF9zb2NrX3NlbmRtc2dgIGNhbGxzIGBuZmNfbGxjcF9zZW5kX2lfZnJhbWVgLCBhbmQgdGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgc2VuZCBvcGVyYXRpb24gb3ZlciB0aGUgc29ja2V0LiBUaGlzIG1lYW5zIHRoYXQgdXNlcnNwYWNlIGNvZGUgY2FuIHJlYWNoIHRoaXMgbG9naWMgdGhyb3VnaCBzdGFuZGFyZCBzb2NrZXQgb3BlcmF0aW9ucywgd2hpY2ggaXMgaW1wb3J0YW50IGZvciBmdXp6aW5nLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYHNrYl9zZXRfb3duZXJfd2Ag4oCTIHRoYXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gcGF5IGF0dGVudGlvbiB0by4gVGhlIHJlbGV2YW50IGNvbmZpZyBoZXJlIGlzIGBORkNgLgoKVGhlIHF1ZXN0aW9uIG5vdyBpcywgd2hhdCBhcmUgdGhlIGJlc3QgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nPyBgbGxjcF9zb2NrX3NlbmRtc2dgIGxvb2tzIGxpa2UgYSBzdHJvbmcgY2FuZGlkYXRlIGJlY2F1c2UgaXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IGZyb20gdGhlIHNvY2tldCBsYXllci4gSSBzaG91bGQgYWxzbyBjb25zaWRlciBgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lYCBkaXJlY3RseSwgdGhhdCYjMzk7cyB3aGVyZSB0aGUgYWN0dWFsIGZyYW1lIHRyYW5zbWlzc2lvbiBoYXBwZW5zLiBXYWl0LCBJIGFsbW9zdCBmb3Jnb3QsIGBuZmNfbGxjcF90eF93b3JrYC4uLiBidXQgdGhhdCYjMzk7cyBtYXJrZWQgc3RhdGljLCByaWdodD8gWWVzLCBzbyB0aGF0JiMzOTtzIHByb2JhYmx5IG5vdCBhIGdvb2QgZnV6emluZyB0YXJnZXQgc2luY2UgaXQgY2FuJiMzOTt0IGJlIGNhbGxlZCBkaXJlY3RseS4gYG5mY19sbGNwX3NlbmRfaV9mcmFtZWAgaXMgbm9uLXN0YXRpYyB0aG91Z2gsIHNvIHRoYXQmIzM5O3MgZ29vZC4KClNvLCBsZXQmIzM5O3MgY2lyY2xlIGJhY2suIGBsbGNwX3NvY2tfc2VuZG1zZ2AgYW5kIGBuZmNfbGxjcF9zZW5kX2lfZnJhbWVgIGFyZSB0aGUga2V5IGFyZWFzLiBJIG5lZWQgdG8gZGlnIGludG8gYGxsY3Bfc29ja19zZW5kbXNnYCBhbmQgc2VlIHdoYXQmIzM5O3MgcmVhbGx5IGhhcHBlbmluZyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGxjcF9zb2NrX3NlbmRtc2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3Bfc29jay5jPTY2MT1zdGF0aWMgaW50IGxsY3Bfc29ja19jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICpfYWRkcixcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTc4NC1cbm5ldC9uZmMvbGxjcF9zb2NrLmM6Nzg1OnN0YXRpYyBpbnQgbGxjcF9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxubmV0L25mYy9sbGNwX3NvY2suYy03ODYtXHRcdFx0ICAgICBzaXplX3QgbGVuKVxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmM9OTI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGxsY3Bfc29ja19vcHMgPSB7XG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy05NDEtXHQuZ2V0c29ja29wdCAgICAgPSBuZmNfbGxjcF9nZXRzb2Nrb3B0LFxubmV0L25mYy9sbGNwX3NvY2suYzo5NDI6XHQuc2VuZG1zZyAgICAgICAgPSBsbGNwX3NvY2tfc2VuZG1zZyxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTQzLVx0LnJlY3Ztc2cgICAgICAgID0gbGxjcF9zb2NrX3JlY3Ztc2csXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTM4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIExMQ1AgRnJhbWUgVHJhbnNtaXNzaW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgTExDUCBmcmFtZSB0cmFuc21pc3Npb24gY29kZS4gVGhlIGZ1bmN0aW9uIGBsbGNwX3NvY2tfc2VuZG1zZ2AgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIG1ha2VzIGl0IGEgYml0IHRyaWNreSwgYmVjYXVzZSBpdCBjb3VsZCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgb3IgaXQgbWF5IG5vdCBldmVuIGhhdmUgYSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MuIFRoaXMgbWFrZXMgZGlyZWN0IGFuYWx5c2lzIGRpZmZpY3VsdC4KCkhvd2V2ZXIsIGBuZmNfbGxjcF9zZW5kX2lfZnJhbWVgIGlzIGRlY2xhcmVkIGFzIG5vbi1zdGF0aWMuIFRoaXMgaXMgbXVjaCBtb3JlIHByb21pc2luZy4gSSYjMzk7bGwgZm9jdXMgbXkgYXR0ZW50aW9uIHRoZXJlIGFuZCBzZWUgd2hhdCBpbnNpZ2h0cyBJIGNhbiBnbGVhbiBmcm9tIHRoaXMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mY19sbGNwX3NlbmRfaV9mcmFtZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9jb21tYW5kcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9jb21tYW5kcy5jPTYyNz1pbnQgbmZjX2xsY3Bfc2VuZF9kbShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCB1OCBzc2FwLCB1OCBkc2FwLCB1OCByZWFzb24pXG4tLVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmMtNjU5LVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM6NjYwOmludCBuZmNfbGxjcF9zZW5kX2lfZnJhbWUoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2ssXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy02NjEtXHRcdFx0ICBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTIxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipJbnRlcm5hbCBSZXZpZXcgb2YgTkZDIExMQ1AgRnJhbWUgVHJhbnNtaXNzaW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIHdoYXQgYW0gSSB0aGlua2luZyBhYm91dCBoZXJlPyAqbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lKiBpc24mIzM5O3QgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIHF1ZXN0aW9uIGluIG15IG1pbmQgYWJvdXQgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgZm9yIGNvbmN1cnJlbmN5IGlzc3Vlcy4gVGhlbiwgdGhhdCBuYXR1cmFsbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgKm5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKi4gQXJlIHRoZXNlIHR3byByZWxhdGVkPyBJcyB0aGUgcXVldWluZyBtZWNoYW5pc20gdGhyZWFkLXNhZmUgb3IgaXMgaXQgc29tZWhvdyBsaW5rZWQ/IFBlcmhhcHMgdGhlcmUmIzM5O3MgYSBkZXNpZ24gZGVjaXNpb24gSSBuZWVkIHRvIHJldmlldy4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBub24tc3RhdGljIG5hdHVyZSBvZiB0aGUgc2VuZGluZyBmdW5jdGlvbiBpcyBoYW5kbGVkIGNvcnJlY3RseSBpZiBtdWx0aXBsZSB0aHJlYWRzIGNvdWxkIGJlIGNhbGxpbmcgaXQuIEl0IHNvdW5kcyBsaWtlIHRoZXJlIGNvdWxkIGJlIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX2NvcmUuYz05MTQ9c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9jb25uZWN0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMDQ0LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxMDQ1OmludCBuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jaylcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA0Ni17XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xMDczPXN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfaGRsYyhzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTE1My1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTE1NDpcdGlmIChuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhsbGNwX3NvY2spID09IDAgXHUwMDI2XHUwMDI2IHB0eXBlID09IExMQ1BfUERVX0kpXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTUtXHRcdG5mY19sbGNwX3NlbmRfcnIobGxjcF9zb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NTcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgUmVhc29uaW5nIG9uIEFQSSBFbnRyeXBvaW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXNgIGZ1bmN0aW9uLiBJdCYjMzk7cyAqbm90KiBzdGF0aWMsIHdoaWNoIGlzIGdvb2QuIFRoYXQmIzM5O3MgdGhlIGZpcnN0IGNoZWNrLiBXaGF0IGFib3V0IGBuZmNfbGxjcF90eF93b3JrYCB0aG91Z2g/IEhtbSwgaXQgKmlzKiBzdGF0aWMsIGJ1dCB0aGVuIEkgcmVtZW1iZXIgaXQmIzM5O3MgYSB3b3JrcXVldWUgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0JiMzOTtzIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgdG8gYElOSVRfV09SS2AuIFRoYXQgbWVhbnMgdGhlIGNvbXBpbGVyIGFsbW9zdCBjZXJ0YWlubHkgKndvbiYjMzk7dCogaW5saW5lIGl0LCBzbyBpdCB3aWxsIGhhdmUgaXRzIG93biBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCYjMzk7cyB3aGF0IHRoZSBwcm9tcHQgd2FudGVkLCBhdm9pZGluZyBpbmxpbmVkIGZ1bmN0aW9ucyEKClNvIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHdhbnRzIG1lIHRvIGNob29zZSBub24tc3RhdGljLCAqbm9uLWlubGluZWQqIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMuIFNpbmNlIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaXQsIGV2ZW4gdGhvdWdoIGBuZmNfbGxjcF90eF93b3JrYCBpcyBzdGF0aWMsIGJlY2F1c2UgaXQmIzM5O3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQmIzM5O3MgYSBnb29kIGVudHJ5IHBvaW50LiBCdXQgYG5mY19sbGNwX3NlbmRfaV9mcmFtZWAgbG9va3MgZXZlbiBiZXR0ZXIsIGFuZCBpdCAqaXMqIG5vbi1zdGF0aWMsIHNvIGxldCYjMzk7cyBzdGljayB3aXRoIHRoYXQuCgpOb3csIGxldCYjMzk7cyBzZWUgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24uIElzIGp1c3QgYE5GQ2AgZW5hYmxlZD8gTGV0JiMzOTtzIGNoZWNrLiBgTkZDYCBkZXBlbmRzIG9uIGBSRktJTEwgfHwgIVJGS0lMTGAuIFRoYXQmIzM5O3MgYSBiaXQgb2RkLi4uIEFoLCB3YWl0LiBgTkZDYCBpcyBgdHJpc3RhdGUgJiMzNDtORkMgc3Vic3lzdGVtIHN1cHBvcnQmIzM0O2AuIE9rYXksIHRoYXQgbWFrZXMgbW9yZSBzZW5zZS4gQXJlIHRoZXJlIGFueSBvdGhlciBjb25maWcgb3B0aW9ucyB0aGF0IGFyZSBuZWVkZWQ/IExpa2UsIGBORkNfTkNJYCBvciBgTkZDX0hDSWA/CgpUaGUgcGF0Y2ggaXMgaW4gYG5ldC9uZmMvbGxjcF9jb3JlLmNgLCBzbyBpdCBzaG91bGQgYmUgd2l0aGluIGBsbGNwX2NvcmUub2AuIFRoYXQgZmlsZSBnZXRzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19ORkNgIGlzIGVuYWJsZWQsIHdoaWNoIGFsbCBzZWVtcyB0byBiZSB0aGUgY2FzZSwgc28gbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgYG5ldC9uZmMvTWFrZWZpbGVgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IE5GQyBzdWJzeXN0ZW0uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG9iai0kKENPTkZJR19ORkMpICYjNDM7PSBuZmMub1xuICAgNzpcdG9iai0kKENPTkZJR19ORkNfTkNJKSAmIzQzOz0gbmNpL1xuICAgODpcdG9iai0kKENPTkZJR19ORkNfSENJKSAmIzQzOz0gaGNpL1xuICAgOTpcdG9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgJiM0Mzs9IG5mY19kaWdpdGFsLm9cbiAgMTA6XHRcbiAgMTE6XHRuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcbiAgMTI6XHRcdFx0bGxjcF9zb2NrLm9cbiAgMTM6XHRcbiAgMTQ6XHRuZmNfZGlnaXRhbC1vYmpzIDo9IGRpZ2l0YWxfY29yZS5vIGRpZ2l0YWxfdGVjaG5vbG9neS5vIGRpZ2l0YWxfZGVwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0MzYKCQkJCQkJCW91dHB1dDogMTI2CgkJCQkJCQl0aG91Z2h0czogMjc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBORkMgTExDUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgQ09ORklHX05GQ2AgaXMgaW5kZWVkIGVub3VnaCB0byBidWlsZCBgbGxjcF9jb3JlLmNgLiBMZXQmIzM5O3MgYnJlYWsgZG93biBteSB0aGlua2luZzoKClRoZSBpbml0aWFsIGFzc2Vzc21lbnQgZmxhZ3MgdGhpcyBhcyBXb3J0aEZ1enppbmcsIGFuZCB0aGUgcHJpbWFyeSBmb2N1cyBmYWxscyBvbiBgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lYCwgYG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzYCwgYW5kIGBuZmNfbGxjcF90eF93b3JrYC4gVGhlIG9ubHkgZW5hYmxpbmcgY29uZmlnIGlzIGBORkNgLiBUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiB0aGlzIHBhdGNoIGFsdGVycyB0aGUgZnVuY3Rpb24gYG5mY19sbGNwX3R4X3dvcmtgLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGFuIHNrYiYjMzk7cyBvd25lciBpcyBzZXQgYWZ0ZXIgaXQmIzM5O3MgY29waWVkLiBUaGlzIGRpcmVjdGx5IGltcGFjdHMgc29ja2V0IGFjY291bnRpbmcsIGFuZCB0aGF0IGNvZGUgKmlzKiByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIE5GQyBzb2NrZXQgb3BlcmF0aW9ucy4KCkhvd2V2ZXIsIEkgcGF1c2VkIGhlcmUuIGBuZmNfbGxjcF90eF93b3JrYCBpcyBkZWNsYXJlZCBhcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCYjMzk7cyBhIHBvaW50IHRvIGNvbnNpZGVyLiBXaGlsZSBub3QgbmVjZXNzYXJpbHkgZGlzcXVhbGlmeWluZyBpdCwgaXQmIzM5O3MgZ2VuZXJhbGx5IGJlc3QgdG8gcHJvdmlkZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBpZiBhdmFpbGFibGUuIGBuZmNfbGxjcF9zZW5kX2lfZnJhbWVgIGFuZCBgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXNgIGFyZSBkZWZpbml0ZWx5IGdvb2QgY2hvaWNlcy4gSSYjMzk7bSBnb2luZyB0byBpbmNsdWRlIGBuZmNfbGxjcF90eF93b3JrYCBhcyB3ZWxsLCBzaW5jZSBpdCYjMzk7cyB0aGUgZnVuY3Rpb24gKmRpcmVjdGx5KiBtb2RpZmllZCBieSB0aGUgcGF0Y2ggYW5kIGl0JiMzOTtzIGEgd29ya3F1ZXVlIGhhbmRsZXIsIG1ha2luZyBpbmxpbmluZyBsZXNzIGxpa2VseS4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIGNhcHR1cmUgdGhlIGFsdGVyZWQgbG9naWMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBxdWlja2x5IGRvdWJsZS1jaGVja2VkIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gQW5kIHllcywgYE5GQ2AgaXMgYWxsIHRoYXQmIzM5O3MgcmVxdWlyZWQuCgpJJiMzOTttIGNvbmZpZGVudCBpbiB0aGlzIGV2YWx1YXRpb24sIHNvIEkmIzM5O20gY2FsbGluZyBzZXQtcmVzdWx0cyBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZmNfbGxjcF9zZW5kX2lfZnJhbWUmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfcXVldWVfaV9mcmFtZXMmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfdHhfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbmZjX2xsY3BfdHhfd29ya2AgdG8gc2V0IHRoZSBzb2NrZXQgb3duZXIgb2YgYSBjb3BpZWQgc2tiLCB3aGljaCBhZmZlY3RzIHNvY2tldCBtZW1vcnkgYWNjb3VudGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBORkMgTExDUCBjb3JlLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIE5GQyBzb2NrZXQgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZjX2xsY3Bfc2VuZF9pX2ZyYW1lJiMzNDssCiAgICAmIzM0O25mY19sbGNwX3F1ZXVlX2lfZnJhbWVzJiMzNDssCiAgICAmIzM0O25mY19sbGNwX3R4X3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiwgd2hpY2ggYWZmZWN0cyBzb2NrZXQgbWVtb3J5IGFjY291bnRpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTkZDIExMQ1AgY29yZSwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBORkMgc29ja2V0IG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiB1c2luZyBgc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzaylgLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgc29ja2V0IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50cyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gc29ja2V0IGRlc3RydWN0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3IgbWVtb3J5IGxlYWsgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTYyNGY2MDZjOGNmNjVhZGMwZDNjYWE4YmE0NWU4ZGFlODIwYjFjMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDIxIDE1OjE1OjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX2NvcmUuYyBiL25ldC9uZmMvbGxjcF9jb3JlLmMKaW5kZXggY2FjMWI1NDg3MDY0ZC4uNDljYjYzMjI2OGMwYyAxMDA2NDQKLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL2xsY3BfY29yZS5jCkBAIC03ODYsOCAmIzQzOzc4NiwxMSBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJCXByaW50X2hleF9kdW1wX2RlYnVnKCYjMzQ7TExDUCBUeDogJiMzNDssIERVTVBfUFJFRklYX09GRlNFVCwKIAkJCQkJICAgICAxNiwgMSwgc2tiLSZndDtkYXRhLCBza2ItJmd0O2xlbiwgdHJ1ZSk7CiAKLQkJCWlmIChwdHlwZSA9PSBMTENQX1BEVV9JKQomIzQzOwkJCWlmIChwdHlwZSA9PSBMTENQX1BEVV9JKSB7CiAJCQkJY29weV9za2IgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpOwomIzQzOwkJCQlpZiAoY29weV9za2IpCiYjNDM7CQkJCQlza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKTsKJiM0MzsJCQl9CiAKIAkJCV9fbmV0X3RpbWVzdGFtcChza2IpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDUxCgkJCQkJCQlvdXRwdXQ6IDE2MQoJCQkJCQkJdGhvdWdodHM6IDM0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBMTENQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBuZmNfbGxjcF90eF93b3JrYCBpbiBgbmV0L25mYy9sbGNwX2NvcmUuY2AuIEl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0JiMzOTtzIGFkZGluZyBgc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzayk7YCBhZnRlciBhIHN1Y2Nlc3NmdWwgYHNrYl9jb3B5YCBvZiB0aGUgYHNrYmAgKHNvY2tldCBidWZmZXIpLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhpcyBzZWVtZWQgbGlrZSBpdCB3YXMgcmVsYXRlZCB0byBzb2NrZXQgYWNjb3VudGluZyBhbmQgbWVtb3J5IHRyYWNraW5nLCBub3QsIGNydWNpYWxseSwgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIEkgZGlkIGEgcXVpY2sgZG91YmxlLWNoZWNrIG9mIHRoZSBjb2RlIHNuaXBwZXQganVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmU6CgpgYGBjCi0JCQlpZiAocHR5cGUgPT0gTExDUF9QRFVfSSkKJiM0MzsJCQlpZiAocHR5cGUgPT0gTExDUF9QRFVfSSkgewogCQkJCWNvcHlfc2tiID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTsKJiM0MzsJCQkJaWYgKGNvcHlfc2tiKQomIzQzOwkJCQkJc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzayk7CiYjNDM7CQkJfQpgYGAKClllcCwgaXQmIzM5O3MgZGVmaW5pdGVseSBhYm91dCBmaXhpbmcgYSBtZW1vcnkgYWNjb3VudGluZyBwcm9ibGVtLCBvciBwb3NzaWJseSBhIHVzZS1hZnRlci1mcmVlL21lbW9yeSBsZWFrIHJlbGF0ZWQgdG8gaG93IHRoZSBza2Igb3duZXJzaGlwIGlzIGhhbmRsZWQgYWZ0ZXIgdGhlIGNvcHkuIEl0JiMzOTtzIG5vdCBpbnRyb2R1Y2luZyBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgYW5kIGRlZmluaXRlbHkgbm8gaW5mby1sZWFrcywgc28gSSBjYW4gcHV0IHRob3NlIGNvbmNlcm5zIGFzaWRlLiBJZiB0aGVyZSAqd2VyZSogbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlcywgS0FTQU4sIEtNRU1MRUFLLCBvciB0aGUgc3RhbmRhcmQgdG9vbHMgd291bGQgY2F0Y2ggdGhlbSwgYnV0IEtNU0FOIGlzIHdoYXQgd2UgbmVlZCB0byB3b3JyeSBhYm91dCB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LgoKTG9va2luZyBhdCB0aGUgY29kZSBhZ2FpbiwgSSYjMzk7bSBjb21mb3J0YWJsZSB0aGF0IGBza2JfY29weWAgY3JlYXRlcyBhICpjb3B5KiBvZiB0aGUgZGF0YSwgYW5kIHRoZW4gYHNrYl9zZXRfb3duZXJfd2Agc2V0cyB0aGUgc29ja2V0IG93bmVyIGZvciB3cml0ZSBhY2NvdW50aW5nIHB1cnBvc2VzIG9uIHRoZSBjb3B5LiBUaGVyZSYjMzk7cyBqdXN0IG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGludm9sdmVkIGhlcmUuIEl0JiMzOTtzIHNhZmUgdG8gc2F5IHRoZXJlJiMzOTtzIG5vIHJlYXNvbiB0byBmbGFnIHRoaXMgZm9yIEtNU0FOLiBJJiMzOTttIGdvaW5nIHRvIGdvIGFoZWFkIGFuZCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGFuZCBtb3ZlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbmZjX2xsY3BfdHhfd29ya2AgdG8gc2V0IHRoZSBzb2NrZXQgb3duZXIgb2YgYSBjb3BpZWQgc2tiIHVzaW5nIGBza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKWAuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBzb2NrZXQgbWVtb3J5IGFjY291bnRpbmcgYW5kIHBvdGVudGlhbGx5IHByZXZlbnRzIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byBzb2NrZXQgZGVzdHJ1Y3Rpb24uIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IGJvdW5kcyBjaGVja2luZywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgbWVtb3J5IGNvcnJ1cHRpb24sIHVzZS1hZnRlci1mcmVlLCBvciBtZW1vcnkgbGVhayBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtNRU1MRUFLLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiB1c2luZyBgc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzaylgLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgc29ja2V0IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50cyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gc29ja2V0IGRlc3RydWN0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3IgbWVtb3J5IGxlYWsgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTU6NTMuODE0NTk0ODgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgxMDU5ODA1NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZjX2xsY3Bfc2VuZF9pX2ZyYW1lXCIsXG4gICAgXCJuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lc1wiLFxuICAgIFwibmZjX2xsY3BfdHhfd29ya1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiB1c2luZyBgc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzaylgLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgc29ja2V0IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50cyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gc29ja2V0IGRlc3RydWN0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3IgbWVtb3J5IGxlYWsgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZjX2xsY3BfdHhfd29ya2AgdG8gc2V0IHRoZSBzb2NrZXQgb3duZXIgb2YgYSBjb3BpZWQgc2tiLCB3aGljaCBhZmZlY3RzIHNvY2tldCBtZW1vcnkgYWNjb3VudGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBORkMgTExDUCBjb3JlLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIE5GQyBzb2NrZXQgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTU6NTMuODE0NjAyMjQyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTk1Njg2NDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTYyNGY2MDZjOGNmNjVhZGMwZDNjYWE4YmE0NWU4ZGFlODIwYjFjMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxNToxNTo1MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xcbmluZGV4IGNhYzFiNTQ4NzA2NGQuLjQ5Y2I2MzIyNjhjMGMgMTAwNjQ0XFxuLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuY1xcbisrKyBiL25ldC9uZmMvbGxjcF9jb3JlLmNcXG5AQCAtNzg2LDggKzc4NiwxMSBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0XFx0XFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXFxcIkxMQ1AgVHg6IFxcXCIsIERVTVBfUFJFRklYX09GRlNFVCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAxNiwgMSwgc2tiLVxcdTAwM2VkYXRhLCBza2ItXFx1MDAzZWxlbiwgdHJ1ZSk7XFxuIFxcbi1cXHRcXHRcXHRpZiAocHR5cGUgPT0gTExDUF9QRFVfSSlcXG4rXFx0XFx0XFx0aWYgKHB0eXBlID09IExMQ1BfUERVX0kpIHtcXG4gXFx0XFx0XFx0XFx0Y29weV9za2IgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpO1xcbitcXHRcXHRcXHRcXHRpZiAoY29weV9za2IpXFxuK1xcdFxcdFxcdFxcdFxcdHNrYl9zZXRfb3duZXJfdyhjb3B5X3NrYiwgc2spO1xcbitcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRfX25ldF90aW1lc3RhbXAoc2tiKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE1OjU1LjQxMTIyMTQyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Njg1NTczMDE0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZjX2xsY3Bfc2VuZF9pX2ZyYW1lXCIsXG4gICAgXCJuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lc1wiLFxuICAgIFwibmZjX2xsY3BfdHhfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBuZmNfbGxjcF90eF93b3JrYCB0byBzZXQgdGhlIHNvY2tldCBvd25lciBvZiBhIGNvcGllZCBza2IsIHdoaWNoIGFmZmVjdHMgc29ja2V0IG1lbW9yeSBhY2NvdW50aW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE5GQyBMTENQIGNvcmUsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgTkZDIHNvY2tldCBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNjI0ZjYwNmM4Y2Y2NWFkYzBkM2NhYThiYTQ1ZThkYWU4MjBiMWMxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjEgMTU6MTU6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuaW5kZXggY2FjMWI1NDg3MDY0ZC4uNDljYjYzMjI2OGMwYyAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmNcbisrKyBiL25ldC9uZmMvbGxjcF9jb3JlLmNcbkBAIC03ODYsOCArNzg2LDExIEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3R4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdHByaW50X2hleF9kdW1wX2RlYnVnKFwiTExDUCBUeDogXCIsIERVTVBfUFJFRklYX09GRlNFVCxcbiBcdFx0XHRcdFx0ICAgICAxNiwgMSwgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4sIHRydWUpO1xuIFxuLVx0XHRcdGlmIChwdHlwZSA9PSBMTENQX1BEVV9JKVxuK1x0XHRcdGlmIChwdHlwZSA9PSBMTENQX1BEVV9JKSB7XG4gXHRcdFx0XHRjb3B5X3NrYiA9IHNrYl9jb3B5KHNrYiwgR0ZQX0FUT01JQyk7XG4rXHRcdFx0XHRpZiAoY29weV9za2IpXG4rXHRcdFx0XHRcdHNrYl9zZXRfb3duZXJfdyhjb3B5X3NrYiwgc2spO1xuK1x0XHRcdH1cbiBcbiBcdFx0XHRfX25ldF90aW1lc3RhbXAoc2tiKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE1OjU1LjQxMTIyMzgzMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3OTA1NjQzMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBORkMgTExDUCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHRoZSBrZXkgZmlsZSBiZWluZyBtb2RpZmllZCBpcyBgbmV0L25mYy9sbGNwX2NvcmUuY2AuIERpdmluZyBkZWVwZXIsIHRoZSBwYXRjaCB6ZXJvZXMgaW4gb24gY2hhbmdlcyB3aXRoaW4gdGhlIGBuZmNfbGxjcF90eF93b3JrYCBmdW5jdGlvbi4gVGhlIGNydWNpYWwgYWRkaXRpb24gc2VlbXMgdG8gYmUgdGhpcyBsaW5lOiBgaWYgKGNvcHlfc2tiKSBza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKTtgIHdoZW4gY29weWluZyBhbiBgc2tiYC5cblxuTm93LCB0aGF0IGBza2Jfc2V0X293bmVyX3dgIGNhbGwgaXMgd2hhdCByZWFsbHkgcGlxdWVzIG15IGludGVyZXN0LiBJdCBpbXBsaWVzIHNvbWUgb3duZXJzaGlwIG1hbmFnZW1lbnQgaXMgYmVpbmcgdHdlYWtlZCB3aGVuIGhhbmRsaW5nIFNlbmQgU0tCcyB3aXRoaW4gdGhlIE5GQyBMTENQIHN0YWNrLiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgYWRkZWQgb3duZXJzaGlwIHNldHRpbmcuIFdlIG5lZWQgdG8gZ28gYmFjayBpbnRvIGBuZmNfbGxjcF90eF93b3JrYCBhbmQgc2VlIHRoZSBjb21wbGV0ZSBwaWN0dXJlIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIG9uIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBsb29raW5nIGF0IGhvdyB0aGUgYHNrYmAgaXMgdXNlZCBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgYWRkaXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYGNvcHlfc2tiYCB2YXJpYWJsZSBpcyBiZWluZyBoYW5kbGVkIGFuZCB3aGF0IGtpbmQgb2YgU0tCIGlzIGJlaW5nIGhhbmRsZWQgd2l0aCBgY29weV9za2JgLiBJIGFtIHdvbmRlcmluZyBpZiB0aGUgYWRkaXRpb24gaGVyZSBpcyB0byBmaXggc29tZSBraW5kIG9mIHJlc291cmNlIGxlYWsgaXNzdWUuIFRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2UgaXMgdml0YWwuIEkgbmVlZCB0byBzZWUgd2hhdCBlbHNlIGhhcyBiZWVuIG1vZGlmaWVkIGFuZCBjb21wYXJlIHdpdGggdGhlIG9sZGVyIHZlcnNpb24gb2YgdGhlIGNvZGUuIElzIHRoaXMgYSBidWcgZml4LCBvcHRpbWl6YXRpb24sIG9yIGEgZnVuY3Rpb25hbCBjaGFuZ2U/IFdlIHNob3VsZCBhbHNvIGNoZWNrIG90aGVyIGNvbW1pdHMgaW4gdGhlIHNhbWUgcmFuZ2Ugb2YgdGltZSBhcyB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1NCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjAwLjIwMTc5MTIxNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzg3OTMyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZmNfbGxjcF90eF93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvbGxjcF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9sbGNwX2NvcmUuYz03MjE9dm9pZCBuZmNfbGxjcF9zZW5kX3RvX3Jhd19zb2NrKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc2MC1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc2MTpzdGF0aWMgdm9pZCBuZmNfbGxjcF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc2Mi17XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE2NTY9aW50IG5mY19sbGNwX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqbmRldilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY3OS1cXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTY4MDpcXHRJTklUX1dPUksoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF93b3JrLCBuZmNfbGxjcF90eF93b3JrKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2ODEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjAwLjI3OTY3NDU0NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NTc5ODk2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogTkZDIExMQ1AgYW5kIFNLQiBPd25lcnNoaXAqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIG1ha2luZyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBgbmZjX2xsY3BfdHhfd29ya2AuIFRoZSBrZXkgbGluZSB0aGF0IGp1bXBzIG91dCBpcyB0aGUgYWRkaXRpb24gb2YgYHNrYl9zZXRfb3duZXJfdyhjb3B5X3NrYiwgc2spYC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIHdlJ3JlIGVzc2VudGlhbGx5IHRha2luZyBvd25lcnNoaXAgb2YgYSBjb3BpZWQgU0tCLCBhbmQgdGhhdCBoYXMgZGlyZWN0IGltcGxpY2F0aW9ucyBmb3IgdGhlIHdheSB3ZSBoYW5kbGUgc29ja2V0IGFjY291bnRpbmcgYW5kIG92ZXJhbGwgbWVtb3J5IHRyYWNraW5nIHdpdGhpbiB0aGUgc3lzdGVtLlxuXG5UaGlzIGlzbid0IGp1c3QgY29zbWV0aWM7IGl0J3MgYSByZWFsIGZ1bmN0aW9uYWwgc2hpZnQuIEl0J3MgdGVsbGluZyBtZSB0byBwYXkgYXR0ZW50aW9uIHRvIGhvdyB0aGlzIGltcGFjdHMgdGhlIHJlc291cmNlIG1hbmFnZW1lbnQgYXJvdW5kIE5GQyBMTENQLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW4gcGxheSB0aGF0IGVuYWJsZSBORkMgTExDUCBpbiB0aGUgZmlyc3QgcGxhY2UsIGFzIHRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjowNC4yMzc2NjY0ODFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU2NzM1NDYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfTExDUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6MDQuMjkzMzQ3MDk2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MDcyNzUzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTkZDIEtjb25maWcqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBORkMgY29uZmlndXJhdGlvbi4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgYXBwcm9hY2gg4oCTIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgYG5ldC9uZmMvYCBkaXJlY3RvcnkuIFRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZmVhdHVyZSBzZXQsIGRlcGVuZGVuY2llcywgYW5kIGJ1aWxkIG9wdGlvbnMgZm9yIHRoaXMgc3Vic3lzdGVtLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGNvcmUgTkZDIGZ1bmN0aW9uYWxpdHkgZGVmaW5pdGlvbnMsIG1heWJlIHNvbWUgc3BlY2lmaWMgZHJpdmVyIHNlbGVjdGlvbnMgaWYgdGhleSdyZSBoYW5kbGVkIGF0IGEgaGlnaCBsZXZlbCwgYW5kIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IGFwcGx5LiBUaGlzIEtjb25maWcgd2lsbCBsaWtlbHkgbGluayB0byBtb3JlIGdyYW51bGFyIG9uZXMgd2l0aGluIHN1YmRpcmVjdG9yaWVzIGlmIHRoaW5ncyBhcmUgcHJvcGVybHkgbW9kdWxhcml6ZWQuIEknbSBhbnRpY2lwYXRpbmcgc29tZSBjb21wbGV4IGRlcGVuZGVuY2llcywgcG9zc2libHkgaW52b2x2aW5nIG90aGVyIG5ldHdvcmtpbmcgY29tcG9uZW50cyBvciBoYXJkd2FyZSBzdXBwb3J0LCBzbyBJJ2xsIG5lZWQgdG8gYmUgdGhvcm91Z2guIEknbGwgbmVlZCB0byBsb29rIGZvciBhbnkgZGVmYXVsdCBzZXR0aW5ncyB0aGF0IG1pZ2h0IGJlIGJha2VkIGludG8gdGhlIGtlcm5lbCBidWlsZCwgYW5kIGtlZXAgYW4gZXllIG91dCBmb3IgYW55IHVudXN1YWwgY29uZmlndXJhdGlvbnMgdGhhdCBjb3VsZCBjcmVhdGUgcHJvYmxlbXMgbGF0ZXIuIFJpZ2h0LCBsZXQncyBnbyFcblxuXG4iLCJJbnB1dFRva2VucyI6MzA4OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjA3LjczNDA3NzIwOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDgwNjIxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL0tjb25maWctNS1cXG5uZXQvbmZjL0tjb25maWc6NjptZW51Y29uZmlnIE5GQ1xcbm5ldC9uZmMvS2NvbmZpZy03LVxcdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcXG4tLVxcbm5ldC9uZmMvS2NvbmZpZy0xNi1cXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXFxubmV0L25mYy9LY29uZmlnLTE4LVxcdGRlcGVuZHMgb24gTkZDXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjA3Ljc4ODg4ODMzNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODUyODM5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE5GQyBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgcHVsbCB1cCB0aGUgYG5ldC9uZmMvS2NvbmZpZ2AgZmlsZS4gSSdtIGFzc3VtaW5nIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgc3RhbmRhcmQgTGludXgga2VybmVsIHNvdXJjZSBoZXJlLCBzbyB0aGlzIGlzIHdoZXJlIHdlJ2xsIGZpbmQgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBOZWFyIEZpZWxkIENvbW11bmljYXRpb24uIEknbSBpbW1lZGlhdGVseSBsb29raW5nIGZvciB0aGUgZ2VuZXJhbCBzdHJ1Y3R1cmUuIEknbSBleHBlY3RpbmcgdG8gc2VlIHRoZSBzdGFuZGFyZCBgY29uZmlnYCBibG9ja3MsIGBib29sYCwgYHRyaXN0YXRlYCwgYW5kIGBzdHJpbmdgIGRlZmluaXRpb25zLiBJIGFudGljaXBhdGUgc2VlaW5nIGRlcGVuZGVuY2llcywgbGlrZWx5IG9uIG90aGVyIG5ldHdvcmstcmVsYXRlZCBmZWF0dXJlcyBvciBwb3RlbnRpYWxseSBldmVuIGhhcmR3YXJlIGRyaXZlcnMsIGVzcGVjaWFsbHkgaWYgTkZDIGNvbnRyb2xsZXIgc3VwcG9ydCBpcyBtb2R1bGFyaXplZC5cblxuSSdtIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgaG93IHRoZXkndmUgb3JnYW5pemVkIHRoZSBvcHRpb25zLiBBcmUgdGhleSBncm91cGVkIGJ5IE5GQyBwcm90b2NvbCBzdGFuZGFyZHMgKGUuZy4sIE5GQy1BLCBORkMtQiwgTkZDLUYpPyBCeSBjb250cm9sbGVyIHR5cGU/IE9yIG1heWJlIGJ5IGZlYXR1cmUgc2V0LCBsaWtlIHJlYWRlci93cml0ZXIgZnVuY3Rpb25hbGl0eSB2ZXJzdXMgcGVlci10by1wZWVyPyBUaGUgb3JnYW5pemF0aW9uIHdpbGwgdGVsbCBtZSBhIGxvdCBhYm91dCB0aGUgZGVzaWduIHBoaWxvc29waHkuXG5cbk15IGZvY3VzIHdpbGwgYmUgb24gdGhlIGRlcGVuZGVuY2llcyBhbmQgZGVmYXVsdHMuIFdoYXQgb3RoZXIga2VybmVsIGZlYXR1cmVzIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgTkZDIHRvIHdvcms/IEFyZSB0aGVyZSBhbnkgaGFyZCBkZXBlbmRlbmNpZXMsIG9yIGFyZSBtb3N0IHRoaW5ncyBjb25maWd1cmFibGU/IFVuZGVyc3RhbmRpbmcgdGhlIGRlZmF1bHRzIGlzIGtleSBiZWNhdXNlIHRoZXkgZGljdGF0ZSB0aGUgXCJvdXQtb2YtdGhlLWJveFwiIGJlaGF2aW9yLiBBcmUgdGhlIGRlZmF1bHRzIHNlbnNpYmxlIGZyb20gYSBzZWN1cml0eSBhbmQgdXNhYmlsaXR5IHN0YW5kcG9pbnQ/IFRoYXQncyB3aGF0IEknbGwgYmUgbG9va2luZyBhdC5cblxuSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBcImV4cGVydFwiIG9wdGlvbnMsIGlmIHRoZXJlIGFyZSBhbnksIGFuZCBob3cgdGhleSBhcmUgZXhwbGFpbmVkLiBBcmUgdGhlcmUgY2xlYXIgZGVzY3JpcHRpb25zIG9mIHRoZSBpbXBhY3Qgb2YgdGhlc2Ugb3B0aW9ucz8gSSB3YW50IHRvIHNlZSBpZiB0aGUgS2NvbmZpZyBwcm92aWRlcyBzdWZmaWNpZW50IGd1aWRhbmNlIGZvciB0aG9zZSB3aG8gbWlnaHQgd2FudCB0byBjdXN0b21pemUgdGhlIE5GQyBzdGFjayBmb3IgdGhlaXIgc3BlY2lmaWMgZW1iZWRkZWQgZGV2aWNlIG9yIGFwcGxpY2F0aW9uLiBGaW5hbGx5LCBJJ2xsIHNraW0gZm9yIGFueSBkZXByZWNhdGlvbiB3YXJuaW5ncyBvciBhbnl0aGluZyB0aGF0IHBvaW50cyB0byBzb21lIG9mIHRoZSBjb2RlIGJlaW5nIHJlcGxhY2VkIG9yIHVuZGVyIGRldmVsb3BtZW50LiBBbHdheXMgaW50ZXJlc3RpbmcgdG8gbm90ZSB0aGUgXCJUT0RPXCIgZW50cmllcyBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6MTIuMzc0MTc0OTI4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZmMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTkZDIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgTkZDXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxuICAgODpcXHRcXHR0cmlzdGF0ZSBcXFwiTkZDIHN1YnN5c3RlbSBzdXBwb3J0XFxcIlxcbiAgIDk6XFx0XFx0ZGVmYXVsdCBuXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgc3VwcG9ydCBmb3IgTkZDIChOZWFyIGZpZWxkXFxuICAxMjpcXHRcXHQgIGNvbW11bmljYXRpb24pIGRldmljZXMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxcbiAgMTU6XFx0XFx0ICBiZSBjYWxsZWQgbmZjLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgTkZDX0RJR0lUQUxcXG4gIDE4OlxcdFxcdGRlcGVuZHMgb24gTkZDXFxuICAxOTpcXHRcXHRzZWxlY3QgQ1JDX0NDSVRUXFxuICAyMDpcXHRcXHRzZWxlY3QgQ1JDX0lUVV9UXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiTkZDIERpZ2l0YWwgUHJvdG9jb2wgc3RhY2sgc3VwcG9ydFxcXCJcXG4gIDIyOlxcdFxcdGRlZmF1bHQgblxcbiAgMjM6XFx0XFx0aGVscFxcbiAgMjQ6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBidWlsZCBORkMgZGlnaXRhbCBwcm90b2NvbCBzdGFjayBzdXBwb3J0LlxcbiAgMjU6XFx0XFx0ICBUaGlzIGlzIG5lZWRlZCBieSBORkMgY2hpcHNldHMgd2hvc2UgZmlybXdhcmUgb25seSBpbXBsZW1lbnRcXG4gIDI2OlxcdFxcdCAgdGhlIE5GQyBhbmFsb2cgbGF5ZXIuXFxuICAyNzpcXHRcXG4gIDI4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxcbiAgMjk6XFx0XFx0ICBiZSBjYWxsZWQgbmZjX2RpZ2l0YWwuXFxuICAzMDpcXHRcXG4gIDMxOlxcdHNvdXJjZSBcXFwibmV0L25mYy9uY2kvS2NvbmZpZ1xcXCJcXG4gIDMyOlxcdHNvdXJjZSBcXFwibmV0L25mYy9oY2kvS2NvbmZpZ1xcXCJcXG4gIDMzOlxcdFxcbiAgMzQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25mYy9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjoxMi4zNzQyNTQ2NjhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4MDU5NTQ5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRm9jdXNpbmcgb24gTkZDIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBORkMgaXMgY2xlYXJseSB0aGUgY2VudHJhbCBjb25maWd1cmF0aW9uIHBvaW50IGhlcmUuIEJ1dCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEknbSB3b25kZXJpbmcgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgTExDUCB0aGF0IGFyZSAqc2VwYXJhdGUqIGZyb20gdGhlIGdlbmVyYWwgTkZDIHNldHRpbmdzLiBJdCdzIHVzdWFsbHkgdGhlIGNhc2UgdGhhdCB0aGVyZSBhcmUgbW9yZSBzcGVjaWZpYyBvcHRpb25zIGZvciBlYWNoIHByb3RvY29sLiBMZXQncyBub3QgYXNzdW1lIGV2ZXJ5dGhpbmcgaXMgdW5kZXIgdGhlIGBORkNgIHVtYnJlbGxhLCBldmVuIGlmIGl0IHNlZW1zIHRoYXQgd2F5IGF0IGZpcnN0IGdsYW5jZS4gVGltZSB0byBkaXZlIGludG8gYG5ldC9uZmMvTWFrZWZpbGVgIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBoaW50cyBvciBzcGVjaWZpYyBidWlsZCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIExMQ1AgdHVja2VkIGF3YXkgaW4gdGhlcmUuIEknbSBob3BpbmcgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBORkMgYW5kIExMQ1AgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMxOSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6MTUuNzU0ODU0OTI0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZmMvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IE5GQyBzdWJzeXN0ZW0uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai0kKENPTkZJR19ORkMpICs9IG5mYy5vXFxuICAgNzpcXHRvYmotJChDT05GSUdfTkZDX05DSSkgKz0gbmNpL1xcbiAgIDg6XFx0b2JqLSQoQ09ORklHX05GQ19IQ0kpICs9IGhjaS9cXG4gICA5OlxcdG9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgKz0gbmZjX2RpZ2l0YWwub1xcbiAgMTA6XFx0XFxuICAxMTpcXHRuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcXFxcbiAgMTI6XFx0XFx0XFx0bGxjcF9zb2NrLm9cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0bmZjX2RpZ2l0YWwtb2JqcyA6PSBkaWdpdGFsX2NvcmUubyBkaWdpdGFsX3RlY2hub2xvZ3kubyBkaWdpdGFsX2RlcC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjE1Ljc1NDk0NTc3NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM3Mzk5NDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgbGxjcF9jb3JlLm9gIE1vZHVsZSoqXG5cbk9rYXksIHNvIGBsbGNwX2NvcmUub2AgaXMgY2xlYXJseSBwYXJ0IG9mIHRoZSBORkMgb2JqZWN0IHNldCwgc3BlY2lmaWNhbGx5IGNvbXBpbGVkIHdoZW4gdGhlIGBDT05GSUdfTkZDYCBvcHRpb24gaXMgZW5hYmxlZC4gVGhhdCdzIG91ciBzdGFydGluZyBwb2ludDogYE5GQ2AgaXMgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmxhZy4gTm93LCBsZXQncyBsb29rIGF0IHRoaXMgYG5mY19sbGNwX3R4X3dvcmtgIGZ1bmN0aW9uLiBUaGUgY29kZSBpbmRpY2F0ZXMgaXQncyBhIHdvcmtxdWV1ZSBmdW5jdGlvbiwgbWVhbmluZyBpdCdzIGxpa2VseSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuIEl0IHNlZW1zIGBuZmNfbGxjcF9zZW5kX3RvX3Jhd19zb2NrYCBpcyBvbmUgdHJpZ2dlciwgb3IgcGVyaGFwcyBvdGhlciBwYXRocy4gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBpcyBpdCByZWFjaGFibGU/IFllcywgYXBwYXJlbnRseSB0aHJvdWdoIE5GQyBzb2NrZXRzLiBUaGF04oCZcyBnb29kLiBXZSBrbm93IHRoZSBjb21tdW5pY2F0aW9uIHBhdGh3YXkgbm93LlxuXG5NeSBnb2FsIGhlcmUgaXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0cy4gSXMgYG5mY19sbGNwX3R4X3dvcmtgIGl0c2VsZiBhIGdvb2QgY2FuZGlkYXRlLCBvciBzaG91bGQgSSBiZSBsb29raW5nIGZvciBmdW5jdGlvbnMgdGhhdCBmZWVkIGludG8gaXQ/IEl0J3MgbWFya2VkIGFzIHN0YXRpYywgd2hpY2ggY291bGQgaW5kaWNhdGUgaXTigJlzIGludGVybmFsIHRvIHRoZSBtb2R1bGUsIGJ1dCB0aGF0J3Mgbm90IGFsd2F5cyBhIGhhcmQgYmFycmllci4gTGV0IG1lIHRyYWNlIGJhY2sgYW5kIHNlZSB3aGF0IGFjdHVhbGx5IHF1ZXVlcyB0aGlzIHdvcmsuIFVuZGVyc3RhbmRpbmcgdGhlIHF1ZXVpbmcgbWVjaGFuaXNtIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gY29udHJvbCBmbG93IGFuZCBzdGF0ZSBtYW5hZ2VtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzgzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6MjAuNDkyMzQ4MTUzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTQxODYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV93b3JrLip0eF93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbmNpL2RhdGEuYz0xNzE9aW50IG5jaV9zZW5kX2RhdGEoc3RydWN0IG5jaV9kZXYgKm5kZXYsIF9fdTggY29ubl9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvbmNpL2RhdGEuYy0xOTktXFx0bmRldi1cXHUwMDNlY3VyX2Nvbm5faWQgPSBjb25uX2lkO1xcbm5ldC9uZmMvbmNpL2RhdGEuYzoyMDA6XFx0cXVldWVfd29yayhuZGV2LVxcdTAwM2V0eF93cSwgXFx1MDAyNm5kZXYtXFx1MDAzZXR4X3dvcmspO1xcbm5ldC9uZmMvbmNpL2RhdGEuYy0yMDEtXFxuLS1cXG5uZXQvbmZjL25jaS9udGYuYz01ND1zdGF0aWMgaW50IG5jaV9jb3JlX2Nvbm5fY3JlZGl0c19udGZfcGFja2V0KHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxcbi0tXFxubmV0L25mYy9uY2kvbnRmLmMtOTQtXFx0aWYgKCFza2JfcXVldWVfZW1wdHkoXFx1MDAyNm5kZXYtXFx1MDAzZXR4X3EpKVxcbm5ldC9uZmMvbmNpL250Zi5jOjk1OlxcdFxcdHF1ZXVlX3dvcmsobmRldi1cXHUwMDNldHhfd3EsIFxcdTAwMjZuZGV2LVxcdTAwM2V0eF93b3JrKTtcXG5uZXQvbmZjL25jaS9udGYuYy05Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6MjAuNTY3NzcwNTUxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMzc0Mjk5OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2VzcywgZGVsaXZlcmVkIGFzIHRob3VnaCBJJ20gd29ya2luZyB0aHJvdWdoIGl0IG15c2VsZjpcblxuKipMTENQIEltcGxlbWVudGF0aW9uIERlZXAgRGl2ZSoqXG5cbk9rYXksIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBUaGlua2luZyBhYm91dCB0aGlzIGlzc3VlLCBJIGhhdmUgYSBmZWVsaW5nIHRoZSBwcm9ibGVtIGxpZXMgd2l0aGluIHRoZSBsb3ctbGV2ZWwgY29tbXVuaWNhdGlvbi4gSSBzaG91bGQgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBjb3JlIExMQ1AgaW1wbGVtZW50YXRpb24uIEEgZ29vZCBzdGFydGluZyBwb2ludCB3b3VsZCBiZSB0aGUgYG5ldC9uZmMvbGxjcF9jb3JlLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0cmFuc21pc3Npb24gd29yayBpcyBoYW5kbGVkLiBMZXQgbWUgc2VhcmNoIGZvciB0aGUgZnVuY3Rpb24gb3IgdmFyaWFibGUgcmVsYXRlZCB0byB0aGUgdHJhbnNtaXNzaW9uIHdvcmssIHRoYXQgaXMgYHR4X3dvcmtgLiBIb3BlZnVsbHkgdGhpcyB3aWxsIGdpdmUgbWUgYSBwb2ludCB0byBiZWdpbiB1bmRlcnN0YW5kaW5nIHRoZSBkYXRhIGZsb3cgaGVyZS4gTGV0J3Mgc2VlIHdoYXQgSSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ5OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjIzLjcwNTIwMzI1MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzIzNjA1MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHhfd29ya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL2xsY3BfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcF9jb3JlLmM9MTYwPXN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY0LVxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2bG9jYWwtXFx1MDAzZXR4X3F1ZXVlKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2NTpcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfd29yayk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjYtXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2bG9jYWwtXFx1MDAzZXJ4X3dvcmspO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz03MjE9dm9pZCBuZmNfbGxjcF9zZW5kX3RvX3Jhd19zb2NrKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc2MC1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc2MTpzdGF0aWMgdm9pZCBuZmNfbGxjcF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc2Mi17XFxubmV0L25mYy9sbGNwX2NvcmUuYy03NjMtXFx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwsXFxubmV0L25mYy9sbGNwX2NvcmUuYzo3NjQ6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHR4X3dvcmspO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzY1LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE1NDg9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1NjUtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTY2OlxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF93b3JrKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1NjctXFx0a2ZyZWVfc2tiKGxvY2FsLVxcdTAwM2VyeF9wZW5kaW5nKTtcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTYyOT12b2lkIG5mY19sbGNwX21hY19pc191cChzdHJ1Y3QgbmZjX2RldiAqZGV2LCB1MzIgdGFyZ2V0X2lkeCxcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY0Ni1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2NDc6XFx0XFx0c2NoZWR1bGVfd29yayhcXHUwMDI2bG9jYWwtXFx1MDAzZXR4X3dvcmspO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY0OC1cXHR9IGVsc2Uge1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNjU2PWludCBuZmNfbGxjcF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5mY19kZXYgKm5kZXYpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2NzktXFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2bG9jYWwtXFx1MDAzZXR4X3F1ZXVlKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2ODA6XFx0SU5JVF9XT1JLKFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfd29yaywgbmZjX2xsY3BfdHhfd29yayk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjgxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjoyMy43Nzc1NzAxOTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4NjAzMTMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqTExDUCBUcmFuc21pdCBRdWV1ZSBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBORkMgTExDUCBjb2RlIGFuZCB0cmFja2luZyBob3cgdGhlIHRyYW5zbWl0IHNpZGUgaXMgbWFuYWdlZC4gSSBzZWUgdGhhdCBgbmZjX2xsY3BfdHhfd29ya2AgZ2V0cyBzY2hlZHVsZWQgaW4gdHdvIHBsYWNlczogYG5mY19sbGNwX3J4X3dvcmtgIGFuZCBgbmZjX2xsY3BfbWFjX2lzX3VwYC4gVGhhdCBtYWtlcyBzZW5zZTsgaW5jb21pbmcgZGF0YSBtaWdodCB0cmlnZ2VyIGEgdHJhbnNtaXQsIGFuZCB0aGUgTUFDIGxheWVyIGNvbWluZyBvbmxpbmUgY291bGQgYWxzbyBraWNrIHRoaW5ncyBvZmYuIEJ1dCBJJ20gbWlzc2luZyBhIGNyaXRpY2FsIHBpZWNlIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGF0KiBhY3R1YWxseSBlbnF1ZXVlcyB0aGUgU29ja2V0IEJ1ZmZlcnMgKHNrYnMpIG9udG8gYGxvY2FsLVx1MDAzZXR4X3F1ZXVlYC4gV2hlcmUgYXJlIHRoZSB0cmFuc21pdCBwYWNrZXRzIGFjdHVhbGx5ICpwdXQqIGJlZm9yZSB0aGUgd29yayBxdWV1ZSBldmVuIGdldHMgYSBjaGFuY2UgdG8gc2VlIHRoZW0/IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBxdWV1ZSB0byBmaW5kIHRoZSBvcmlnaW4gcG9pbnRzLCB0byBmdWxseSBncmFzcCB0aGUgZmxvdyBhbmQgcG90ZW50aWFsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgbWVhdCBvZiB0aGUgdHJhbnNtaXQgbG9naWMgcHJvYmFibHkgcmVzaWRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQzMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjI3LjU2MzYwNDA0OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NjI2MjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInR4X3F1ZXVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvbGxjcF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9sbGNwX2NvcmUuYz00NT1zdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcHVyZ2Uoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2spXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTQ5LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6NTA6XFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZzb2NrLVxcdTAwM2V0eF9xdWV1ZSk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy01MS1cXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNnNvY2stXFx1MDAzZXR4X3BlbmRpbmdfcXVldWUpO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy01Ni1cXHQvKiBTZWFyY2ggZm9yIGxvY2FsIHBlbmRpbmcgU0tCcyB0aGF0IGFyZSByZWxhdGVkIHRvIHRoaXMgc29ja2V0ICovXFxubmV0L25mYy9sbGNwX2NvcmUuYzo1NzpcXHRza2JfcXVldWVfd2Fsa19zYWZlKFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUsIHMsIHRtcCkge1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNTgtXFx0XFx0aWYgKHMtXFx1MDAzZXNrICE9IFxcdTAwMjZzb2NrLVxcdTAwM2VzaylcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNjAtXFxubmV0L25mYy9sbGNwX2NvcmUuYzo2MTpcXHRcXHRza2JfdW5saW5rKHMsIFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNjItXFx0XFx0a2ZyZWVfc2tiKHMpO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz02Nj1zdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzItXFxubmV0L25mYy9sbGNwX2NvcmUuYzo3MzpcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF9xdWV1ZSk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy03NC1cXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTYwPXN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTYzLVxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZsb2NhbC1cXHUwMDNlbGlua190aW1lcik7XFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNjQ6XFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY1LVxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF93b3JrKTtcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MzEyPXN0YXRpYyBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm5mY19sbGNwX3JlbW92ZV9sb2NhbChzdHJ1Y3QgbmZjX2RldiAqZGV2KVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0zMTgtXFx0XFx0aWYgKGxvY2FsLVxcdTAwM2VkZXYgPT0gZGV2KSB7XFxubmV0L25mYy9sbGNwX2NvcmUuYzozMTk6XFx0XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUubG9jayk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0zMjAtXFx0XFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2bG9jYWwtXFx1MDAzZWxpc3QpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MzIxOlxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUubG9jayk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0zMjItXFx0XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmxsY3BfZGV2aWNlc19sb2NrKTtcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9NzYxPXN0YXRpYyB2b2lkIG5mY19sbGNwX3R4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy03NjgtXFxubmV0L25mYy9sbGNwX2NvcmUuYzo3Njk6XFx0c2tiID0gc2tiX2RlcXVldWUoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF9xdWV1ZSk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy03NzAtXFx0aWYgKHNrYiAhPSBOVUxMKSB7XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc3Ny1cXHRcXHR9IGVsc2UgaWYgKGxsY3Bfc29jayBcXHUwMDI2XFx1MDAyNiAhbGxjcF9zb2NrLVxcdTAwM2VyZW1vdGVfcmVhZHkpIHtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc3ODpcXHRcXHRcXHRza2JfcXVldWVfaGVhZChcXHUwMDI2bG9jYWwtXFx1MDAzZXR4X3F1ZXVlLCBza2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzc5LVxcdFxcdFxcdG5mY19sbGNwX3NlbmRfc3ltbShsb2NhbC1cXHUwMDNlZGV2KTtcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTA0NT1pbnQgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXMoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2spXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEwNTgtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxMDU5OlxcdFxcdHBkdSA9IHNrYl9kZXF1ZXVlKFxcdTAwMjZzb2NrLVxcdTAwM2V0eF9xdWV1ZSk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xMDYwLVxcdFxcdGlmIChwZHUgPT0gTlVMTClcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA2NS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjEwNjY6XFx0XFx0c2tiX3F1ZXVlX3RhaWwoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF9xdWV1ZSwgcGR1KTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEwNjctXFx0XFx0bnJfZnJhbWVzKys7XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTEwNzM9c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9oZGxjKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNDQtXFx0XFx0XFx0c2tiX3VubGluayhzLCBcXHUwMDI2bGxjcF9zb2NrLVxcdTAwM2V0eF9wZW5kaW5nX3F1ZXVlKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjExNDU6XFx0XFx0XFx0c2tiX3F1ZXVlX2hlYWQoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF9xdWV1ZSwgcyk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xMTQ2LVxcdFxcdH1cXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTY1Nj1pbnQgbmZjX2xsY3BfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuZmNfZGV2ICpuZGV2KVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjc4LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTY3OTpcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY4MC1cXHRJTklUX1dPUksoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF93b3JrLCBuZmNfbGxjcF90eF93b3JrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6MjcuNjcxMjM1NjdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0OTc4NjgxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHdoYXQncyBnb2luZyBvbjpcblxuKipRdWV1aW5nIEktRnJhbWVzIGluIHRoZSBORkMgTExDUCBMYXllcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBJLWZyYW1lcyBhcmUgaGFuZGxlZCBpbiB0aGUgTkZDIExMQ1AgbGF5ZXIuIFRoZSBjb3JlIGZ1bmN0aW9uIGhlcmUsIGl0IHNlZW1zLCBpcyBgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXNgLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBmdW5jdGlvbidzIGpvYiBpcyB0byB0YWtlIHRoZXNlIEktZnJhbWVzIGFuZCBwdXQgdGhlbSBpbiB0aGUgYGxvY2FsLVx1MDAzZXR4X3F1ZXVlYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyB0aGUgbmF0dXJhbCB3YXkgdG8gbWFuYWdlIG91dGJvdW5kIGZyYW1lcy4gVG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIHF1ZXVpbmcgaGFwcGVucywgYW5kIHRvIGxvb2sgZm9yIHBvdGVudGlhbCBpc3N1ZXMgb3Igb3B0aW1pemF0aW9ucywgSSdsbCBuZWVkIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUuIFNwZWNpZmljYWxseSwgSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXNgIHdpdGhpbiBgbmV0L25mYy9sbGNwX2NvcmUuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIGFuZCB3aGVyZSBJIGNhbiBnYWluIGEgcmVhbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0cmFuc21pc3Npb24gcHJvY2Vzcy4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGZyYW1lcyBhcmUgYWRkZWQgdG8gdGhlIHF1ZXVlLCBhbmQgd2hhdCBjb25jdXJyZW5jeSBtZWNoYW5pc21zLCBpZiBhbnksIGFyZSBpbiBwbGFjZSB0byBtYW5hZ2UgYWNjZXNzIHRvIHRoZSBxdWV1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE2MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjMxLjgyMTAyNTQwN1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyODM3MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcC5oPTIwOD12b2lkIG5mY19sbGNwX3B1dF9zc2FwKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHU4IHNzYXApO1xcbm5ldC9uZmMvbGxjcC5oOjIwOTppbnQgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXMoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2spO1xcbm5ldC9uZmMvbGxjcC5oLTIxMC12b2lkIG5mY19sbGNwX3NlbmRfdG9fcmF3X3NvY2soc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jPTY2MD1pbnQgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrLFxcbi0tXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmMtNzI5LVxcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jOjczMDpcXHRcXHRuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhzb2NrKTtcXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy03MzEtXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTkxND1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2Nvbm5lY3Qoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA0NC1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjEwNDU6aW50IG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA0Ni17XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTEwNzM9c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9oZGxjKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTMtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxMTU0OlxcdGlmIChuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhsbGNwX3NvY2spID09IDAgXFx1MDAyNlxcdTAwMjYgcHR5cGUgPT0gTExDUF9QRFVfSSlcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTUtXFx0XFx0bmZjX2xsY3Bfc2VuZF9ycihsbGNwX3NvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjozMS45NTM4ODE0N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzk3ODg4NTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byBMTENQIEZyYW1lIFRyYW5zbWlzc2lvbioqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRocm91Z2ggdGhpcyBORkMgY29kZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgdGhlIGxvdy1sZXZlbCBjb21tdW5pY2F0aW9uIHByb3RvY29sIChMTENQKS4gSSBzZWUgdGhhdCBgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lYCBpbiBgbmV0L25mYy9sbGNwX2NvbW1hbmRzLmNgIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3Igc2VuZGluZyBJLWZyYW1lcy4gTWFrZXMgc2Vuc2UuIEJ1dCB3aGVyZSBkb2VzIHRoZSBmcmFtZSBnZXQgKnF1ZXVlZCogZm9yIHNlbmRpbmc/IFRoZSBjb2RlIHRlbGxzIG1lIGl0IGNhbGxzIGBuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lc2AuIEFscmlnaHQsIHNvIHRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuIE5vdywgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBuZmNfbGxjcF9zZW5kX2lfZnJhbWVgIGl0c2VsZiBhbmQgc2VlIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgZGF0YSBmbG93LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoZSBzZW5kLCB3aGF0IGRhdGEgaXMgcGFzc2VkLCBhbmQgd2hhdCBwcmVwYXJhdG9yeSBzdGVwcyBhcmUgaW52b2x2ZWQgYmVmb3JlIHF1ZXVpbmcgdGhlIGZyYW1lLiBUaGlzIGlzIGxpa2VseSB3aGVyZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIGFuZCB3aW5kb3dpbmcgbG9naWMgd2lsbCBiZSBoYW5kbGVkLCB3aGljaCBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAwNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjM2LjM1MTc3MzI2NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NzQxOTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19sbGNwX3NlbmRfaV9mcmFtZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2xsY3AuaD0yNDM9aW50IG5mY19sbGNwX3NlbmRfZGlzY29ubmVjdChzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jayk7XFxubmV0L25mYy9sbGNwLmg6MjQ0OmludCBuZmNfbGxjcF9zZW5kX2lfZnJhbWUoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2ssXFxubmV0L25mYy9sbGNwLmgtMjQ1LVxcdFxcdFxcdCAgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKTtcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jPTYyNz1pbnQgbmZjX2xsY3Bfc2VuZF9kbShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCB1OCBzc2FwLCB1OCBkc2FwLCB1OCByZWFzb24pXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy02NTktXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM6NjYwOmludCBuZmNfbGxjcF9zZW5kX2lfZnJhbWUoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2ssXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmMtNjYxLVxcdFxcdFxcdCAgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz03ODU9c3RhdGljIGludCBsbGNwX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTgzNC1cXG5uZXQvbmZjL2xsY3Bfc29jay5jOjgzNTpcXHRyZXR1cm4gbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lKGxsY3Bfc29jaywgbXNnLCBsZW4pO1xcbm5ldC9uZmMvbGxjcF9zb2NrLmMtODM2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6MzYuNDU4NTIxMzY1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NDkwNTc3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IExMQ1AgU29ja2V0IFNlbmQgT3BlcmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyBob3cgdGhpcyBjb2RlIGlzIHJlYWNoZWQuIGBsbGNwX3NvY2tfc2VuZG1zZ2AgY2FsbHMgYG5mY19sbGNwX3NlbmRfaV9mcmFtZWAsIGFuZCB0aGF0J3MgdGhlIGNvcmUgb2YgdGhlIHNlbmQgb3BlcmF0aW9uIG92ZXIgdGhlIHNvY2tldC4gVGhpcyBtZWFucyB0aGF0IHVzZXJzcGFjZSBjb2RlIGNhbiByZWFjaCB0aGlzIGxvZ2ljIHRocm91Z2ggc3RhbmRhcmQgc29ja2V0IG9wZXJhdGlvbnMsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgZnV6emluZy4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBza2Jfc2V0X293bmVyX3dgIOKAkyB0aGF0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gcGF5IGF0dGVudGlvbiB0by4gVGhlIHJlbGV2YW50IGNvbmZpZyBoZXJlIGlzIGBORkNgLlxuXG5UaGUgcXVlc3Rpb24gbm93IGlzLCB3aGF0IGFyZSB0aGUgYmVzdCBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIGZ1enppbmc/IGBsbGNwX3NvY2tfc2VuZG1zZ2AgbG9va3MgbGlrZSBhIHN0cm9uZyBjYW5kaWRhdGUgYmVjYXVzZSBpdCdzIHRoZSBlbnRyeSBwb2ludCBmcm9tIHRoZSBzb2NrZXQgbGF5ZXIuIEkgc2hvdWxkIGFsc28gY29uc2lkZXIgYG5mY19sbGNwX3NlbmRfaV9mcmFtZWAgZGlyZWN0bHksIHRoYXQncyB3aGVyZSB0aGUgYWN0dWFsIGZyYW1lIHRyYW5zbWlzc2lvbiBoYXBwZW5zLiBXYWl0LCBJIGFsbW9zdCBmb3Jnb3QsIGBuZmNfbGxjcF90eF93b3JrYC4uLiBidXQgdGhhdCdzIG1hcmtlZCBzdGF0aWMsIHJpZ2h0PyBZZXMsIHNvIHRoYXQncyBwcm9iYWJseSBub3QgYSBnb29kIGZ1enppbmcgdGFyZ2V0IHNpbmNlIGl0IGNhbid0IGJlIGNhbGxlZCBkaXJlY3RseS4gYG5mY19sbGNwX3NlbmRfaV9mcmFtZWAgaXMgbm9uLXN0YXRpYyB0aG91Z2gsIHNvIHRoYXQncyBnb29kLlxuXG5TbywgbGV0J3MgY2lyY2xlIGJhY2suIGBsbGNwX3NvY2tfc2VuZG1zZ2AgYW5kIGBuZmNfbGxjcF9zZW5kX2lfZnJhbWVgIGFyZSB0aGUga2V5IGFyZWFzLiBJIG5lZWQgdG8gZGlnIGludG8gYGxsY3Bfc29ja19zZW5kbXNnYCBhbmQgc2VlIHdoYXQncyByZWFsbHkgaGFwcGVuaW5nIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Njk4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjQyLjEwNzU4MjAyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDM2OTYyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsbGNwX3NvY2tfc2VuZG1zZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2xsY3Bfc29jay5jPTY2MT1zdGF0aWMgaW50IGxsY3Bfc29ja19jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICpfYWRkcixcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtNzg0LVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6Nzg1OnN0YXRpYyBpbnQgbGxjcF9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtNzg2LVxcdFxcdFxcdCAgICAgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM9OTI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGxsY3Bfc29ja19vcHMgPSB7XFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTk0MS1cXHQuZ2V0c29ja29wdCAgICAgPSBuZmNfbGxjcF9nZXRzb2Nrb3B0LFxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6OTQyOlxcdC5zZW5kbXNnICAgICAgICA9IGxsY3Bfc29ja19zZW5kbXNnLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTQzLVxcdC5yZWN2bXNnICAgICAgICA9IGxsY3Bfc29ja19yZWN2bXNnLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjo0Mi4xODE5NTU3NThaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0MjcwNjEwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTExDUCBGcmFtZSBUcmFuc21pc3Npb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgTExDUCBmcmFtZSB0cmFuc21pc3Npb24gY29kZS4gVGhlIGZ1bmN0aW9uIGBsbGNwX3NvY2tfc2VuZG1zZ2AgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIG1ha2VzIGl0IGEgYml0IHRyaWNreSwgYmVjYXVzZSBpdCBjb3VsZCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgb3IgaXQgbWF5IG5vdCBldmVuIGhhdmUgYSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MuIFRoaXMgbWFrZXMgZGlyZWN0IGFuYWx5c2lzIGRpZmZpY3VsdC5cblxuSG93ZXZlciwgYG5mY19sbGNwX3NlbmRfaV9mcmFtZWAgaXMgZGVjbGFyZWQgYXMgbm9uLXN0YXRpYy4gVGhpcyBpcyBtdWNoIG1vcmUgcHJvbWlzaW5nLiBJJ2xsIGZvY3VzIG15IGF0dGVudGlvbiB0aGVyZSBhbmQgc2VlIHdoYXQgaW5zaWdodHMgSSBjYW4gZ2xlYW4gZnJvbSB0aGlzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDUzOCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE2OjQ1LjcyNDY3MTY1MVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIyMjcyMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3Bfc2VuZF9pX2ZyYW1lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jPTYyNz1pbnQgbmZjX2xsY3Bfc2VuZF9kbShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCB1OCBzc2FwLCB1OCBkc2FwLCB1OCByZWFzb24pXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy02NTktXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM6NjYwOmludCBuZmNfbGxjcF9zZW5kX2lfZnJhbWUoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2ssXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmMtNjYxLVxcdFxcdFxcdCAgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjo0NS43ODY5MDQ1NThaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3MTYwNTIxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipJbnRlcm5hbCBSZXZpZXcgb2YgTkZDIExMQ1AgRnJhbWUgVHJhbnNtaXNzaW9uKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCB3aGF0IGFtIEkgdGhpbmtpbmcgYWJvdXQgaGVyZT8gKm5mY19sbGNwX3NlbmRfaV9mcmFtZSogaXNuJ3QgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIHF1ZXN0aW9uIGluIG15IG1pbmQgYWJvdXQgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgZm9yIGNvbmN1cnJlbmN5IGlzc3Vlcy4gVGhlbiwgdGhhdCBuYXR1cmFsbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgKm5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKi4gQXJlIHRoZXNlIHR3byByZWxhdGVkPyBJcyB0aGUgcXVldWluZyBtZWNoYW5pc20gdGhyZWFkLXNhZmUgb3IgaXMgaXQgc29tZWhvdyBsaW5rZWQ/IFBlcmhhcHMgdGhlcmUncyBhIGRlc2lnbiBkZWNpc2lvbiBJIG5lZWQgdG8gcmV2aWV3LiBJIHNob3VsZCBkb3VibGUgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIG5vbi1zdGF0aWMgbmF0dXJlIG9mIHRoZSBzZW5kaW5nIGZ1bmN0aW9uIGlzIGhhbmRsZWQgY29ycmVjdGx5IGlmIG11bHRpcGxlIHRocmVhZHMgY291bGQgYmUgY2FsbGluZyBpdC4gSXQgc291bmRzIGxpa2UgdGhlcmUgY291bGQgYmUgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTIxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTY6NDkuNDU4NTEzNzI1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg2NzgyOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3BfcXVldWVfaV9mcmFtZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9sbGNwX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2xsY3BfY29yZS5jPTkxND1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2Nvbm5lY3Qoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA0NC1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjEwNDU6aW50IG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA0Ni17XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTEwNzM9c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9oZGxjKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTMtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxMTU0OlxcdGlmIChuZmNfbGxjcF9xdWV1ZV9pX2ZyYW1lcyhsbGNwX3NvY2spID09IDAgXFx1MDAyNlxcdTAwMjYgcHR5cGUgPT0gTExDUF9QRFVfSSlcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTUtXFx0XFx0bmZjX2xsY3Bfc2VuZF9ycihsbGNwX3NvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjo0OS41NjcxOTY3MzZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA5Mzc4MzExMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgb24gQVBJIEVudHJ5cG9pbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbmZjX2xsY3BfcXVldWVfaV9mcmFtZXNgIGZ1bmN0aW9uLiBJdCdzICpub3QqIHN0YXRpYywgd2hpY2ggaXMgZ29vZC4gVGhhdCdzIHRoZSBmaXJzdCBjaGVjay4gV2hhdCBhYm91dCBgbmZjX2xsY3BfdHhfd29ya2AgdGhvdWdoPyBIbW0sIGl0ICppcyogc3RhdGljLCBidXQgdGhlbiBJIHJlbWVtYmVyIGl0J3MgYSB3b3JrcXVldWUgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB0byBgSU5JVF9XT1JLYC4gVGhhdCBtZWFucyB0aGUgY29tcGlsZXIgYWxtb3N0IGNlcnRhaW5seSAqd29uJ3QqIGlubGluZSBpdCwgc28gaXQgd2lsbCBoYXZlIGl0cyBvd24gZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFRoYXQncyB3aGF0IHRoZSBwcm9tcHQgd2FudGVkLCBhdm9pZGluZyBpbmxpbmVkIGZ1bmN0aW9ucyFcblxuU28gdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgd2FudHMgbWUgdG8gY2hvb3NlIG5vbi1zdGF0aWMsICpub24taW5saW5lZCogQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucy4gU2luY2UgSSdtIHRoaW5raW5nIGFib3V0IGl0LCBldmVuIHRob3VnaCBgbmZjX2xsY3BfdHhfd29ya2AgaXMgc3RhdGljLCBiZWNhdXNlIGl0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQncyBhIGdvb2QgZW50cnkgcG9pbnQuIEJ1dCBgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lYCBsb29rcyBldmVuIGJldHRlciwgYW5kIGl0ICppcyogbm9uLXN0YXRpYywgc28gbGV0J3Mgc3RpY2sgd2l0aCB0aGF0LlxuXG5Ob3csIGxldCdzIHNlZSBhYm91dCB0aGUgY29uZmlndXJhdGlvbi4gSXMganVzdCBgTkZDYCBlbmFibGVkPyBMZXQncyBjaGVjay4gYE5GQ2AgZGVwZW5kcyBvbiBgUkZLSUxMIHx8ICFSRktJTExgLiBUaGF0J3MgYSBiaXQgb2RkLi4uIEFoLCB3YWl0LiBgTkZDYCBpcyBgdHJpc3RhdGUgXCJORkMgc3Vic3lzdGVtIHN1cHBvcnRcImAuIE9rYXksIHRoYXQgbWFrZXMgbW9yZSBzZW5zZS4gQXJlIHRoZXJlIGFueSBvdGhlciBjb25maWcgb3B0aW9ucyB0aGF0IGFyZSBuZWVkZWQ/IExpa2UsIGBORkNfTkNJYCBvciBgTkZDX0hDSWA/XG5cblRoZSBwYXRjaCBpcyBpbiBgbmV0L25mYy9sbGNwX2NvcmUuY2AsIHNvIGl0IHNob3VsZCBiZSB3aXRoaW4gYGxsY3BfY29yZS5vYC4gVGhhdCBmaWxlIGdldHMgY29tcGlsZWQgd2hlbiBgQ09ORklHX05GQ2AgaXMgZW5hYmxlZCwgd2hpY2ggYWxsIHNlZW1zIHRvIGJlIHRoZSBjYXNlLCBzbyBsZXQncyBkb3VibGUtY2hlY2sgdGhlIGBuZXQvbmZjL01ha2VmaWxlYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ1NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjo1NS42NjA5ODI0NzhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFrZWZpbGUgZm9yIHRoZSBMaW51eCBORkMgc3Vic3lzdGVtLlxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRvYmotJChDT05GSUdfTkZDKSArPSBuZmMub1xcbiAgIDc6XFx0b2JqLSQoQ09ORklHX05GQ19OQ0kpICs9IG5jaS9cXG4gICA4OlxcdG9iai0kKENPTkZJR19ORkNfSENJKSArPSBoY2kvXFxuICAgOTpcXHRvYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICs9IG5mY19kaWdpdGFsLm9cXG4gIDEwOlxcdFxcbiAgMTE6XFx0bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXFxcXG4gIDEyOlxcdFxcdFxcdGxsY3Bfc29jay5vXFxuICAxMzpcXHRcXG4gIDE0OlxcdG5mY19kaWdpdGFsLW9ianMgOj0gZGlnaXRhbF9jb3JlLm8gZGlnaXRhbF90ZWNobm9sb2d5Lm8gZGlnaXRhbF9kZXAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNjo1NS42NjEwNDU5OThaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE2MTczOTc2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTkZDIExMQ1AgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBDT05GSUdfTkZDYCBpcyBpbmRlZWQgZW5vdWdoIHRvIGJ1aWxkIGBsbGNwX2NvcmUuY2AuIExldCdzIGJyZWFrIGRvd24gbXkgdGhpbmtpbmc6XG5cblRoZSBpbml0aWFsIGFzc2Vzc21lbnQgZmxhZ3MgdGhpcyBhcyBXb3J0aEZ1enppbmcsIGFuZCB0aGUgcHJpbWFyeSBmb2N1cyBmYWxscyBvbiBgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lYCwgYG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzYCwgYW5kIGBuZmNfbGxjcF90eF93b3JrYC4gVGhlIG9ubHkgZW5hYmxpbmcgY29uZmlnIGlzIGBORkNgLiBUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiB0aGlzIHBhdGNoIGFsdGVycyB0aGUgZnVuY3Rpb24gYG5mY19sbGNwX3R4X3dvcmtgLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGFuIHNrYidzIG93bmVyIGlzIHNldCBhZnRlciBpdCdzIGNvcGllZC4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIHNvY2tldCBhY2NvdW50aW5nLCBhbmQgdGhhdCBjb2RlICppcyogcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBORkMgc29ja2V0IG9wZXJhdGlvbnMuXG5cbkhvd2V2ZXIsIEkgcGF1c2VkIGhlcmUuIGBuZmNfbGxjcF90eF93b3JrYCBpcyBkZWNsYXJlZCBhcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCdzIGEgcG9pbnQgdG8gY29uc2lkZXIuIFdoaWxlIG5vdCBuZWNlc3NhcmlseSBkaXNxdWFsaWZ5aW5nIGl0LCBpdCdzIGdlbmVyYWxseSBiZXN0IHRvIHByb3ZpZGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgaWYgYXZhaWxhYmxlLiBgbmZjX2xsY3Bfc2VuZF9pX2ZyYW1lYCBhbmQgYG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzYCBhcmUgZGVmaW5pdGVseSBnb29kIGNob2ljZXMuIEknbSBnb2luZyB0byBpbmNsdWRlIGBuZmNfbGxjcF90eF93b3JrYCBhcyB3ZWxsLCBzaW5jZSBpdCdzIHRoZSBmdW5jdGlvbiAqZGlyZWN0bHkqIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaCBhbmQgaXQncyBhIHdvcmtxdWV1ZSBoYW5kbGVyLCBtYWtpbmcgaW5saW5pbmcgbGVzcyBsaWtlbHkuIEl0J3MgaW1wb3J0YW50IHRvIGNhcHR1cmUgdGhlIGFsdGVyZWQgbG9naWMuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJIHF1aWNrbHkgZG91YmxlLWNoZWNrZWQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBBbmQgeWVzLCBgTkZDYCBpcyBhbGwgdGhhdCdzIHJlcXVpcmVkLlxuXG5JJ20gY29uZmlkZW50IGluIHRoaXMgZXZhbHVhdGlvbiwgc28gSSdtIGNhbGxpbmcgc2V0LXJlc3VsdHMgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQzNiwiT3V0cHV0VG9rZW5zIjoxMjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNToxNzowMy44MjI3ODg0ODhaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDU3MzE0NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mY19sbGNwX3NlbmRfaV9mcmFtZVwiLFxuICAgIFwibmZjX2xsY3BfcXVldWVfaV9mcmFtZXNcIixcbiAgICBcIm5mY19sbGNwX3R4X3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZjX2xsY3BfdHhfd29ya2AgdG8gc2V0IHRoZSBzb2NrZXQgb3duZXIgb2YgYSBjb3BpZWQgc2tiLCB3aGljaCBhZmZlY3RzIHNvY2tldCBtZW1vcnkgYWNjb3VudGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBORkMgTExDUCBjb3JlLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIE5GQyBzb2NrZXQgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZmNfbGxjcF9zZW5kX2lfZnJhbWVcIixcbiAgICBcIm5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzXCIsXG4gICAgXCJuZmNfbGxjcF90eF93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiwgd2hpY2ggYWZmZWN0cyBzb2NrZXQgbWVtb3J5IGFjY291bnRpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTkZDIExMQ1AgY29yZSwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBORkMgc29ja2V0IG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE3OjAzLjk2ODUyNzAzNFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk1MjAzNTQ3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE3OjAzLjk2ODk2NzYyNFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3OTUxNTkwNTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZjX2xsY3BfdHhfd29ya2AgdG8gc2V0IHRoZSBzb2NrZXQgb3duZXIgb2YgYSBjb3BpZWQgc2tiIHVzaW5nIGBza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKWAuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBzb2NrZXQgbWVtb3J5IGFjY291bnRpbmcgYW5kIHBvdGVudGlhbGx5IHByZXZlbnRzIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byBzb2NrZXQgZGVzdHJ1Y3Rpb24uIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IGJvdW5kcyBjaGVja2luZywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgbWVtb3J5IGNvcnJ1cHRpb24sIHVzZS1hZnRlci1mcmVlLCBvciBtZW1vcnkgbGVhayBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtNRU1MRUFLLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE2MjRmNjA2YzhjZjY1YWRjMGQzY2FhOGJhNDVlOGRhZTgyMGIxYzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxNToxNTo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jXG5pbmRleCBjYWMxYjU0ODcwNjRkLi40OWNiNjMyMjY4YzBjIDEwMDY0NFxuLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuY1xuKysrIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuQEAgLTc4Niw4ICs3ODYsMTEgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3BfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXCJMTENQIFR4OiBcIiwgRFVNUF9QUkVGSVhfT0ZGU0VULFxuIFx0XHRcdFx0XHQgICAgIDE2LCAxLCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbiwgdHJ1ZSk7XG4gXG4tXHRcdFx0aWYgKHB0eXBlID09IExMQ1BfUERVX0kpXG4rXHRcdFx0aWYgKHB0eXBlID09IExMQ1BfUERVX0kpIHtcbiBcdFx0XHRcdGNvcHlfc2tiID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTtcbitcdFx0XHRcdGlmIChjb3B5X3NrYilcbitcdFx0XHRcdFx0c2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzayk7XG4rXHRcdFx0fVxuIFxuIFx0XHRcdF9fbmV0X3RpbWVzdGFtcChza2IpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6MTc6MDMuOTY4OTY4NDg0WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NTE1NjI5OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTExDUCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiByZXZpZXdpbmcgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYG5mY19sbGNwX3R4X3dvcmtgIGluIGBuZXQvbmZjL2xsY3BfY29yZS5jYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCdzIGFkZGluZyBgc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzayk7YCBhZnRlciBhIHN1Y2Nlc3NmdWwgYHNrYl9jb3B5YCBvZiB0aGUgYHNrYmAgKHNvY2tldCBidWZmZXIpLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhpcyBzZWVtZWQgbGlrZSBpdCB3YXMgcmVsYXRlZCB0byBzb2NrZXQgYWNjb3VudGluZyBhbmQgbWVtb3J5IHRyYWNraW5nLCBub3QsIGNydWNpYWxseSwgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIEkgZGlkIGEgcXVpY2sgZG91YmxlLWNoZWNrIG9mIHRoZSBjb2RlIHNuaXBwZXQganVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmU6XG5cbmBgYGNcbi1cdFx0XHRpZiAocHR5cGUgPT0gTExDUF9QRFVfSSlcbitcdFx0XHRpZiAocHR5cGUgPT0gTExDUF9QRFVfSSkge1xuIFx0XHRcdFx0Y29weV9za2IgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpO1xuK1x0XHRcdFx0aWYgKGNvcHlfc2tiKVxuK1x0XHRcdFx0XHRza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKTtcbitcdFx0XHR9XG5gYGBcblxuWWVwLCBpdCdzIGRlZmluaXRlbHkgYWJvdXQgZml4aW5nIGEgbWVtb3J5IGFjY291bnRpbmcgcHJvYmxlbSwgb3IgcG9zc2libHkgYSB1c2UtYWZ0ZXItZnJlZS9tZW1vcnkgbGVhayByZWxhdGVkIHRvIGhvdyB0aGUgc2tiIG93bmVyc2hpcCBpcyBoYW5kbGVkIGFmdGVyIHRoZSBjb3B5LiBJdCdzIG5vdCBpbnRyb2R1Y2luZyBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgYW5kIGRlZmluaXRlbHkgbm8gaW5mby1sZWFrcywgc28gSSBjYW4gcHV0IHRob3NlIGNvbmNlcm5zIGFzaWRlLiBJZiB0aGVyZSAqd2VyZSogbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlcywgS0FTQU4sIEtNRU1MRUFLLCBvciB0aGUgc3RhbmRhcmQgdG9vbHMgd291bGQgY2F0Y2ggdGhlbSwgYnV0IEtNU0FOIGlzIHdoYXQgd2UgbmVlZCB0byB3b3JyeSBhYm91dCB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlIGFnYWluLCBJJ20gY29tZm9ydGFibGUgdGhhdCBgc2tiX2NvcHlgIGNyZWF0ZXMgYSAqY29weSogb2YgdGhlIGRhdGEsIGFuZCB0aGVuIGBza2Jfc2V0X293bmVyX3dgIHNldHMgdGhlIHNvY2tldCBvd25lciBmb3Igd3JpdGUgYWNjb3VudGluZyBwdXJwb3NlcyBvbiB0aGUgY29weS4gVGhlcmUncyBqdXN0IG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGludm9sdmVkIGhlcmUuIEl0J3Mgc2FmZSB0byBzYXkgdGhlcmUncyBubyByZWFzb24gdG8gZmxhZyB0aGlzIGZvciBLTVNBTi4gSSdtIGdvaW5nIHRvIGdvIGFoZWFkIGFuZCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGFuZCBtb3ZlIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDUxLCJPdXRwdXRUb2tlbnMiOjE2MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjE3OjExLjkyMDUzNDUwMVoiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG5mY19sbGNwX3R4X3dvcmtgIHRvIHNldCB0aGUgc29ja2V0IG93bmVyIG9mIGEgY29waWVkIHNrYiB1c2luZyBgc2tiX3NldF9vd25lcl93KGNvcHlfc2tiLCBzaylgLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgc29ja2V0IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50cyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gc29ja2V0IGRlc3RydWN0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3IgbWVtb3J5IGxlYWsgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZjX2xsY3BfdHhfd29ya2AgdG8gc2V0IHRoZSBzb2NrZXQgb3duZXIgb2YgYSBjb3BpZWQgc2tiIHVzaW5nIGBza2Jfc2V0X293bmVyX3coY29weV9za2IsIHNrKWAuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBzb2NrZXQgbWVtb3J5IGFjY291bnRpbmcgYW5kIHBvdGVudGlhbGx5IHByZXZlbnRzIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byBzb2NrZXQgZGVzdHJ1Y3Rpb24uIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IGJvdW5kcyBjaGVja2luZywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgbWVtb3J5IGNvcnJ1cHRpb24sIHVzZS1hZnRlci1mcmVlLCBvciBtZW1vcnkgbGVhayBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtNRU1MRUFLLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowr76ml[1] Phase: Succeeded StartedAt: 2026-08-21 15:17:23 +0000 UTC FinishedAt: 2026-08-21 15:17:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-21 15:17:23 +0000 UTC FinishedAt: 2026-08-21 15:17:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2] Phase: Succeeded StartedAt: 2026-08-21 15:17:23 +0000 UTC FinishedAt: 2026-08-21 18:55:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-21 15:17:23 +0000 UTC FinishedAt: 2026-08-21 18:55:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-21 15:17:23 +0000 UTC FinishedAt: 2026-08-21 15:17:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-21 15:17:23 +0000 UTC FinishedAt: 2026-08-21 15:17:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowr76ml/series-workflowr76ml-convert-artifact-425655828/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-21 15:17:33 +0000 UTC FinishedAt: 2026-08-21 15:34:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-21 15:17:33 +0000 UTC FinishedAt: 2026-08-21 15:34:13 +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:*00ff4a75-472c-4024-8ef4-fe45545104a4,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-workflowr76ml/series-workflowr76ml-convert-artifact-425655828/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": "ad49d59b-234f-4336-8f38-1ec64460c8ca", "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-workflowr76ml/series-workflowr76ml-build-action-2294450834/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-21 15:17:33 +0000 UTC FinishedAt: 2026-08-21 15:34:03 +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:*00ff4a75-472c-4024-8ef4-fe45545104a4,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-workflowr76ml/series-workflowr76ml-convert-artifact-425655828/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": "ad49d59b-234f-4336-8f38-1ec64460c8ca", "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-workflowr76ml/series-workflowr76ml-build-action-2294450834/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-21 15:34:13 +0000 UTC FinishedAt: 2026-08-21 15:34:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-21 15:34:13 +0000 UTC FinishedAt: 2026-08-21 15:34:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-21 15:34:13 +0000 UTC FinishedAt: 2026-08-21 15:34:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-21 15:34:13 +0000 UTC FinishedAt: 2026-08-21 15:34:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowr76ml/series-workflowr76ml-convert-artifact-2113158611/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-21 15:34:23 +0000 UTC FinishedAt: 2026-08-21 15:36:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-21 15:34:23 +0000 UTC FinishedAt: 2026-08-21 15:36:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ad49d59b-234f-4336-8f38-1ec64460c8ca,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-workflowr76ml/series-workflowr76ml-build-action-2294450834/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-21 15:36:17 +0000 UTC FinishedAt: 2026-08-21 15:36:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-21 15:36:17 +0000 UTC FinishedAt: 2026-08-21 15:36:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-21 15:36:17 +0000 UTC FinishedAt: 2026-08-21 15:52:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-21 15:36:17 +0000 UTC FinishedAt: 2026-08-21 15:52:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*00ff4a75-472c-4024-8ef4-fe45545104a4,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-workflowr76ml/series-workflowr76ml-convert-artifact-2113158611/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": "321a6063-fc23-4cb9-8ff7-875d926e13e9", "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-workflowr76ml/series-workflowr76ml-build-action-3001709319/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-21 15:36:17 +0000 UTC FinishedAt: 2026-08-21 15:52:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*00ff4a75-472c-4024-8ef4-fe45545104a4,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-workflowr76ml/series-workflowr76ml-convert-artifact-2113158611/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": "321a6063-fc23-4cb9-8ff7-875d926e13e9", "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-workflowr76ml/series-workflowr76ml-build-action-3001709319/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-21 15:52:27 +0000 UTC FinishedAt: 2026-08-21 15:52:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-21 15:52:27 +0000 UTC FinishedAt: 2026-08-21 15:52:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-21 15:52:27 +0000 UTC FinishedAt: 2026-08-21 15:54:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-21 15:52:27 +0000 UTC FinishedAt: 2026-08-21 15:54:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*321a6063-fc23-4cb9-8ff7-875d926e13e9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowr76ml/series-workflowr76ml-build-action-3001709319/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-21 15:54:30 +0000 UTC FinishedAt: 2026-08-21 18:55:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-21 15:54:30 +0000 UTC FinishedAt: 2026-08-21 18:55:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*ad49d59b-234f-4336-8f38-1ec64460c8ca,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*321a6063-fc23-4cb9-8ff7-875d926e13e9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowr76ml/series-workflowr76ml-build-action-2294450834/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowr76ml/series-workflowr76ml-build-action-3001709319/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-21 15:54:30 +0000 UTC FinishedAt: 2026-08-21 15:54:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-21 15:54:30 +0000 UTC FinishedAt: 2026-08-21 15:54:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowr76ml/series-workflowr76ml-convert-artifact-2782851916/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-21 15:54:30 +0000 UTC FinishedAt: 2026-08-21 15:54:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-21 15:54:30 +0000 UTC FinishedAt: 2026-08-21 15:54:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-21 15:54:30 +0000 UTC FinishedAt: 2026-08-21 15:54:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-21 15:54:40 +0000 UTC FinishedAt: 2026-08-21 18:55:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr76ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_send_i_frame","nfc_llcp_queue_i_frames","nfc_llcp_tx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC"],"series_id":"159e8c5d-d01a-4ed9-b94e-5898a5f82571","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-21 15:54:40 +0000 UTC FinishedAt: 2026-08-21 18:55:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ad49d59b-234f-4336-8f38-1ec64460c8ca,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*321a6063-fc23-4cb9-8ff7-875d926e13e9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowr76ml/series-workflowr76ml-build-action-2294450834/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowr76ml/series-workflowr76ml-build-action-3001709319/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowr76ml/series-workflowr76ml-convert-artifact-2782851916/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}