Name: series-workflowbx2rt Phase: Succeeded StartedAt: 2026-07-25 04:44:26 +0000 UTC FinishedAt: 2026-07-25 09:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[0] Phase: Succeeded StartedAt: 2026-07-25 04:44:26 +0000 UTC FinishedAt: 2026-07-25 05:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 04:44:26 +0000 UTC FinishedAt: 2026-07-25 05:12:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4539944e515183668109bdf4d0c3d7d228383d88", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4539944e515183668109bdf4d0c3d7d228383d88", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS" ], "series_id": "8767ef1c-4c0f-472f-b8a1-c02ca36a55f6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smc_rx_recvmsg", "smc_tx_sendmsg" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfcnhfcmVjdm1zZyYjMzQ7LAogICAgJiMzNDtzbWNfdHhfc2VuZG1zZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBTTUMgQ0RDIG1lc3NhZ2UgcHJvY2Vzc2luZyBhbmQgc29ja2V0IHJlY2VpdmUvdHJhbnNtaXQgcGF0aHMgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGhhbmRsaW5nIGZvcmdlZCBvciBtYWxmb3JtZWQgQ0RDIG1lc3NhZ2VzIGZyb20gYSBwZWVyLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgU01DIHByb3RvY29sIHN1YnN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE3NDY2ZDgyNjFiMTMwMDc0MjhjNDY1Njg3NjI2ODIyM2VhYmNmOGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwNToxMDoyNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jZGMuaCBiL25ldC9zbWMvc21jX2NkYy5oXG5pbmRleCA2OTZjYzExZjIzMDNiOS4uY2E3NmVmNjMwMzU2NmMgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jZGMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfY2RjLmhcbkBAIC0yMjEsNyAmIzQzOzIyMSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfaG9zdF9tc2dfdG9fY2RjKHN0cnVjdCBzbWNfY2RjX21zZyAqcGVlcixcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgc21jX2NkY19jdXJzb3JfdG9faG9zdCh1bmlvbiBzbWNfaG9zdF9jdXJzb3IgKmxvY2FsLFxuIFx0XHRcdFx0XHQgIHVuaW9uIHNtY19jZGNfY3Vyc29yICpwZWVyLFxuLVx0XHRcdFx0XHQgIHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbiYjNDM7XHRcdFx0XHRcdCAgc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxuJiM0MztcdFx0XHRcdFx0ICBpbnQgbWF4X2NvdW50KVxuIHtcbiBcdHVuaW9uIHNtY19ob3N0X2N1cnNvciB0ZW1wLCBvbGQ7XG4gXHR1bmlvbiBzbWNfY2RjX2N1cnNvciBuZXQ7XG5AQCAtMjM1LDYgJiM0MzsyMzYsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfY3Vyc29yX3RvX2hvc3QodW5pb24gc21jX2hvc3RfY3Vyc29yICpsb2NhbCxcbiBcdGlmICgob2xkLndyYXAgPT0gdGVtcC53cmFwKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAob2xkLmNvdW50IFx1MDAzZSB0ZW1wLmNvdW50KSlcbiBcdFx0cmV0dXJuO1xuJiM0MztcdC8qIFRoZSBwZWVyIHByb2R1Y2VyIGN1cnNvciBpcyB3aXJlLWNvbnRyb2xsZWQgYW5kIGlzIGxhdGVyIHVzZWQgYXMgYVxuJiM0MztcdCAqIHJhdyBpbmRleCBpbnRvIG91ciBSTUIgYnkgdGhlIHVyZ2VudCBwYXRoOyBib3VuZCBpdHMgY291bnQgdG8gdGhlXG4mIzQzO1x0ICogUk1CLiAgbWF4X2NvdW50ID09IDAgbGVhdmVzIHRoZSBjb25zdW1lciBjdXJzb3IgdW5ib3VuZGVkIGhlcmU6IGl0XG4mIzQzO1x0ICogaW5kZXhlcyB0aGUgcGVlciYjMzk7cyBSTUIgKGJvdW5kZWQgYnkgcGVlcl9ybWJlX3NpemUsIG5vdCBvdXJcbiYjNDM7XHQgKiBybWJfZGVzYy1cdTAwM2VsZW4pLCBzbyBjbGFtcGluZyBpdCB0byBybWJfZGVzYy1cdTAwM2VsZW4gd291bGQgdW5kZXItY3JlZGl0XG4mIzQzO1x0ICogcGVlcl9ybWJlX3NwYWNlIGFuZCBzdGFsbCB0cmFuc21pdCB0byBwZWVycyB3aXRoIGEgbGFyZ2VyIFJNQi5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAobWF4X2NvdW50IFx1MDAyNlx1MDAyNiB0ZW1wLmNvdW50IFx1MDAzZSBtYXhfY291bnQpXG4mIzQzO1x0XHR0ZW1wLmNvdW50ID0gbWF4X2NvdW50O1xuIFx0c21jX2N1cnNfY29weShsb2NhbCwgXHUwMDI2dGVtcCwgY29ubik7XG4gfVxuIFxuQEAgLTI0Niw4ICYjNDM7MjU2LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbWNyX2NkY19tc2dfdG9faG9zdChzdHJ1Y3Qgc21jX2hvc3RfY2RjX21zZyAqbG9jYWwsXG4gXHRsb2NhbC1cdTAwM2VsZW4gPSBwZWVyLVx1MDAzZWxlbjtcbiBcdGxvY2FsLVx1MDAzZXNlcW5vID0gbnRvaHMocGVlci1cdTAwM2VzZXFubyk7XG4gXHRsb2NhbC1cdTAwM2V0b2tlbiA9IG50b2hsKHBlZXItXHUwMDNldG9rZW4pO1xuLVx0c21jX2NkY19jdXJzb3JfdG9faG9zdChcdTAwMjZsb2NhbC1cdTAwM2Vwcm9kLCBcdTAwMjZwZWVyLVx1MDAzZXByb2QsIGNvbm4pO1xuLVx0c21jX2NkY19jdXJzb3JfdG9faG9zdChcdTAwMjZsb2NhbC1cdTAwM2Vjb25zLCBcdTAwMjZwZWVyLVx1MDAzZWNvbnMsIGNvbm4pO1xuJiM0MztcdC8qIGJvdW5kIHRoZSB3aXJlLWNvbnRyb2xsZWQgcHJvZHVjZXIgY3Vyc29yIHRvIG91ciBSTUIgKHVzZWQgYXMgYSByYXdcbiYjNDM7XHQgKiBpbmRleCBieSB0aGUgdXJnZW50IHBhdGgpOyBsZWF2ZSB0aGUgY29uc3VtZXIgY3Vyc29yIHVuYm91bmRlZCAtLSBpdFxuJiM0MztcdCAqIGluZGV4ZXMgdGhlIHBlZXImIzM5O3MgUk1CIGFuZCBpcyBib3VuZGVkIGJ5IHBlZXJfcm1iZV9zaXplLlxuJiM0MztcdCAqL1xuJiM0MztcdHNtY19jZGNfY3Vyc29yX3RvX2hvc3QoXHUwMDI2bG9jYWwtXHUwMDNlcHJvZCwgXHUwMDI2cGVlci1cdTAwM2Vwcm9kLCBjb25uLFxuJiM0MztcdFx0XHQgICAgICAgY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW4pO1xuJiM0MztcdHNtY19jZGNfY3Vyc29yX3RvX2hvc3QoXHUwMDI2bG9jYWwtXHUwMDNlY29ucywgXHUwMDI2cGVlci1cdTAwM2Vjb25zLCBjb25uLCAwKTtcbiBcdGxvY2FsLVx1MDAzZXByb2RfZmxhZ3MgPSBwZWVyLVx1MDAzZXByb2RfZmxhZ3M7XG4gXHRsb2NhbC1cdTAwM2Vjb25uX3N0YXRlX2ZsYWdzID0gcGVlci1cdTAwM2Vjb25uX3N0YXRlX2ZsYWdzO1xuIH1cbkBAIC0yNjAsNiAmIzQzOzI3NSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc21jZF9jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLFxuIFxuIFx0dGVtcC53cmFwID0gcGVlci1cdTAwM2Vwcm9kLndyYXA7XG4gXHR0ZW1wLmNvdW50ID0gcGVlci1cdTAwM2Vwcm9kLmNvdW50O1xuJiM0MztcdC8qIHRoZSBwZWVyIHByb2R1Y2VyIGN1cnNvciBpcyB3aXJlLWNvbnRyb2xsZWQgYW5kIGlzIHVzZWQgYXMgYSByYXdcbiYjNDM7XHQgKiBpbmRleCBpbnRvIG91ciBSTUIgYnkgdGhlIHVyZ2VudCBwYXRoOyBib3VuZCBpdCB0byB0aGUgUk1CLiAgVGhlXG4mIzQzO1x0ICogY29uc3VtZXIgY3Vyc29yIGJlbG93IGluZGV4ZXMgdGhlIHBlZXImIzM5O3MgUk1CIGFuZCBpcyBsZWZ0IHVuYm91bmRlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAodGVtcC5jb3VudCBcdTAwM2UgY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW4pXG4mIzQzO1x0XHR0ZW1wLmNvdW50ID0gY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW47XG4gXHRzbWNfY3Vyc19jb3B5KFx1MDAyNmxvY2FsLVx1MDAzZXByb2QsIFx1MDAyNnRlbXAsIGNvbm4pO1xuIFxuIFx0dGVtcC53cmFwID0gcGVlci1cdTAwM2Vjb25zLndyYXA7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfcnguYyBiL25ldC9zbWMvc21jX3J4LmNcbmluZGV4IGMxZDliOTIzOTM4ZGFkLi5mNDYxY2YxMGIwODU1YiAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX3J4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX3J4LmNcbkBAIC00NDIsNiAmIzQzOzQ0MiwxOCBAQCBpbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcbiBcdFx0LyogaW5pdGlhbGl6ZSB2YXJpYWJsZXMgZm9yIDFzdCBpdGVyYXRpb24gb2Ygc3Vic2VxdWVudCBsb29wICovXG4gXHRcdC8qIGNvdWxkIGJlIGp1c3QgMSBieXRlLCBldmVuIGFmdGVyIHdhaXRpbmcgb24gZGF0YSBhYm92ZSAqL1xuIFx0XHRyZWFkYWJsZSA9IHNtY19yeF9kYXRhX2F2YWlsYWJsZShjb25uLCBwZWVrZWRfYnl0ZXMpO1xuJiM0MztcdFx0LyogYnl0ZXNfdG9fcmN2IGlzIGFjY3VtdWxhdGVkIGZyb20gdGhlIHBlZXImIzM5O3Mgd2lyZS1jb250cm9sbGVkXG4mIzQzO1x0XHQgKiBwcm9kdWNlciBjdXJzb3I7IGEgZm9yZ2VkIGN1cnNvciBjYW4gZHJpdmUgaXQgcGFzdCB0aGUgUk1CLFxuJiM0MztcdFx0ICogb3Igb3ZlcmZsb3cgdGhlIHNpZ25lZCBhY2N1bXVsYXRvciB0byBhIG5lZ2F0aXZlIHZhbHVlIGFjcm9zc1xuJiM0MztcdFx0ICogbWFueSBDREMgbWVzc2FnZXMgKHdoaWNoIGEgcGxhaW4gXCYjMzQ7XHUwMDNlIGxlblwmIzM0OyBjaGVjayB3b3VsZCBtaXNzXG4mIzQzO1x0XHQgKiBiZWZvcmUgdGhlIHNpemVfdCBjYXN0IGJlbG93IHR1cm5zIGl0IGh1Z2UpLiAgQm91bmQgaXQgdG8gdGhlXG4mIzQzO1x0XHQgKiBSTUIgaW4gZWl0aGVyIGNhc2Ugc28gdGhlIHdyYXAtYXJvdW5kIGNvcHkgY2Fubm90IHJ1biBwYXN0XG4mIzQzO1x0XHQgKiBybWJfZGVzYy1cdTAwM2VsZW4uICBUaGlzIGVuZm9yY2VzIHRoZSBkb2N1bWVudGVkXG4mIzQzO1x0XHQgKiAwIFx1MDAzYz0gYnl0ZXNfdG9fcmN2IFx1MDAzYz0gcm1iX2Rlc2MtXHUwMDNlbGVuIGludmFyaWFudCBhdCB0aGUgY29uc3VtZXIsXG4mIzQzO1x0XHQgKiByYWNlLWZyZWUgYWdhaW5zdCB0aGUgcHJvZHVjZXIgdXBkYXRlIGluIHRoZSByZWNlaXZlIHRhc2tsZXQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChyZWFkYWJsZSBcdTAwM2MgMCB8fCByZWFkYWJsZSBcdTAwM2UgY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW4pXG4mIzQzO1x0XHRcdHJlYWRhYmxlID0gY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW47XG4gXHRcdHNwbGJ5dGVzID0gYXRvbWljX3JlYWQoXHUwMDI2Y29ubi1cdTAwM2VzcGxpY2VfcGVuZGluZyk7XG4gXHRcdGlmICghcmVhZGFibGUgfHwgKG1zZyBcdTAwMjZcdTAwMjYgc3BsYnl0ZXMpKSB7XG4gXHRcdFx0aWYgKHNwbGJ5dGVzKVxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3R4LmMgYi9uZXQvc21jL3NtY190eC5jXG5pbmRleCAzMTQ0YjRiMWZlMjkwMS4uNTkxNmYwMjA2MGZiOTAgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY190eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY190eC5jXG5AQCAtMjMzLDYgJiM0MzsyMzMsMTkgQEAgaW50IHNtY190eF9zZW5kbXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4gXHRcdC8qIGluaXRpYWxpemUgdmFyaWFibGVzIGZvciAxc3QgaXRlcmF0aW9uIG9mIHN1YnNlcXVlbnQgbG9vcCAqL1xuIFx0XHQvKiBjb3VsZCBiZSBqdXN0IDEgYnl0ZSwgZXZlbiBhZnRlciBzbWNfdHhfd2FpdCBhYm92ZSAqL1xuIFx0XHR3cml0ZXNwYWNlID0gYXRvbWljX3JlYWQoXHUwMDI2Y29ubi1cdTAwM2VzbmRidWZfc3BhY2UpO1xuJiM0MztcdFx0Lyogc25kYnVmX3NwYWNlIGlzIGFkdmFuY2VkIGZyb20gdGhlIHBlZXImIzM5O3Mgd2lyZS1jb250cm9sbGVkXG4mIzQzO1x0XHQgKiBjb25zdW1lciBjdXJzb3Igb24gdGhlIFNNQy1EIERNQi1tZXJnZSBwYXRoOyBhIGZvcmdlZCBjdXJzb3JcbiYjNDM7XHRcdCAqIGNhbiBpbmZsYXRlIGl0IHBhc3QgdGhlIHNlbmQgYnVmZmVyLCBvciBvdmVyZmxvdyB0aGUgc2lnbmVkXG4mIzQzO1x0XHQgKiBhY2N1bXVsYXRvciB0byBhIG5lZ2F0aXZlIHZhbHVlIGFjcm9zcyBtYW55IENEQyBtZXNzYWdlc1xuJiM0MztcdFx0ICogKHdoaWNoIGEgcGxhaW4gXCYjMzQ7XHUwMDNlIGxlblwmIzM0OyBjaGVjayB3b3VsZCBtaXNzIGJlZm9yZSB0aGUgc2l6ZV90XG4mIzQzO1x0XHQgKiBjYXN0IGJlbG93IHR1cm5zIGl0IGh1Z2UpLiAgQm91bmQgaXQgdG8gdGhlIHNlbmQgYnVmZmVyIGluXG4mIzQzO1x0XHQgKiBlaXRoZXIgY2FzZSBzbyB0aGUgd3JhcC1hcm91bmQgd3JpdGUgY2Fubm90IHJ1biBwYXN0XG4mIzQzO1x0XHQgKiBzbmRidWZfZGVzYy1cdTAwM2VsZW4uICBUaGlzIGVuZm9yY2VzIHRoZSBkb2N1bWVudGVkXG4mIzQzO1x0XHQgKiAwIFx1MDAzYz0gc25kYnVmX3NwYWNlIFx1MDAzYz0gc25kYnVmX2Rlc2MtXHUwMDNlbGVuIGludmFyaWFudCBhdCB0aGVcbiYjNDM7XHRcdCAqIHByb2R1Y2VyLCByYWNlLWZyZWUgYWdhaW5zdCB0aGUgQ0RDIHRhc2tsZXQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmICh3cml0ZXNwYWNlIFx1MDAzYyAwIHx8IHdyaXRlc3BhY2UgXHUwMDNlIGNvbm4tXHUwMDNlc25kYnVmX2Rlc2MtXHUwMDNlbGVuKVxuJiM0MztcdFx0XHR3cml0ZXNwYWNlID0gY29ubi1cdTAwM2VzbmRidWZfZGVzYy1cdTAwM2VsZW47XG4gXHRcdC8qIG5vdCBtb3JlIHRoYW4gd2hhdCB1c2VyIHNwYWNlIGFza2VkIGZvciAqL1xuIFx0XHRjb3B5bGVuID0gbWluX3Qoc2l6ZV90LCBzZW5kX3JlbWFpbmluZywgd3JpdGVzcGFjZSk7XG4gXHRcdC8qIGRldGVybWluZSBzdGFydCBvZiBzbmRidWYgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U01DJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19yeF9yZWN2bXNnJiMzNDssCiAgICAmIzM0O3NtY190eF9zZW5kbXNnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIFNNQyBDREMgbWVzc2FnZSBwcm9jZXNzaW5nIGFuZCBzb2NrZXQgcmVjZWl2ZS90cmFuc21pdCBwYXRocyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIGludGVnZXIgb3ZlcmZsb3dzIHdoZW4gaGFuZGxpbmcgZm9yZ2VkIG9yIG1hbGZvcm1lZCBDREMgbWVzc2FnZXMgZnJvbSBhIHBlZXIuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGluIHRoZSBTTUMgcHJvdG9jb2wgc3Vic3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTc0NjZkODI2MWIxMzAwNzQyOGM0NjU2ODc2MjY4MjIzZWFiY2Y4YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDI1IDA1OjEwOjI3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY2RjLmggYi9uZXQvc21jL3NtY19jZGMuaAppbmRleCA2OTZjYzExZjIzMDNiOS4uY2E3NmVmNjMwMzU2NmMgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX2NkYy5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX2NkYy5oCkBAIC0yMjEsNyAmIzQzOzIyMSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfaG9zdF9tc2dfdG9fY2RjKHN0cnVjdCBzbWNfY2RjX21zZyAqcGVlciwKIAogc3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfY3Vyc29yX3RvX2hvc3QodW5pb24gc21jX2hvc3RfY3Vyc29yICpsb2NhbCwKIAkJCQkJICB1bmlvbiBzbWNfY2RjX2N1cnNvciAqcGVlciwKLQkJCQkJICBzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pCiYjNDM7CQkJCQkgIHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiwKJiM0MzsJCQkJCSAgaW50IG1heF9jb3VudCkKIHsKIAl1bmlvbiBzbWNfaG9zdF9jdXJzb3IgdGVtcCwgb2xkOwogCXVuaW9uIHNtY19jZGNfY3Vyc29yIG5ldDsKQEAgLTIzNSw2ICYjNDM7MjM2LDE1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfY2RjX2N1cnNvcl90b19ob3N0KHVuaW9uIHNtY19ob3N0X2N1cnNvciAqbG9jYWwsCiAJaWYgKChvbGQud3JhcCA9PSB0ZW1wLndyYXApICZhbXA7JmFtcDsKIAkgICAgKG9sZC5jb3VudCAmZ3Q7IHRlbXAuY291bnQpKQogCQlyZXR1cm47CiYjNDM7CS8qIFRoZSBwZWVyIHByb2R1Y2VyIGN1cnNvciBpcyB3aXJlLWNvbnRyb2xsZWQgYW5kIGlzIGxhdGVyIHVzZWQgYXMgYQomIzQzOwkgKiByYXcgaW5kZXggaW50byBvdXIgUk1CIGJ5IHRoZSB1cmdlbnQgcGF0aDsgYm91bmQgaXRzIGNvdW50IHRvIHRoZQomIzQzOwkgKiBSTUIuICBtYXhfY291bnQgPT0gMCBsZWF2ZXMgdGhlIGNvbnN1bWVyIGN1cnNvciB1bmJvdW5kZWQgaGVyZTogaXQKJiM0MzsJICogaW5kZXhlcyB0aGUgcGVlciYjMzk7cyBSTUIgKGJvdW5kZWQgYnkgcGVlcl9ybWJlX3NpemUsIG5vdCBvdXIKJiM0MzsJICogcm1iX2Rlc2MtJmd0O2xlbiksIHNvIGNsYW1waW5nIGl0IHRvIHJtYl9kZXNjLSZndDtsZW4gd291bGQgdW5kZXItY3JlZGl0CiYjNDM7CSAqIHBlZXJfcm1iZV9zcGFjZSBhbmQgc3RhbGwgdHJhbnNtaXQgdG8gcGVlcnMgd2l0aCBhIGxhcmdlciBSTUIuCiYjNDM7CSAqLwomIzQzOwlpZiAobWF4X2NvdW50ICZhbXA7JmFtcDsgdGVtcC5jb3VudCAmZ3Q7IG1heF9jb3VudCkKJiM0MzsJCXRlbXAuY291bnQgPSBtYXhfY291bnQ7CiAJc21jX2N1cnNfY29weShsb2NhbCwgJmFtcDt0ZW1wLCBjb25uKTsKIH0KIApAQCAtMjQ2LDggJiM0MzsyNTYsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIHNtY3JfY2RjX21zZ190b19ob3N0KHN0cnVjdCBzbWNfaG9zdF9jZGNfbXNnICpsb2NhbCwKIAlsb2NhbC0mZ3Q7bGVuID0gcGVlci0mZ3Q7bGVuOwogCWxvY2FsLSZndDtzZXFubyA9IG50b2hzKHBlZXItJmd0O3NlcW5vKTsKIAlsb2NhbC0mZ3Q7dG9rZW4gPSBudG9obChwZWVyLSZndDt0b2tlbik7Ci0Jc21jX2NkY19jdXJzb3JfdG9faG9zdCgmYW1wO2xvY2FsLSZndDtwcm9kLCAmYW1wO3BlZXItJmd0O3Byb2QsIGNvbm4pOwotCXNtY19jZGNfY3Vyc29yX3RvX2hvc3QoJmFtcDtsb2NhbC0mZ3Q7Y29ucywgJmFtcDtwZWVyLSZndDtjb25zLCBjb25uKTsKJiM0MzsJLyogYm91bmQgdGhlIHdpcmUtY29udHJvbGxlZCBwcm9kdWNlciBjdXJzb3IgdG8gb3VyIFJNQiAodXNlZCBhcyBhIHJhdwomIzQzOwkgKiBpbmRleCBieSB0aGUgdXJnZW50IHBhdGgpOyBsZWF2ZSB0aGUgY29uc3VtZXIgY3Vyc29yIHVuYm91bmRlZCAtLSBpdAomIzQzOwkgKiBpbmRleGVzIHRoZSBwZWVyJiMzOTtzIFJNQiBhbmQgaXMgYm91bmRlZCBieSBwZWVyX3JtYmVfc2l6ZS4KJiM0MzsJICovCiYjNDM7CXNtY19jZGNfY3Vyc29yX3RvX2hvc3QoJmFtcDtsb2NhbC0mZ3Q7cHJvZCwgJmFtcDtwZWVyLSZndDtwcm9kLCBjb25uLAomIzQzOwkJCSAgICAgICBjb25uLSZndDtybWJfZGVzYy0mZ3Q7bGVuKTsKJiM0MzsJc21jX2NkY19jdXJzb3JfdG9faG9zdCgmYW1wO2xvY2FsLSZndDtjb25zLCAmYW1wO3BlZXItJmd0O2NvbnMsIGNvbm4sIDApOwogCWxvY2FsLSZndDtwcm9kX2ZsYWdzID0gcGVlci0mZ3Q7cHJvZF9mbGFnczsKIAlsb2NhbC0mZ3Q7Y29ubl9zdGF0ZV9mbGFncyA9IHBlZXItJmd0O2Nvbm5fc3RhdGVfZmxhZ3M7CiB9CkBAIC0yNjAsNiAmIzQzOzI3NSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc21jZF9jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLAogCiAJdGVtcC53cmFwID0gcGVlci0mZ3Q7cHJvZC53cmFwOwogCXRlbXAuY291bnQgPSBwZWVyLSZndDtwcm9kLmNvdW50OwomIzQzOwkvKiB0aGUgcGVlciBwcm9kdWNlciBjdXJzb3IgaXMgd2lyZS1jb250cm9sbGVkIGFuZCBpcyB1c2VkIGFzIGEgcmF3CiYjNDM7CSAqIGluZGV4IGludG8gb3VyIFJNQiBieSB0aGUgdXJnZW50IHBhdGg7IGJvdW5kIGl0IHRvIHRoZSBSTUIuICBUaGUKJiM0MzsJICogY29uc3VtZXIgY3Vyc29yIGJlbG93IGluZGV4ZXMgdGhlIHBlZXImIzM5O3MgUk1CIGFuZCBpcyBsZWZ0IHVuYm91bmRlZC4KJiM0MzsJICovCiYjNDM7CWlmICh0ZW1wLmNvdW50ICZndDsgY29ubi0mZ3Q7cm1iX2Rlc2MtJmd0O2xlbikKJiM0MzsJCXRlbXAuY291bnQgPSBjb25uLSZndDtybWJfZGVzYy0mZ3Q7bGVuOwogCXNtY19jdXJzX2NvcHkoJmFtcDtsb2NhbC0mZ3Q7cHJvZCwgJmFtcDt0ZW1wLCBjb25uKTsKIAogCXRlbXAud3JhcCA9IHBlZXItJmd0O2NvbnMud3JhcDsKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3J4LmMgYi9uZXQvc21jL3NtY19yeC5jCmluZGV4IGMxZDliOTIzOTM4ZGFkLi5mNDYxY2YxMGIwODU1YiAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfcnguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19yeC5jCkBAIC00NDIsNiAmIzQzOzQ0MiwxOCBAQCBpbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZywKIAkJLyogaW5pdGlhbGl6ZSB2YXJpYWJsZXMgZm9yIDFzdCBpdGVyYXRpb24gb2Ygc3Vic2VxdWVudCBsb29wICovCiAJCS8qIGNvdWxkIGJlIGp1c3QgMSBieXRlLCBldmVuIGFmdGVyIHdhaXRpbmcgb24gZGF0YSBhYm92ZSAqLwogCQlyZWFkYWJsZSA9IHNtY19yeF9kYXRhX2F2YWlsYWJsZShjb25uLCBwZWVrZWRfYnl0ZXMpOwomIzQzOwkJLyogYnl0ZXNfdG9fcmN2IGlzIGFjY3VtdWxhdGVkIGZyb20gdGhlIHBlZXImIzM5O3Mgd2lyZS1jb250cm9sbGVkCiYjNDM7CQkgKiBwcm9kdWNlciBjdXJzb3I7IGEgZm9yZ2VkIGN1cnNvciBjYW4gZHJpdmUgaXQgcGFzdCB0aGUgUk1CLAomIzQzOwkJICogb3Igb3ZlcmZsb3cgdGhlIHNpZ25lZCBhY2N1bXVsYXRvciB0byBhIG5lZ2F0aXZlIHZhbHVlIGFjcm9zcwomIzQzOwkJICogbWFueSBDREMgbWVzc2FnZXMgKHdoaWNoIGEgcGxhaW4gJiMzNDsmZ3Q7IGxlbiYjMzQ7IGNoZWNrIHdvdWxkIG1pc3MKJiM0MzsJCSAqIGJlZm9yZSB0aGUgc2l6ZV90IGNhc3QgYmVsb3cgdHVybnMgaXQgaHVnZSkuICBCb3VuZCBpdCB0byB0aGUKJiM0MzsJCSAqIFJNQiBpbiBlaXRoZXIgY2FzZSBzbyB0aGUgd3JhcC1hcm91bmQgY29weSBjYW5ub3QgcnVuIHBhc3QKJiM0MzsJCSAqIHJtYl9kZXNjLSZndDtsZW4uICBUaGlzIGVuZm9yY2VzIHRoZSBkb2N1bWVudGVkCiYjNDM7CQkgKiAwICZsdDs9IGJ5dGVzX3RvX3JjdiAmbHQ7PSBybWJfZGVzYy0mZ3Q7bGVuIGludmFyaWFudCBhdCB0aGUgY29uc3VtZXIsCiYjNDM7CQkgKiByYWNlLWZyZWUgYWdhaW5zdCB0aGUgcHJvZHVjZXIgdXBkYXRlIGluIHRoZSByZWNlaXZlIHRhc2tsZXQuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChyZWFkYWJsZSAmbHQ7IDAgfHwgcmVhZGFibGUgJmd0OyBjb25uLSZndDtybWJfZGVzYy0mZ3Q7bGVuKQomIzQzOwkJCXJlYWRhYmxlID0gY29ubi0mZ3Q7cm1iX2Rlc2MtJmd0O2xlbjsKIAkJc3BsYnl0ZXMgPSBhdG9taWNfcmVhZCgmYW1wO2Nvbm4tJmd0O3NwbGljZV9wZW5kaW5nKTsKIAkJaWYgKCFyZWFkYWJsZSB8fCAobXNnICZhbXA7JmFtcDsgc3BsYnl0ZXMpKSB7CiAJCQlpZiAoc3BsYnl0ZXMpCmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY190eC5jIGIvbmV0L3NtYy9zbWNfdHguYwppbmRleCAzMTQ0YjRiMWZlMjkwMS4uNTkxNmYwMjA2MGZiOTAgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfdHguYwpAQCAtMjMzLDYgJiM0MzsyMzMsMTkgQEAgaW50IHNtY190eF9zZW5kbXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pCiAJCS8qIGluaXRpYWxpemUgdmFyaWFibGVzIGZvciAxc3QgaXRlcmF0aW9uIG9mIHN1YnNlcXVlbnQgbG9vcCAqLwogCQkvKiBjb3VsZCBiZSBqdXN0IDEgYnl0ZSwgZXZlbiBhZnRlciBzbWNfdHhfd2FpdCBhYm92ZSAqLwogCQl3cml0ZXNwYWNlID0gYXRvbWljX3JlYWQoJmFtcDtjb25uLSZndDtzbmRidWZfc3BhY2UpOwomIzQzOwkJLyogc25kYnVmX3NwYWNlIGlzIGFkdmFuY2VkIGZyb20gdGhlIHBlZXImIzM5O3Mgd2lyZS1jb250cm9sbGVkCiYjNDM7CQkgKiBjb25zdW1lciBjdXJzb3Igb24gdGhlIFNNQy1EIERNQi1tZXJnZSBwYXRoOyBhIGZvcmdlZCBjdXJzb3IKJiM0MzsJCSAqIGNhbiBpbmZsYXRlIGl0IHBhc3QgdGhlIHNlbmQgYnVmZmVyLCBvciBvdmVyZmxvdyB0aGUgc2lnbmVkCiYjNDM7CQkgKiBhY2N1bXVsYXRvciB0byBhIG5lZ2F0aXZlIHZhbHVlIGFjcm9zcyBtYW55IENEQyBtZXNzYWdlcwomIzQzOwkJICogKHdoaWNoIGEgcGxhaW4gJiMzNDsmZ3Q7IGxlbiYjMzQ7IGNoZWNrIHdvdWxkIG1pc3MgYmVmb3JlIHRoZSBzaXplX3QKJiM0MzsJCSAqIGNhc3QgYmVsb3cgdHVybnMgaXQgaHVnZSkuICBCb3VuZCBpdCB0byB0aGUgc2VuZCBidWZmZXIgaW4KJiM0MzsJCSAqIGVpdGhlciBjYXNlIHNvIHRoZSB3cmFwLWFyb3VuZCB3cml0ZSBjYW5ub3QgcnVuIHBhc3QKJiM0MzsJCSAqIHNuZGJ1Zl9kZXNjLSZndDtsZW4uICBUaGlzIGVuZm9yY2VzIHRoZSBkb2N1bWVudGVkCiYjNDM7CQkgKiAwICZsdDs9IHNuZGJ1Zl9zcGFjZSAmbHQ7PSBzbmRidWZfZGVzYy0mZ3Q7bGVuIGludmFyaWFudCBhdCB0aGUKJiM0MzsJCSAqIHByb2R1Y2VyLCByYWNlLWZyZWUgYWdhaW5zdCB0aGUgQ0RDIHRhc2tsZXQuCiYjNDM7CQkgKi8KJiM0MzsJCWlmICh3cml0ZXNwYWNlICZsdDsgMCB8fCB3cml0ZXNwYWNlICZndDsgY29ubi0mZ3Q7c25kYnVmX2Rlc2MtJmd0O2xlbikKJiM0MzsJCQl3cml0ZXNwYWNlID0gY29ubi0mZ3Q7c25kYnVmX2Rlc2MtJmd0O2xlbjsKIAkJLyogbm90IG1vcmUgdGhhbiB3aGF0IHVzZXIgc3BhY2UgYXNrZWQgZm9yICovCiAJCWNvcHlsZW4gPSBtaW5fdChzaXplX3QsIHNlbmRfcmVtYWluaW5nLCB3cml0ZXNwYWNlKTsKIAkJLyogZGV0ZXJtaW5lIHN0YXJ0IG9mIHNuZGJ1ZiAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzA2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNNQyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgY29kZSwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBDREMgbWVzc2FnZXMuIEkgc2VlIGl0JiMzOTtzIG1vZGlmeWluZyBgc21jX2NkYy5oYCwgYHNtY19yeC5jYCwgYW5kIGBzbWNfdHguY2AuIFRoYXQgdGVsbHMgbWUgd2UmIzM5O3JlIGxvb2tpbmcgYXQgY29yZSBmdW5jdGlvbmFsaXR5IOKAkyB0aGUgaGVhZGVyIGZpbGUsIHJlY2VpdmVyLCBhbmQgdHJhbnNtaXR0ZXIgc2lkZXMuIFRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhleSYjMzk7cmUgYWRkaW5nIGJvdW5kcyBjaGVja2luZywgc3BlY2lmaWNhbGx5IGluIGZ1bmN0aW9ucyBsaWtlIGBzbWNfY2RjX2N1cnNvcl90b19ob3N0YCwgYHNtY3JfY2RjX21zZ190b19ob3N0YCwgYHNtY2RfY2RjX21zZ190b19ob3N0YCwgYHNtY19yeF9yZWN2bXNnYCwgYW5kIGBzbWNfdHhfc2VuZG1zZ2AuCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLCBhbmQgaXQmIzM5O3MgYWltZWQgYXQgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5OiB0aGUgcG9zc2liaWxpdHkgb2Ygb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzIG9yIGludGVnZXIgb3ZlcmZsb3cuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGdvb2QuIE1hbGZvcm1lZCBvciBmb3JnZWQgQ0RDIG1lc3NhZ2VzIGNvdWxkIGJlIHVzZWQgdG8gZXhwbG9pdCB0aGUgc3lzdGVtLCBzbyBhZGRpbmcgY2hlY2tzIGlzIGVzc2VudGlhbCwgcGFydGljdWxhcmx5IGdpdmVuIHRoZSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucyBvZiBTTUMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoaXMgYm91bmRzIGNoZWNraW5nIGlzIGltcGxlbWVudGVkLCBidXQgdGhlIGdlbmVyYWwgcHJpbmNpcGxlIGlzIHNvdW5kLgoKQmVmb3JlIEkgZ28gZnVydGhlciwgbGV0IG1lIGp1c3QgY2hlY2sgdGhlIEtjb25maWcgdG8gc2VlIGhvdyBTTUMgaXMgY29uZmlndXJlZC4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGFmZmVjdHMgYWxsIGJ1aWxkcyBvciBvbmx5IGNlcnRhaW4gY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNNQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9zbWMvS2NvbmZpZzoyOmNvbmZpZyBTTUNcbm5ldC9zbWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMTMtXG5uZXQvc21jL0tjb25maWc6MTQ6Y29uZmlnIFNNQ19ESUFHXG5uZXQvc21jL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC9zbWMvS2NvbmZpZy0yMi1cbm5ldC9zbWMvS2NvbmZpZzoyMzpjb25maWcgU01DX0hTX0NUUkxfQlBGXG5uZXQvc21jL0tjb25maWctMjQtXHRib29sIFwmIzM0O0dlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzc1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU01DIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaXMgYFNNQ2AuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHBpbnBvaW50IHRoZSBmb2N1cyBzeW1ib2xzIOKAkyB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGVpdGhlciBkaXJlY3RseSBtb2RpZmllZCBvciBhcmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNoYW5nZXMuIExvb2tpbmcgYXQgdGhlIGRpZmYsIGl0IHNlZW1zIHRoZXNlIGFyZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zOiBgc21jX2NkY19jdXJzb3JfdG9faG9zdGAsIGBzbWNyX2NkY19tc2dfdG9faG9zdGAsIGBzbWNkX2NkY19tc2dfdG9faG9zdGAsIGBzbWNfcnhfcmVjdm1zZ2AsIGFuZCBgc21jX3R4X3NlbmRtc2dgLgoKU2luY2UgdGhlIGZpcnN0IHRocmVlLCBgc21jX2NkY19jdXJzb3JfdG9faG9zdGAsIGBzbWNyX2NkY19tc2dfdG9faG9zdGAgYW5kIGBzbWNkX2NkY19tc2dfdG9faG9zdGAsIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljIGlubGluZWAsIHRoZXkgYXJlIGxpa2VseSBpbmxpbmVkIGF0IHRoZSBjYWxsIHNpdGUuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGZvY3VzIG9uIHdoZXJlICp0aGV5KiBhcmUgY2FsbGVkIG9yIHdoZXRoZXIgdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzIGhhdmUgZGlyZWN0IG1vZGlmaWNhdGlvbnMuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGlkZW50aWZ5IHRoZSBjYWxsIHNpdGVzIG9mIGBzbWNyX2NkY19tc2dfdG9faG9zdGAgYW5kIGBzbWNkX2NkY19tc2dfdG9faG9zdGAg4oCTIHRoZXNlIGFyZSBsaWtlbHkgdGhlIGNyaXRpY2FsIHBpZWNlcyB0byBhbmFseXplLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY3JfY2RjX21zZ190b19ob3N0fHNtY2RfY2RjX21zZ190b19ob3N0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY2RjLmg9MjIyPXN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfY2RjX2N1cnNvcl90b19ob3N0KHVuaW9uIHNtY19ob3N0X2N1cnNvciAqbG9jYWwsXG4tLVxubmV0L3NtYy9zbWNfY2RjLmgtMjUwLVxubmV0L3NtYy9zbWNfY2RjLmg6MjUxOnN0YXRpYyBpbmxpbmUgdm9pZCBzbWNyX2NkY19tc2dfdG9faG9zdChzdHJ1Y3Qgc21jX2hvc3RfY2RjX21zZyAqbG9jYWwsXG5uZXQvc21jL3NtY19jZGMuaC0yNTItXHRcdFx0XHRcdHN0cnVjdCBzbWNfY2RjX21zZyAqcGVlcixcbi0tXG5uZXQvc21jL3NtY19jZGMuaC0yNjktXG5uZXQvc21jL3NtY19jZGMuaDoyNzA6c3RhdGljIGlubGluZSB2b2lkIHNtY2RfY2RjX21zZ190b19ob3N0KHN0cnVjdCBzbWNfaG9zdF9jZGNfbXNnICpsb2NhbCxcbm5ldC9zbWMvc21jX2NkYy5oLTI3MS1cdFx0XHRcdFx0c3RydWN0IHNtY2RfY2RjX21zZyAqcGVlcixcbi0tXG5uZXQvc21jL3NtY19jZGMuaD0yOTM9c3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLFxuLS1cbm5ldC9zbWMvc21jX2NkYy5oLTI5Ny1cdGlmIChjb25uLVx1MDAzZWxnci1cdTAwM2Vpc19zbWNkKVxubmV0L3NtYy9zbWNfY2RjLmg6Mjk4Olx0XHRzbWNkX2NkY19tc2dfdG9faG9zdChsb2NhbCwgKHN0cnVjdCBzbWNkX2NkY19tc2cgKilwZWVyLCBjb25uKTtcbm5ldC9zbWMvc21jX2NkYy5oLTI5OS1cdGVsc2Vcbm5ldC9zbWMvc21jX2NkYy5oOjMwMDpcdFx0c21jcl9jZGNfbXNnX3RvX2hvc3QobG9jYWwsIHBlZXIsIGNvbm4pO1xubmV0L3NtYy9zbWNfY2RjLmgtMzAxLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqVHJhY2luZyB0aGUgU01DX0NEQyBNZXNzYWdlIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBzbWNfY2RjX21zZ190b19ob3N0YCBmdW5jdGlvbi4gVGhlIGNvZGUgY2FsbHMgaXQsIGFuZCBpdCYjMzk7cyBhbHNvIHN0YXRpYyBpbmxpbmUsIHdoaWNoIGlzIGEga2V5IGRldGFpbC4gVGhhdCBtZWFucyB0aGUgY29tcGlsZXIgbGlrZWx5IHN1YnN0aXR1dGVzIHRoZSBmdW5jdGlvbiYjMzk7cyBjb2RlIGRpcmVjdGx5IHdoZXJldmVyIGl0JiMzOTtzIHVzZWQuIFRoaXMgc3VnZ2VzdHMgaXQmIzM5O3MgYSBjcml0aWNhbCwgcG90ZW50aWFsbHkgcGVyZm9ybWFuY2Utc2Vuc2l0aXZlIHBpZWNlIG9mIHRoZSBjb21tdW5pY2F0aW9uIGxvZ2ljLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQgdG8gZmlndXJlIG91dCB0aGUgbGFyZ2VyIGNvbnRleHQuIFRpbWUgdG8gdHJhY2sgZG93biBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgYHNtY19jZGNfbXNnX3RvX2hvc3RgLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIGRhdGEgZmxvd3MgYW5kIHdoYXQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGxvb2tzIGxpa2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2NkY19tc2dfdG9faG9zdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTMzMD1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcbi0tXG5uZXQvc21jL3NtY19jZGMuYy0zMzgtXHRzbWNfY3Vyc19jb3B5KFx1MDAyNmNvbnNfb2xkLCBcdTAwMjZjb25uLVx1MDAzZWxvY2FsX3J4X2N0cmwuY29ucywgY29ubik7XG5uZXQvc21jL3NtY19jZGMuYzozMzk6XHRzbWNfY2RjX21zZ190b19ob3N0KFx1MDAyNmNvbm4tXHUwMDNlbG9jYWxfcnhfY3RybCwgY2RjLCBjb25uKTtcbm5ldC9zbWMvc21jX2NkYy5jLTM0MC1cbi0tXG5uZXQvc21jL3NtY19jZGMuaD0yNzA9c3RhdGljIGlubGluZSB2b2lkIHNtY2RfY2RjX21zZ190b19ob3N0KHN0cnVjdCBzbWNfaG9zdF9jZGNfbXNnICpsb2NhbCxcbi0tXG5uZXQvc21jL3NtY19jZGMuaC0yOTItXG5uZXQvc21jL3NtY19jZGMuaDoyOTM6c3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLFxubmV0L3NtYy9zbWNfY2RjLmgtMjk0LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBzbWNfY2RjX21zZyAqcGVlcixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzY0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgT3JpZ2luIG9mIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBmdW5jdGlvbiwgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYC4gVGhlIGNvZGViYXNlIHRlbGxzIG1lIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgd2l0aGluIGBuZXQvc21jL3NtY19jZGMuY2AuIFRoZSBmaXJzdCB0aGluZyBJIGFsd2F5cyBkbyBpbiB0aGVzZSBzaXR1YXRpb25zIGlzIGVzdGFibGlzaCBzY29wZS4gSSBqdXN0IHZlcmlmaWVkIHRoYXQgaXQmIzM5O3MgYSBgc3RhdGljYCBmdW5jdGlvbiwgd2hpY2ggc2lnbmlmaWNhbnRseSBuYXJyb3dzIGRvd24gd2hlcmUgSSBuZWVkIHRvIGxvb2sgZm9yIGNhbGxzLiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgc3RyYWlnaHRmb3J3YXJkOiBJIG5lZWQgdG8gcGlucG9pbnQgZXZlcnl3aGVyZSB0aGlzIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgaXMgYWN0dWFsbHkgKmNhbGxlZCogd2l0aGluIHRoZSBjb2RlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBzYW1lIHRyYW5zbGF0aW9uIHVuaXQuIFRoaXMgc2hvdWxkIGJlIGEgcHJldHR5IHF1aWNrIHRhc2sgd2l0aCBhIGdvb2QgY3Jvc3MtcmVmZXJlbmNpbmcgdG9vbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2NkY19tc2dfcmVjdl9hY3Rpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jZGMuYz0zMDg9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfdmFsaWRhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjLFxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTMyOS1cbm5ldC9zbWMvc21jX2NkYy5jOjMzMDpzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcbm5ldC9zbWMvc21jX2NkYy5jLTMzMS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcbi0tXG5uZXQvc21jL3NtY19jZGMuYz00Mjc9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMpXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNDMwLVx0YmhfbG9ja19zb2NrKFx1MDAyNnNtYy1cdTAwM2Vzayk7XG5uZXQvc21jL3NtY19jZGMuYzo0MzE6XHRzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzbWMsIGNkYyk7XG5uZXQvc21jL3NtY19jZGMuYy00MzItXHRiaF91bmxvY2tfc29jayhcdTAwMjZzbWMtXHUwMDNlc2spO1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtMjktLyogY2FsbGJhY2sgaW1wbGVtZW50YXRpb24gdG8gd2FrZXVwIGNvbnN1bWVycyBibG9ja2VkIHdpdGggc21jX3J4X3dhaXQoKS5cbm5ldC9zbWMvc21jX3J4LmM6MzA6ICogaW5kaXJlY3RseSBjYWxsZWQgYnkgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKS5cbm5ldC9zbWMvc21jX3J4LmMtMzEtICovXG4tLVxubmV0L3NtYy9zbWNfcnguYz0zNTI9aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4tLVxubmV0L3NtYy9zbWNfcnguYy0zOTgtXHRcdGlmIChzay1cdTAwM2Vza19zaHV0ZG93biBcdTAwMjYgUkNWX1NIVVRET1dOKSB7XG5uZXQvc21jL3NtY19yeC5jOjM5OTpcdFx0XHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cdFx0XHQgKiBhYm92ZSBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZSgpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NzEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqVHJhY2luZyB0aGUgTWVzc2FnZSBSZWNlcHRpb24gUGF0aCoqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGBzbWNfY2RjX21zZ19yZWN2YC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgbWVzc2FnZSBoYW5kbGluZyBzdGFydHMsIGJ1dCB3aGVyZSBkb2VzIGl0ICpiZWdpbio/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGNvbnRleHQuIExldCYjMzk7cyB0cmFjZSBiYWNrIGZyb20gYHNtY19jZGNfbXNnX3JlY3ZgIGFuZCBzZWUgd2hlcmUgaXQmIzM5O3MgYmVpbmcgaW52b2tlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVyIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIG1lc3NhZ2UgcHJvY2Vzc2luZyBmbG93IGFuZCBwb3RlbnRpYWwgaXNzdWVzLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHNlZS4uLiBhIHF1aWNrIGNyb3NzLXJlZmVyZW5jZSBzaG91bGQgZG8gdGhlIHRyaWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfY2RjX21zZ19yZWN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY2RjLmM9MzA4PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3ZhbGlkYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYyxcbi0tXG5uZXQvc21jL3NtY19jZGMuYy0zMjktXG5uZXQvc21jL3NtY19jZGMuYzozMzA6c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsXG5uZXQvc21jL3NtY19jZGMuYy0zMzEtXHRcdFx0XHQgICAgc3RydWN0IHNtY19jZGNfbXNnICpjZGMpXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNDI2LS8qIGNhbGxlZCB1bmRlciB0YXNrbGV0IGNvbnRleHQgKi9cbm5ldC9zbWMvc21jX2NkYy5jOjQyNzpzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2KHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcbm5ldC9zbWMvc21jX2NkYy5jLTQyOC17XG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNDMwLVx0YmhfbG9ja19zb2NrKFx1MDAyNnNtYy1cdTAwM2Vzayk7XG5uZXQvc21jL3NtY19jZGMuYzo0MzE6XHRzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzbWMsIGNkYyk7XG5uZXQvc21jL3NtY19jZGMuYy00MzItXHRiaF91bmxvY2tfc29jayhcdTAwMjZzbWMtXHUwMDNlc2spO1xuLS1cbm5ldC9zbWMvc21jX2NkYy5jPTQ0Mj1zdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTQ1NS1cdHNtYyA9IGNvbnRhaW5lcl9vZihjb25uLCBzdHJ1Y3Qgc21jX3NvY2ssIGNvbm4pO1xubmV0L3NtYy9zbWNfY2RjLmM6NDU2Olx0c21jX2NkY19tc2dfcmVjdihzbWMsIChzdHJ1Y3Qgc21jX2NkY19tc2cgKilcdTAwMjZjZGMpO1xubmV0L3NtYy9zbWNfY2RjLmMtNDU3LX1cbi0tXG5uZXQvc21jL3NtY19jZGMuYz00Njk9c3RhdGljIHZvaWQgc21jX2NkY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1Zilcbi0tXG5uZXQvc21jL3NtY19jZGMuYy01MDItXG5uZXQvc21jL3NtY19jZGMuYzo1MDM6XHRzbWNfY2RjX21zZ19yZWN2KHNtYywgY2RjKTtcbm5ldC9zbWMvc21jX2NkYy5jLTUwNC1vdXQ6XG4tLVxubmV0L3NtYy9zbWNfcnguYy0yOS0vKiBjYWxsYmFjayBpbXBsZW1lbnRhdGlvbiB0byB3YWtldXAgY29uc3VtZXJzIGJsb2NrZWQgd2l0aCBzbWNfcnhfd2FpdCgpLlxubmV0L3NtYy9zbWNfcnguYzozMDogKiBpbmRpcmVjdGx5IGNhbGxlZCBieSBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpLlxubmV0L3NtYy9zbWNfcnguYy0zMS0gKi9cbi0tXG5uZXQvc21jL3NtY19yeC5jPTM1Mj1pbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcbi0tXG5uZXQvc21jL3NtY19yeC5jLTM5OC1cdFx0aWYgKHNrLVx1MDAzZXNrX3NodXRkb3duIFx1MDAyNiBSQ1ZfU0hVVERPV04pIHtcbm5ldC9zbWMvc21jX3J4LmM6Mzk5Olx0XHRcdC8qIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkgY291bGQgaGF2ZSBydW4gYWZ0ZXJcbm5ldC9zbWMvc21jX3J4LmMtNDAwLVx0XHRcdCAqIGFib3ZlIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU4NwoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBDREMgTWVzc2FnZSBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgQ0RDIG1lc3NhZ2UgcmVjZXB0aW9uIGxvZ2ljLiBNeSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgc21jZF9jZGNfcnhfdHNrbGV0YCBhbmQgYHNtY19jZGNfcnhfaGFuZGxlcmAgYXJlIHRoZSBlbnRyeSBwb2ludHMuIEdvdCBpdC4gQWxzbywgSSBzZWUgYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYCBhcmUgYmVpbmcgZGlyZWN0bHkgbW9kaWZpZWQsIHdoaWNoIGFyZSBpbXBvcnRhbnQuCgpUaGVyZWZvcmUsIHRoZSBrZXkgc3ltYm9scyB0aGF0IHdhcnJhbnQgbXkgaW1tZWRpYXRlIGF0dGVudGlvbiBhcmU6CgoqICAgYHNtY19yeF9yZWN2bXNnYAoqICAgYHNtY190eF9zZW5kbXNnYAoqICAgYHNtY2RfY2RjX3J4X3Rza2xldGAKKiAgIGBzbWNfY2RjX3J4X2hhbmRsZXJgCgpIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2guIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UgYWJvdXQgaG93IGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYCBhcmUgdXRpbGl6ZWQuIFNpbmNlIHRoZXkmIzM5O3JlIHN0YXRpYywgYXJlIHRoZXkgYWN0dWFsbHkgZXhwb3J0ZWQgc29tZWhvdywgb3IgYXJlIHRoZXkgcGFzc2VkIGFzIGNhbGxiYWNrcyBpbnRlcm5hbGx5PyBUaGF0JiMzOTtzIGEgY3J1Y2lhbCBkaXN0aW5jdGlvbi4gSSBuZWVkIHRvIHRyYWNlIHRoZWlyIHVzYWdlIHRvIGZ1bGx5IGdyYXNwIHRoZWlyIHJvbGUuIE9rYXksIHRpbWUgdG8gc2VlIHdoZXJlIHRoZXNlIGFyZSB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNkX2NkY19yeF90c2tsZXR8c21jX2NkY19yeF9oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY2RjLmM9NDI3PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3Yoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTQ0MS0gKi9cbm5ldC9zbWMvc21jX2NkYy5jOjQ0MjpzdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxubmV0L3NtYy9zbWNfY2RjLmMtNDQzLXtcbi0tXG5uZXQvc21jL3NtY19jZGMuYz00NjI9dm9pZCBzbWNkX2NkY19yeF9pbml0KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NkYy5jLTQ2My17XG5uZXQvc21jL3NtY19jZGMuYzo0NjQ6XHR0YXNrbGV0X3NldHVwKFx1MDAyNmNvbm4tXHUwMDNlcnhfdHNrbGV0LCBzbWNkX2NkY19yeF90c2tsZXQpO1xubmV0L3NtYy9zbWNfY2RjLmMtNDY1LX1cbi0tXG5uZXQvc21jL3NtY19jZGMuYy00NjgtXG5uZXQvc21jL3NtY19jZGMuYzo0Njk6c3RhdGljIHZvaWQgc21jX2NkY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1Zilcbm5ldC9zbWMvc21jX2NkYy5jLTQ3MC17XG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNTA3LVxubmV0L3NtYy9zbWNfY2RjLmM6NTA4OnN0YXRpYyBzdHJ1Y3Qgc21jX3dyX3J4X2hhbmRsZXIgc21jX2NkY19yeF9oYW5kbGVyc1tdID0ge1xubmV0L3NtYy9zbWNfY2RjLmMtNTA5LVx0e1xubmV0L3NtYy9zbWNfY2RjLmM6NTEwOlx0XHQuaGFuZGxlclx0PSBzbWNfY2RjX3J4X2hhbmRsZXIsXG5uZXQvc21jL3NtY19jZGMuYy01MTEtXHRcdC50eXBlXHRcdD0gU01DX0NEQ19NU0dfVFlQRVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jPTUxOD1pbnQgX19pbml0IHNtY19jZGNfaW5pdCh2b2lkKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTUyMi1cbm5ldC9zbWMvc21jX2NkYy5jOjUyMzpcdGZvciAoaGFuZGxlciA9IHNtY19jZGNfcnhfaGFuZGxlcnM7IGhhbmRsZXItXHUwMDNlaGFuZGxlcjsgaGFuZGxlciYjNDM7JiM0MzspIHtcbm5ldC9zbWMvc21jX2NkYy5jLTUyNC1cdFx0SU5JVF9ITElTVF9OT0RFKFx1MDAyNmhhbmRsZXItXHUwMDNlbGlzdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MDUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNjb3BlIG9mIFRoZXNlIENhbGxiYWNrcyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGVzZSBjYWxsYmFja3MgYW5kIGltbWVkaWF0ZWx5IG5vdGljaW5nIHNvbWV0aGluZyDigJMgdGhleSYjMzk7cmUgc3RhdGljYWxseSBkZWZpbmVkLCB3aGljaCBpcyBhIGNvbW1vbiBwYXR0ZXJuLiBUaGlzIG1ha2VzIHRoZW0gaW50ZXJuYWwgYW5kIGxpbWl0cyB0aGVpciB2aXNpYmlsaXR5LCB3aGljaCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpbiB0aGlzIGNvbnRleHQuIEkgc2VlIGBzbWNkX2NkY19yeF9pbml0YCBpcyBjYWxsZWQsIGFuZCB0aGF04oCZcyAqbm90KiBzdGF0aWMsIHdoaWNoIGdpdmVzIG1lIHBhdXNlLiBUaGF0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLgoKQnV0IGhvbGQgb24sIHRoZSByZWFsIGVudHJ5IHBvaW50cyBmb3IgcmVjZWl2aW5nIGFuZCBzZW5kaW5nIGRhdGEgc2VlbSB0byBiZSBgc21jX3J4X3JlY3Ztc2dgIGFuZCBgc21jX3R4X3NlbmRtc2dgLiBOb3csIGFyZSAqdGhvc2UqIHN0YXRpYyB0b28/IFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uLiBJZiB0aGV5JiMzOTtyZSBub3Qgc3RhdGljLCB0aGF0IGNoYW5nZXMgdGhlIHdob2xlIGdhbWUuIFRoZXkgY291bGQgYmUgcGFydCBvZiB0aGUgc29ja2V0IG9wZXJhdGlvbnMsIG9yIHRoZXkgbWF5IGJlIGV4cG9ydGVkLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hldGhlciB0aG9zZSBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIG9yIGFyZSB0aGV5IHBhcnQgb2YgdGhlIGRlZmluZWQgc29ja2V0IG9wZXJhdGlvbnMuIExldCYjMzk7cyBnZXQgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byBjb25maXJtIHdoZXJlIHRoZXkgYmVsb25nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfcnhfcmVjdm1zZ3xzbWNfdHhfc2VuZG1zZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvYWZfc21jLmM9Mjc5Nj1pbnQgc21jX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjgyNS1cdH0gZWxzZSB7XG5uZXQvc21jL2FmX3NtYy5jOjI4MjY6XHRcdHJjID0gc21jX3R4X3NlbmRtc2coc21jLCBtc2csIGxlbik7XG5uZXQvc21jL2FmX3NtYy5jLTI4MjctXHRcdFNNQ19TVEFUX1RYX1BBWUxPQUQoc21jLCBsZW4sIHJjKTtcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTI4MzQ9aW50IHNtY19yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTI4NjEtXHRcdG1zZy1cdTAwM2Vtc2dfbmFtZWxlbiA9IDA7XG5uZXQvc21jL2FmX3NtYy5jOjI4NjI6XHRcdHJjID0gc21jX3J4X3JlY3Ztc2coc21jLCBtc2csIE5VTEwsIGxlbiwgZmxhZ3MpO1xubmV0L3NtYy9hZl9zbWMuYy0yODYzLVx0XHRTTUNfU1RBVF9SWF9QQVlMT0FEKHNtYywgcmMsIHJjKTtcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTMyODM9c3NpemVfdCBzbWNfc3BsaWNlX3JlYWQoc3RydWN0IHNvY2tldCAqc29jaywgbG9mZl90ICpwcG9zLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMzMyMC1cdFx0U01DX1NUQVRfSU5DKHNtYywgc3BsaWNlX2NudCk7XG5uZXQvc21jL2FmX3NtYy5jOjMzMjE6XHRcdHJjID0gc21jX3J4X3JlY3Ztc2coc21jLCBOVUxMLCBwaXBlLCBsZW4sIGZsYWdzKTtcbm5ldC9zbWMvYWZfc21jLmMtMzMyMi1cdH1cbi0tXG5uZXQvc21jL3NtY19yeC5jPTI4OT1zdGF0aWMgaW50IHNtY19yeF9yZWN2X3VyZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVuLFxuLS1cbm5ldC9zbWMvc21jX3J4LmMtMzMyLVxubmV0L3NtYy9zbWNfcnguYzozMzM6c3RhdGljIGJvb2wgc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHNpemVfdCBwZWVrZWQpXG5uZXQvc21jL3NtY19yeC5jLTMzNC17XG4tLVxubmV0L3NtYy9zbWNfcnguYy0zNDQtXG5uZXQvc21jL3NtY19yeC5jOjM0NTovKiBzbWNfcnhfcmVjdm1zZyAtIHJlY2VpdmUgZGF0YSBmcm9tIFJNQkVcbm5ldC9zbWMvc21jX3J4LmMtMzQ2LSAqIEBtc2c6XHRjb3B5IGRhdGEgdG8gcmVjZWl2ZSBidWZmZXJcbi0tXG5uZXQvc21jL3NtY19yeC5jLTM1MS0gKi9cbm5ldC9zbWMvc21jX3J4LmM6MzUyOmludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxubmV0L3NtYy9zbWNfcnguYy0zNTMtXHRcdCAgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsIHNpemVfdCBsZW4sIGludCBmbGFncylcbi0tXG5uZXQvc21jL3NtY19yeC5jLTM5NC1cbm5ldC9zbWMvc21jX3J4LmM6Mzk1Olx0XHRpZiAoc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoc21jLCBwZWVrZWRfYnl0ZXMpKVxubmV0L3NtYy9zbWNfcnguYy0zOTYtXHRcdFx0Z290byBjb3B5O1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtMzk5LVx0XHRcdC8qIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkgY291bGQgaGF2ZSBydW4gYWZ0ZXJcbm5ldC9zbWMvc21jX3J4LmM6NDAwOlx0XHRcdCAqIGFib3ZlIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKClcbm5ldC9zbWMvc21jX3J4LmMtNDAxLVx0XHRcdCAqL1xubmV0L3NtYy9zbWNfcnguYzo0MDI6XHRcdFx0aWYgKHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHNtYywgcGVla2VkX2J5dGVzKSlcbm5ldC9zbWMvc21jX3J4LmMtNDAzLVx0XHRcdFx0Z290byBjb3B5O1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtNTI2LVxubmV0L3NtYy9zbWNfcnguYzo1Mjc6XHRcdHRyYWNlX3NtY19yeF9yZWN2bXNnKHNtYywgY29weWxlbik7XG5uZXQvc21jL3NtY19yeC5jLTUyOC1cdH0gd2hpbGUgKHJlYWRfcmVtYWluaW5nKTtcbi0tXG5uZXQvc21jL3NtY19yeC5oPTIwPXZvaWQgc21jX3J4X2luaXQoc3RydWN0IHNtY19zb2NrICpzbWMpO1xubmV0L3NtYy9zbWNfcnguaC0yMS1cbm5ldC9zbWMvc21jX3J4Lmg6MjI6aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXG5uZXQvc21jL3NtY19yeC5oLTIzLVx0XHQgICBzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpwaXBlLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MpO1xuLS1cbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuYz02PUVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChzbWNfc3dpdGNoX3RvX2ZhbGxiYWNrKTtcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuYzo3OkVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChzbWNfdHhfc2VuZG1zZyk7XG5uZXQvc21jL3NtY190cmFjZXBvaW50LmM6ODpFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0woc21jX3J4X3JlY3Ztc2cpO1xubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5jLTktRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKHNtY3JfbGlua19kb3duKTtcbi0tXG5uZXQvc21jL3NtY190cmFjZXBvaW50Lmg9NDQ9REVDTEFSRV9FVkVOVF9DTEFTUyhzbWNfbXNnX2V2ZW50LFxuLS1cbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuaC03MC1cbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuaDo3MTpERUZJTkVfRVZFTlQoc21jX21zZ19ldmVudCwgc21jX3R4X3NlbmRtc2csXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmgtNzItXG4tLVxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oLTc3LVxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oOjc4OkRFRklORV9FVkVOVChzbWNfbXNnX2V2ZW50LCBzbWNfcnhfcmVjdm1zZyxcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuaC03OS1cbi0tXG5uZXQvc21jL3NtY190eC5jPTE1OT1zdGF0aWMgYm9vbCBzbWNfdHhfc2hvdWxkX2Nvcmsoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZylcbi0tXG5uZXQvc21jL3NtY190eC5jLTE4MC0gKi9cbm5ldC9zbWMvc21jX3R4LmM6MTgxOmludCBzbWNfdHhfc2VuZG1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxubmV0L3NtYy9zbWNfdHguYy0xODIte1xuLS1cbm5ldC9zbWMvc21jX3R4LmMtMjk5LVxubmV0L3NtYy9zbWNfdHguYzozMDA6XHRcdHRyYWNlX3NtY190eF9zZW5kbXNnKHNtYywgY29weWxlbik7XG5uZXQvc21jL3NtY190eC5jLTMwMS1cdH0gLyogd2hpbGUgKG1zZ19kYXRhX2xlZnQobXNnKSkgKi9cbi0tXG5uZXQvc21jL3NtY190eC5oPTMyPXZvaWQgc21jX3R4X2luaXQoc3RydWN0IHNtY19zb2NrICpzbWMpO1xubmV0L3NtYy9zbWNfdHguaDozMzppbnQgc21jX3R4X3NlbmRtc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbik7XG5uZXQvc21jL3NtY190eC5oLTM0LWludCBzbWNfdHhfc25kYnVmX25vbmVtcHR5KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzY2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU01DIENEQyBSZWNlaXZlciBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBTTUMgQ0RDIHJlY2VpdmVyIHBhdGguIFRoZSBjb3JlIHNvY2tldCBvcGVyYXRpb25zIGZvciBgQUZfU01DYCwgYHNtY19yZWN2bXNnYCBhbmQgYHNtY19zZW5kbXNnYCwgYXJlIHRoZSBvbmVzIEkgc2hvdWxkIGJlIGZvY3VzaW5nIG9uLiBUaGV5IGNhbGwgYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYCwgc28gdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGFuYWx5c2lzLgoKTm93LCBJJiMzOTttIHRyeWluZyB0byB0cmFjZSB0aGUgbWVzc2FnZSBoYW5kbGluZy4gSGVyZSwgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCBsb29rcyBsaWtlIHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzIGNhbGxpbmcgYHNtY19jZGNfbXNnX3RvX2hvc3RgLCB3aGljaCBpcyBjcnVjaWFsIGJlY2F1c2UgaXQgdGhlbiB1dGlsaXplcyB0aG9zZSBtb2RpZmllZCBpbmxpbmUgZnVuY3Rpb25zLiBUaGUgcHJvYmxlbSBpcywgaXQmIzM5O3Mgc3RhdGljISBBbmQgc28gaXMgYHNtY19jZGNfbXNnX3JlY3ZgLCBhbmQgdGhlIHJlY2VpdmVyIHRhc2tsZXQgZnVuY3Rpb24sIGBzbWNkX2NkY19yeF90c2tsZXRgLCBhbmQgdGhlIGhhbmRsZXIsIGBzbWNfY2RjX3J4X2hhbmRsZXJgLiBUaGlzIGlzIGEgaHVyZGxlLCBhcmUgdGhlcmUgYW55IG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIGhlcmU/IEkgbmVlZCB0byBmaW5kIHRoZSBub24tc3RhdGljIHBvaW50IG9mIGVudHJ5IGluIHRoaXMgQ0RDIHBhdGggdGhhdCBoYW5kbGVzIHJlY2VwdGlvbi4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIGNoZWNrIGBuZXQvc21jL3NtY19jZGMuY2AgYW5kIGh1bnQgZm9yIHRoYXQgZW50cnkgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O152b2lkICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTIwOT1pbnQgc21jX2NkY19nZXRfc2xvdF9hbmRfbXNnX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTIyNy1cbm5ldC9zbWMvc21jX2NkYy5jOjIyODp2b2lkIHNtY19jZGNfd2FpdF9wZW5kX3R4X3dyKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NkYy5jLTIyOS17XG4tLVxubmV0L3NtYy9zbWNfY2RjLmM9NDQyPXN0YXRpYyB2b2lkIHNtY2RfY2RjX3J4X3Rza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNDYxLSAqL1xubmV0L3NtYy9zbWNfY2RjLmM6NDYyOnZvaWQgc21jZF9jZGNfcnhfaW5pdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG5uZXQvc21jL3NtY19jZGMuYy00NjMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTUyOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENEQyBNZXNzYWdlIEhhbmRsaW5nIEZsb3cqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3Qgb2ZmLCBgc21jX2NkY19nZXRfc2xvdF9hbmRfbXNnX3NlbmRgIGlzICpub3QqIHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBOb3csIHdoYXQgYWJvdXQgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYD8gQWgsIHRoYXQgb25lICppcyogc3RhdGljLiBIbW0sIEkgbmVlZCBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBJIGNhbiB6ZXJvIGluIG9uIGZvciB0aGUgUlggcGF0aCBvZiB0aGVzZSBDREMgbWVzc2FnZXMsIGEgZ29vZCBmb2N1cyBzeW1ib2wuIE1heWJlLCBqdXN0IG1heWJlLCBgc21jX2NkY19yeF9oYW5kbGVyYCBpcyByZWdpc3RlcmVkIGFzIHRoZSBhY3R1YWwgaGFuZGxlciBmb3IgaW5jb21pbmcgbWVzc2FnZXMuIFRoYXQmIzM5O3MgYSBzdHJvbmcgcG9zc2liaWxpdHkuIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIGBzbWNfY2RjX3J4X2hhbmRsZXJzYCBpcyB1c2VkLiBBaCwgaXQgbG9va3MgbGlrZSBgc21jX2NkY19pbml0YCBoYW5kbGVzIHRoZSByZWdpc3RyYXRpb24sIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIGV4cGVjdGVkLiBOb3cgSSYjMzk7bSB0aGlua2luZyB0aGUgYWN0dWFsIGVudHJ5IHBvaW50IGlzIGxpa2VseSBpbiBgc21jX3dyLmNgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB3aGVyZSB0aGUgaGFyZHdhcmUgaW50ZXJydXB0cyB3b3VsZCBiZSBoYW5kbGVkLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgc21jX3dyX3J4X3Byb2Nlc3NfY3Flc2AsIHRoYXQgc2VlbXMgbGlrZSB0aGUgbmV4dCBsb2dpY2FsIHBsYWNlIHRvIGxvb2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY193cl9yeF9wcm9jZXNzX2NxZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY193ci5jPTQzMD1zdGF0aWMgaW5saW5lIHZvaWQgc21jX3dyX3J4X2RlbXVsdGlwbGV4KHN0cnVjdCBpYl93YyAqd2MpXG4tLVxubmV0L3NtYy9zbWNfd3IuYy00NDgtXG5uZXQvc21jL3NtY193ci5jOjQ0OTpzdGF0aWMgaW5saW5lIHZvaWQgc21jX3dyX3J4X3Byb2Nlc3NfY3FlcyhzdHJ1Y3QgaWJfd2Mgd2NbXSwgaW50IG51bSlcbm5ldC9zbWMvc21jX3dyLmMtNDUwLXtcbi0tXG5uZXQvc21jL3NtY193ci5jPTQ3OT1zdGF0aWMgdm9pZCBzbWNfd3JfcnhfdGFza2xldF9mbihzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxubmV0L3NtYy9zbWNfd3IuYy00OTctXHRcdFx0YnJlYWs7XG5uZXQvc21jL3NtY193ci5jOjQ5ODpcdFx0c21jX3dyX3J4X3Byb2Nlc3NfY3FlcyhcdTAwMjZ3Y1swXSwgcmMpO1xubmV0L3NtYy9zbWNfd3IuYy00OTktXHR9IHdoaWxlIChyYyBcdTAwM2UgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjE4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ0RDIFJlY2VpdmUgUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgQ0RDIHJlY2VpdmUgcGF0aC4gYHNtY193cl9yeF90YXNrbGV0X2ZuYCwgdGhhdCYjMzk7cyB0aGUgY29yZSB0YXNrbGV0IGZ1bmN0aW9uLCByaWdodD8gTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IGlmIGl0JiMzOTtzIGdvdCBzdGF0aWMgbGlua2FnZS4uLiBZZXAsIHN0YXRpYy4gR29vZC4gTm93LCB3aGF0IGFib3V0IGBzbWNfd3JfcnhfZGVtdWx0aXBsZXhgPyBBaCwgdGhhdCYjMzk7cyBzdGF0aWMgaW5saW5lLiBJbnRlcmVzdGluZy4gU28sIHRoZSBwaWN0dXJlIEkmIzM5O20gZ2V0dGluZyBpcyB0aGF0IHRoZSBDREMgcmVjZWl2ZSBwYXRoIGlzICpsYXJnZWx5KiBjb21wb3NlZCBvZiB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zLCBjYWxsZWQgZnJvbSB3aXRoaW4gZWl0aGVyIHRhc2tsZXRzIG9yIGludGVycnVwdCBoYW5kbGVycy4gVGhhdCByZWluZm9yY2VzIG15IGluaXRpYWwgaHVuY2ggYWJvdXQgaG93IHRoZSBoYXJkd2FyZSBpbnRlcmFjdHMgd2l0aCB0aGUgc29mdHdhcmUuCgpOb3csIHdoZXJlIGFyZSB0aGUga2V5IHBvaW50cyBvZiBpbnRlcmFjdGlvbiwgd2hlcmUgdGhlIGRhdGEgZmxvdyBpcyBsZXNzIGVuY2Fwc3VsYXRlZD8gYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYCwgc2luY2UgdGhleSYjMzk7cmUgKm5vbiotc3RhdGljIGFuZCBkaXJlY3RseSBleHBvc2VkLCB0aG9zZSBzZWVtIGxpa2UgcHJpbWUgY2FuZGlkYXRlcyBmb3IgZGVlcGVyIGluc3BlY3Rpb24uIFRoZXkmIzM5O3JlIGxpa2VseSBlbnRyeSBwb2ludHMgb3IgY3J1Y2lhbCBkYXRhIG1hbmlwdWxhdGlvbiBwb2ludHMuIEFyZSB0aGVyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byBDREMgdGhhdCBtaWdodCBiZSByZWxldmFudD8gTGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGBzbWNfY2RjX2dldF9mcmVlX3Nsb3RgIC0gcHJvYmFibHkgcGxheXMgYSByb2xlIGluIGJ1ZmZlciBtYW5hZ2VtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfY2RjX2dldF9mcmVlX3Nsb3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jZGMuYz0yNj1zdGF0aWMgdm9pZCBzbWNfY2RjX3R4X2hhbmRsZXIoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKnBuZF9zbmQsXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNzItXG5uZXQvc21jL3NtY19jZGMuYzo3MzppbnQgc21jX2NkY19nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcbm5ldC9zbWMvc21jX2NkYy5jLTc0LVx0XHRcdCAgc3RydWN0IHNtY19saW5rICpsaW5rLFxuLS1cbm5ldC9zbWMvc21jX2NkYy5jPTE3ND1zdGF0aWMgaW50IHNtY3JfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtMTg1LVx0XHRyZXR1cm4gLUVOT0xJTks7XG5uZXQvc21jL3NtY19jZGMuYzoxODY6XHRyYyA9IHNtY19jZGNfZ2V0X2ZyZWVfc2xvdChjb25uLCBsaW5rLCBcdTAwMjZ3cl9idWYsIE5VTEwsIFx1MDAyNnBlbmQpO1xubmV0L3NtYy9zbWNfY2RjLmMtMTg3LVx0aWYgKHJjKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5oPTMwMz1zdHJ1Y3Qgc21jX2NkY190eF9wZW5kIHtcbi0tXG5uZXQvc21jL3NtY19jZGMuaC0zMDktXG5uZXQvc21jL3NtY19jZGMuaDozMTA6aW50IHNtY19jZGNfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXG5uZXQvc21jL3NtY19jZGMuaC0zMTEtXHRcdFx0ICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jPTEwOTU9c3RydWN0IHNtY19saW5rICpzbWNfc3dpdGNoX2Nvbm5zKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xMTQ5LVx0XHQvKiBwcmUtZmV0Y2ggYnVmZmVyIG91dHNpZGUgb2Ygc2VuZF9sb2NrLCBtaWdodCBzbGVlcCAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjExNTA6XHRcdHJjID0gc21jX2NkY19nZXRfZnJlZV9zbG90KGNvbm4sIHRvX2xuaywgXHUwMDI2d3JfYnVmLCBOVUxMLCBcdTAwMjZwZW5kKTtcbm5ldC9zbWMvc21jX2NvcmUuYy0xMTUxLVx0XHRpZiAocmMpXG4tLVxubmV0L3NtYy9zbWNfdHguYz01NjM9c3RhdGljIGludCBzbWNyX3R4X3NuZGJ1Zl9ub25lbXB0eShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG4tLVxubmV0L3NtYy9zbWNfdHguYy01NzMtXHRcdHJldHVybiAtRU5PTElOSztcbm5ldC9zbWMvc21jX3R4LmM6NTc0Olx0cmMgPSBzbWNfY2RjX2dldF9mcmVlX3Nsb3QoY29ubiwgbGluaywgXHUwMDI2d3JfYnVmLCBcdTAwMjZ3cl9yZG1hX2J1ZiwgXHUwMDI2cGVuZCk7XG5uZXQvc21jL3NtY190eC5jLTU3NS1cdGlmIChyYyBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMyNAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENEQyBNZXNzYWdlIEhhbmRsaW5nIGluIGBuZXQvc21jL3NtY19jZGMuY2AqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBmb2N1c2VkIG9uIENEQyBtZXNzYWdlIGhhbmRsaW5nIGFuZCBjdXJzb3IgYm91bmRzIGNoZWNraW5nIOKAkyBnb3QgaXQuIFRoYXQgbWVhbnMgYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYCBhcmUgdGhlIGtleSBub24tc3RhdGljIGZ1bmN0aW9ucyB0byBzY3J1dGluaXplLiBMZXQgbWUgc2VlLi4uYWgsIHllcywgYHNtY190eF9zZW5kbXNnYCBpcyB1cGRhdGVkIHRvIGluY29ycG9yYXRlIGEgY2hlY2sgb24gYHdyaXRlc3BhY2VgLiBUaGF0JiMzOTtzIGltcG9ydGFudDsgaXQmIzM5O3MgdXNpbmcgdGhlIHBlZXImIzM5O3Mgd2lyZS1jb250cm9sbGVkIGNvbnN1bWVyIGN1cnNvciB0byBkZXRlcm1pbmUgYXZhaWxhYmxlIHNwYWNlLiBBbmQgYHNtY19yeF9yZWN2bXNnYCBpcyBzaW1pbGFybHkgdXBkYXRlZCB0byBjaGVjayBgcmVhZGFibGVgLCB3aGljaCBpcyBkZXJpdmVkIGZyb20gdGhlIHBlZXImIzM5O3Mgd2lyZS1jb250cm9sbGVkIHByb2R1Y2VyIGN1cnNvci4gU28gYm90aCBvZiB0aG9zZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIGRpcmVjdGx5IG1vZGlmaWVkIHRvIGVuZm9yY2UgdGhlc2UgYm91bmRzLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGBuZXQvc21jL3NtY19jZGMuY2AgdGhhdCBhcmUgYWxzbyBpbnZvbHZlZCBpbiBoYW5kbGluZyBDREMgbWVzc2FnZXMuIEl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoIGFuZCB2ZXJpZnkgdGhhdCB3ZSYjMzk7dmUgY292ZXJlZCBhbGwgdGhlIHJlbGV2YW50IGVudHJ5IHBvaW50cy4gSSBuZWVkIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGNoYW5nZXMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVowLTlfXSYjNDM7IHNtY19jZGNfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY2RjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY2RjLmM9MjY9c3RhdGljIHZvaWQgc21jX2NkY190eF9oYW5kbGVyKHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICpwbmRfc25kLFxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTcyLVxubmV0L3NtYy9zbWNfY2RjLmM6NzM6aW50IHNtY19jZGNfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXG5uZXQvc21jL3NtY19jZGMuYy03NC1cdFx0XHQgIHN0cnVjdCBzbWNfbGluayAqbGluayxcbi0tXG5uZXQvc21jL3NtY19jZGMuYz05ND1zdGF0aWMgaW5saW5lIHZvaWQgc21jX2NkY19hZGRfcGVuZGluZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcbi0tXG5uZXQvc21jL3NtY19jZGMuYy0xMTEtXG5uZXQvc21jL3NtY19jZGMuYzoxMTI6aW50IHNtY19jZGNfbXNnX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxubmV0L3NtYy9zbWNfY2RjLmMtMTEzLVx0XHQgICAgIHN0cnVjdCBzbWNfd3JfYnVmICp3cl9idWYsXG4tLVxubmV0L3NtYy9zbWNfY2RjLmM9MTc0PXN0YXRpYyBpbnQgc21jcl9jZGNfZ2V0X3Nsb3RfYW5kX21zZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbi0tXG5uZXQvc21jL3NtY19jZGMuYy0yMDgtXG5uZXQvc21jL3NtY19jZGMuYzoyMDk6aW50IHNtY19jZGNfZ2V0X3Nsb3RfYW5kX21zZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NkYy5jLTIxMC17XG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtMjI3LVxubmV0L3NtYy9zbWNfY2RjLmM6MjI4OnZvaWQgc21jX2NkY193YWl0X3BlbmRfdHhfd3Ioc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxubmV0L3NtYy9zbWNfY2RjLmMtMjI5LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyMjYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMgQ0RDIE1lc3NhZ2UgRmxvdyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSB0aGF0IGBzbWNfY2RjX21zZ19zZW5kYCBhbmQgYHNtY19jZGNfZ2V0X3Nsb3RfYW5kX21zZ19zZW5kYCBhcmUgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHdoaWNoIGlzIHVzZWZ1bCBpbmZvcm1hdGlvbiB0byBrbm93IGltbWVkaWF0ZWx5LiBIb3dldmVyLCB0aGUgcGF0Y2ggaXMgbWFraW5nIGNoYW5nZXMgdG8gYHNtY19jZGNfY3Vyc29yX3RvX2hvc3RgLCBgc21jcl9jZGNfbXNnX3RvX2hvc3RgLCBhbmQgYHNtY2RfY2RjX21zZ190b19ob3N0YCwgYW5kIHRob3NlIGFyZSBhbGwgY2FsbGVkIGR1cmluZyB0aGUgUlggcGF0aCDigJMgdGhhdCYjMzk7cyB3aGVuIHdlJiMzOTtyZSByZWNlaXZpbmcgQ0RDIG1lc3NhZ2VzIGZyb20gdGhlIG90aGVyIHNpZGUuIE5vdywgdGhvc2UgUlggcGF0aCBmdW5jdGlvbnM/IE1vc3RseSBzdGF0aWMuIFRoYXQgbWFrZXMgdGhpbmdzIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcsIHJpZ2h0PwoKR2l2ZW4gdGhpcywgaXQgbG9va3MgbGlrZSBgc21jX3J4X3JlY3Ztc2dgIGFuZCBgc21jX3R4X3NlbmRtc2dgIGFyZSBnb2luZyB0byBiZSB0aGUgcHJpbWUgc3VzcGVjdHMsIHRoZSBzeW1ib2xzIHRoYXQgZGVzZXJ2ZSB0aGUgY2xvc2VzdCBpbnNwZWN0aW9uLiBUaGV5JiMzOTtyZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIGhlcmUuCgpCZWZvcmUgZGlnZ2luZyBkZWVwZXIsIEkgc2hvdWxkIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBlbHNlLiBMZXQgbWUgY2hlY2sgZm9yIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMuIE9rYXksIHdlJiMzOTt2ZSBnb3QgYFNNQ2AgaXRzZWxmLCB3aGljaCBpcyBhIGtleSBzdGFydGluZyBwb2ludC4gQXJlIHRoZXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHJlbGF0ZWQgdG8gdGhlIFNNQyBjb25maWd1cmF0aW9uPyBJJiMzOTtsbCBuZWVkIHRvIGNoYXNlIHRoYXQgZG93bi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNNQyQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NzU1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBTTUMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBTTUNgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBtYXAgb3V0IGl0cyBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgY29tcG9uZW50cywgbW9kdWxlcywgb3IgbGlicmFyaWVzIGBTTUNgIHJlbGllcyBvbiB0byBmdW5jdGlvbi4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNvbnNpZGVyLCBhdCBhIGhpZ2ggbGV2ZWwsIHRoZSB0eXBlcyBvZiBkZXBlbmRlbmNpZXMgSSBleHBlY3QgdG8gc2VlLiBBcmUgd2UgdGFsa2luZyBhYm91dCBjb3JlIGxpYnJhcmllcywgcGVyaGFwcyBzb21lIGRvbWFpbi1zcGVjaWZpYyB1dGlsaXRpZXMsIG1heWJlIGV2ZW4gZXh0ZXJuYWwgc2VydmljZXMgaXQgaW50ZXJmYWNlcyB3aXRoPwoKTGV0JiMzOTtzIHN0YXJ0IGZyb20gdGhlIHRvcCwgSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGFyZSBlc3NlbnRpYWwuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpyZXF1aXJlZCogZm9yIGBTTUNgIHRvIGV2ZW4gYm9vdCwgYW5kIHdoYXQgaXMgKm5pY2UtdG8taGF2ZSouIFVuZGVyc3RhbmRpbmcgdGhlIGNvcmUgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWwuIFRoZSBub24tZXNzZW50aWFsLCBvciBwb3RlbnRpYWxseSBvcHRpb25hbCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBpbnRlcmVzdGluZyAtIGtub3dpbmcgdGhvc2UgbWlnaHQgdW5sb2NrIG5ldyBwb3NzaWJpbGl0aWVzIGZvciBvcHRpbWl6YXRpb24uCgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBsYXllcnMgaGVyZS4gSXMgdGhpcyBhIGRlZXAgZGVwZW5kZW5jeSBncmFwaCwgb3IgcmVsYXRpdmVseSBzaGFsbG93PyBUaGUgbW9yZSBsYXllcnMsIHRoZSBtb3JlIGNvbXBsZXggdGhlIHN5c3RlbSBiZWNvbWVzLgoKRmluYWxseSwgSSBuZWVkIHRvIGxvb2sgcGFzdCBqdXN0IHRoZSBkaXJlY3QgZGVwZW5kZW5jaWVzLiBXaGF0IGFyZSB0aGUgaW5kaXJlY3QgaW1wbGljYXRpb25zIG9mIHRoZXNlIGRlcGVuZGVuY2llcz8gSG93IGRvZXMgYFNNQ2AgaW5mbHVlbmNlICpvdGhlciogY29tcG9uZW50cz8gV2hhdCByaXNrcyBvciBwb3RlbnRpYWwgYm90dGxlbmVja3MgZG9lcyBgU01DYCBpbnRyb2R1Y2U/IEkgbmVlZCB0aGUgZnVsbCBwaWN0dXJlIGhlcmUgdG8gbWFrZSBhbnkgcmVhbCBhc3Nlc3NtZW50IG9mIGl0cyBkZXNpZ24gb3IgcG90ZW50aWFsIGltcHJvdmVtZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU01DXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFNNQy1SIHByb3ZpZGVzIGEgXCYjMzQ7c29ja2V0cyBvdmVyIFJETUFcJiMzNDsgc29sdXRpb24gbWFraW5nIHVzZSBvZlxuICAgNzpcdFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcbiAgIDg6XHRcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cbiAgIDk6XHRcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xuICAxMDpcdFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxuICAxMTpcdFxuICAxMjpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIFNNQ19ESUFHXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBTTUNcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcbiAgMTk6XHRcdCAgc21jc3MuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MzU5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBUcmFpbiBvZiBUaG91Z2h0KioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlc2UgZGVwZW5kZW5jaWVzLiBJbml0aWFsbHksIEkgdGhvdWdodCBpdCB3YXMgZGVwZW5kZW50IG9uIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgLCBidXQgc29tZXRoaW5nIGZlbHQgb2ZmLiBMZXQgbWUgcmUtZXZhbHVhdGUuLi4gUmlnaHQsIGhvbGQgb24sIGl0JiMzOTtzIGp1c3QgYElORVRgIGFuZCBgSU5GSU5JQkFORGAuIEdvb2QsIGdvdCBpdC4gQmV0dGVyIGRvdWJsZSBjaGVjaywgdGhvdWdoLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4gSSYjMzk7bSBnb2luZyB0byB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGF0IGBuZXQvc21jL0tjb25maWdgIGZpbGUuIE5lZWQgdG8gZW5zdXJlIEkgaGF2ZW4mIzM5O3QgbWlzcmVhZCB0aGUgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTTUNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IERJQlNcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgU01DLVIgcHJvdmlkZXMgYSBcJiMzNDtzb2NrZXRzIG92ZXIgUkRNQVwmIzM0OyBzb2x1dGlvbiBtYWtpbmcgdXNlIG9mXG4gICA3Olx0XHQgIFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQgKFJvQ0UpIHRlY2hub2xvZ3kgdG8gdXBncmFkZVxuICAgODpcdFx0ICBBRl9JTkVUIFRDUCBjb25uZWN0aW9ucyB0cmFuc3BhcmVudGx5LlxuICAgOTpcdFx0ICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNNQy1SIHNvbHV0aW9uIGlzIGRlc2lnbmVkIGFzXG4gIDEwOlx0XHQgIGEgc2VwYXJhdGUgc29ja2V0IGZhbWlseSBTTUMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NzYwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQ29uZnVzaW9uIGFuZCBDbGFyaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGFuZCBJIHNlZSBgRElCU2AuIFdhaXQgYSBtaW51dGUsIGlzIHRoYXQgcmlnaHQ/IERpZCBJIG1pc3JlYWQgc29tZXRoaW5nPyBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGltbWVkaWF0ZWx5IGNoZWNrLCB0byBzZWUgaWYgaXQmIzM5O3MgYSB0eXBvIG9yIHNvbWV0aGluZy4gT2theSwgbGV0IG1lIHF1aWNrbHkgZ28gYmFjayBhbmQgdmVyaWZ5LiBBaCwgeWVzLCB0aGVyZSBpdCBpczogYGRlcGVuZHMgb24gSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkQgJmFtcDsmYW1wOyBESUJTYC4gUmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYERJQlNgIGlzIGluIHRoaXMgY29udGV4dC4gTGV0IG1lIG1ha2Ugc3VyZSBJJiMzOTttIHNlZWluZyB0aGlzIGNvcnJlY3RseS4gT2ssIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgYWN0dWFsIGZpbGUgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBSaWdodCwgc28gaXQmIzM5O3MgYGRlcGVuZHMgb24gSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkQgJmFtcDsmYW1wOyBESUJTYCBhbHJpZ2h0LCBsZXQgbWUgY2hlY2sgdGhlIGZpbGUgcHJvcGVybHkgYWdhaW4uIExldCBtZSBqdXN0IGdyZXAgZm9yIGBESUJTYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RElCUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWc9Mj1jb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG5uZXQvc21jL0tjb25maWc6NDpcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORCBcdTAwMjZcdTAwMjYgRElCU1xubmV0L3NtYy9LY29uZmlnLTUtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MTQ0CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbml0aWFsIEltcHJlc3Npb24gYW5kIFRlcm1pbm9sb2d5IFZlcmlmaWNhdGlvbioqCgomIzM0O1dhaXQsIGRpZCBJIGp1c3Qgc2VlIGBESUJTYD8gUmVhbGx5PyBIdWguIEludGVyZXN0aW5nLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMsIHRoYXQmIzM5O3Mgbm90IHNvbWV0aGluZyBJIHNlZSBldmVyeSBkYXksIGVzcGVjaWFsbHkgaW4gdGhpcyBjb250ZXh0LiBBbHJpZ2h0LCBob2xkIG9uLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGVuc3VyZSB0aGVyZSYjMzk7cyBubyBtaXNpbnRlcnByZXRhdGlvbiwgZXNwZWNpYWxseSB3aXRoIGFjcm9ueW1zIHRoYXQgY2FuIGhhdmUgbXVsdGlwbGUgbWVhbmluZ3MgZGVwZW5kaW5nIG9uIHRoZSBkb21haW4uIEkgbmVlZCB0byBlc3RhYmxpc2ggYSBiYXNlIGRlZmluaXRpb24gZm9yIGBESUJTYCBiZWZvcmUgSSBjYW4gcHJvcGVybHkgYXNzZXNzIGl0LiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBESUJTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9kaWJzL0tjb25maWc6Mjpjb25maWcgRElCU1xuZHJpdmVycy9kaWJzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0RpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9kaWJzL0tjb25maWctMTMtXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjQ1NgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6CgoqKkNoZWNraW5nIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBgRElCU2AsIHRoYXQmIzM5O3MgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nLiBHb3QgaXQuIE5vdywgZ2l2ZW4gdGhlIGNvbnRleHQsIEkmIzM5O20gZ29pbmcgdG8gYXNzdW1lIHRoaXMgaXMgcmVsYXRlZCB0byBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcgb3IgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIHdpdGhpbiBhIHNlcnZlciBvciBjbHVzdGVyLiBTbywgdGhlIG1haW4gaW50ZXJmYWNlcyB0aGF0IGNvbWUgdG8gbWluZCBhcmUgYElORVRgICh0eXBpY2FsIFRDUC9JUCksIGBJTkZJTklCQU5EYCAoaGlnaC1zcGVlZCBpbnRlcmNvbm5lY3QpLCBgRElCU2AsIGFuZCBgU01DYCAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykuIEl0JiMzOTtzIGEgcXVpY2sgbWVudGFsIGNoZWNrbGlzdCBvZiB0aGUga2V5IGNvbnRlbmRlcnMgZm9yIHRoaXMga2luZCBvZiB3b3JrLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgd2UmIzM5O3JlIGNvdmVyaW5nIGFsbCBvdXIgYmFzZXMuIGBJTkZJTklCQU5EYCBpcyBvZnRlbiBpbnRlZ3JhdGVkIHdpdGggYSBsb3Qgb2YgbGlicmFyaWVzLiBTbyBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGVuc3VyZSBpdCYjMzk7cyBkZXBlbmRlbmNpZXMgYXJlIGluIGNoZWNrLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgSU5GSU5JQkFORGAsIGFzIGl0IGZyZXF1ZW50bHkgcmVsaWVzIG9uIG90aGVyIHVuZGVybHlpbmcgZHJpdmVycyBvciBwcm90b2NvbHMuIEkmIzM5O2xsIHNlZSBpZiBJIG5lZWQgdG8gYWRqdXN0IG9yIGFkZCBhbnl0aGluZyBiYXNlZCBvbiB3aGF0IGl0IGRlcGVuZHMgb24uIFRoaXMgaXMgdG8gZW5zdXJlIHdlIGhhdmUgYSBnb29kIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5GSU5JQkFORCQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjI6bWVudWNvbmZpZyBJTkZJTklCQU5EXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SW5maW5pQmFuZCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2ODU4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkV4YW1pbmluZyBJbmZpbmliYW5kIERlcGVuZGVuY2llcyBpbiB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIHRoZSBJbmZpbmliYW5kIHN1YnN5c3RlbSB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCBhIHByZXR0eSBzdGFuZGFyZCBhcHByb2FjaCwgaXMgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGF0IG1lYW5zIEkgc2hvdWxkIG5hdmlnYXRlIHRvIHRoZSBgZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWdgIGZpbGUuIEkga25vdyB0aGF0JiMzOTtzIHdoZXJlIHRoZSByZWxldmFudCBgQ09ORklHX0lORklOSUJBTkRgIHNldHRpbmcsIGFuZCBpdHMgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZmVhdHVyZXMgb3IgaGFyZHdhcmUsIGlzIGRlZmluZWQuIEJ5IGV4YW1pbmluZyB0aGlzIGZpbGUsIEkmIzM5O2xsIGJlIGFibGUgdG8gcXVpY2tseSBkZXRlcm1pbmUgYWxsIHRoZSB1bmRlcmx5aW5nIHJlcXVpcmVtZW50cyBhbmQgY29uc3RyYWludHMgZm9yIGVuYWJsaW5nIEluZmluaWJhbmQgc3VwcG9ydCBpbiB0aGlzIGtlcm5lbCBidWlsZCwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkgbmVlZCB0byBkby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnVjb25maWcgSU5GSU5JQkFORFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7SW5maW5pQmFuZCBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgIDY6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAgNzpcdFx0ZGVwZW5kcyBvbiAhQUxQSEFcbiAgIDg6XHRcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuICAgOTpcdFx0c2VsZWN0IElSUV9QT0xMXG4gIDEwOlx0XHRzZWxlY3QgRElNTElCXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MjA3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgS2VybmVsIENvbmZpZ3VyYXRpb24gQ2hlY2tsaXN0KioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugc2V0dGluZyB1cCBgSU5GSU5JQkFORGAgaXMgZ29pbmcgdG8gbGVhbiBvbiBhIGZldyBrZXkgYnVpbGRpbmcgYmxvY2tzOiBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgTkVUYCwgYW5kIGBJTkVUYCwgYnV0IG5vdCBpZiB3ZSBhcmUgb24gYW4gYEFMUEhBYCBzeXN0ZW0sIHdoaWNoIEkgd291bGRuJiMzOTt0IGV4cGVjdCBhbnl3YXkuIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kLiBTbywgaWYgSSB3YW50IGBJTkZJTklCQU5EYCB3b3JraW5nIGFzIGV4cGVjdGVkLCBJJiMzOTtsbCBuZWVkIHRvIGVuc3VyZSB0aG9zZSBhcmUgYWxzbyBjb25maWd1cmVkIHByb3Blcmx5LiAKClNwZWNpZmljYWxseSwgYElORVRgLCBgSU5GSU5JQkFORGAsIGBESUJTYCwgYW5kIGBTTUNgIHNlZW0gdG8gYmUgdGhlIHByaW1hcnkgY29uZmlncyBpbnZvbHZlZCBoZXJlLiBOb3csIEkgc2hvdWxkIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlcXVpcmVtZW50cyBvZiBgRElCU2Agc2luY2UgaXQmIzM5O3Mgb25lIG9mIHRoZSBvcHRpb25zLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBkZXBlbmRzIG9uLi4uIEl0JiMzOTtzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGRlcGVuZGVuY3kgdHJlZSwgYW5kIEkmIzM5O2xsIG5lZWQgdG8gZGVsdmUgaW50byBgRElCU2AgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gb3JkZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0Y29uZmlnIERJQlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0RpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IG5cbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcbiAgIDc6XHRcdCAgdXNlcyBjb21tb24gcGh5c2ljYWwgKGludGVybmFsKSBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIGRpcmVjdCBhY2Nlc3NcbiAgIDg6XHRcdCAgaW50byBhIHJlbW90ZSBidWZmZXIuXG4gICA5Olx0XG4gIDEwOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBwcm92aWRlIHRoZSBhYnN0cmFjdGlvbiBsYXllciBiZXR3ZWVuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NjQ1CgkJCQkJCQlvdXRwdXQ6IDExNgoJCQkJCQkJdGhvdWdodHM6IDQ0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBUaGlzIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZm9yIGEgdGFyZ2V0ZWQgZnV6emluZyBhcHByb2FjaC4gSXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgY3J1Y2lhbCBib3VuZHMgY2hlY2tpbmcgd2l0aGluIHRoZSBTTUMgKFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMpIHByb3RvY29sLCBzcGVjaWZpY2FsbHkgYXJvdW5kIENEQyAoQ29ubmVjdGlvbiBEYXRhIENoYW5uZWwpIG1lc3NhZ2UgcHJvY2Vzc2luZy4gVGhlIGdvYWwgaXMgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGhhbmRsaW5nIHBvdGVudGlhbGx5IG1hbGljaW91cyBvciBjb3JydXB0ZWQgQ0RDIG1lc3NhZ2VzLiBUaGUga2V5IHRha2Vhd2F5IGlzIHRoYXQgdGhpcyB0b3VjaGVzIGNvcmUga2VybmVsIGxvZ2ljIGRpcmVjdGx5IGV4cG9zZWQgdmlhIHRoZSBTTUMgcHJvdG9jb2wuCgpGaXJzdCwgdGhlIGRlcGVuZGVuY2llcyBhcmUgc3RyYWlnaHRmb3J3YXJkOyB3ZSBvbmx5IG5lZWQgdG8gZW5hYmxlIGBTTUNgLCBgSU5GSU5JQkFORGAsIGFuZCBgRElCU2AgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGUgYW5hbHlzaXMgaW5kaWNhdGVzIHRoaXMgaXMgYSBwcm9taXNpbmcgYXJlYSBmb3IgZnV6emluZyAoV29ydGhGdXp6aW5nOiB0cnVlKS4gVGhlIGlkZW50aWZpZWQgZm9jdXMgc3ltYm9scyBhcmUgYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYC4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZXNlIGFyZSB0aGUgb25seSBub24tc3RhdGljIGZ1bmN0aW9ucyBkaXJlY3RseSBtb2RpZmllZC4gVGhlIG90aGVyIGNoYW5nZXMgYXJlIGlubGluZWQgb3Igc3RhdGljIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gQ0RDIG1lc3NhZ2UgY29udmVyc2lvbjogYHNtY19jZGNfY3Vyc29yX3RvX2hvc3RgLCBgc21jcl9jZGNfbXNnX3RvX2hvc3RgLCBgc21jZF9jZGNfbXNnX3RvX2hvc3RgLCBgc21jX2NkY19tc2dfdG9faG9zdGAsIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAsIGBzbWNfY2RjX21zZ19yZWN2YCwgYHNtY2RfY2RjX3J4X3Rza2xldGAsIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYC4gIEhvd2V2ZXIsIGJlY2F1c2Ugb2YgdGhlIGNhbGwgY2hhaW46ICBgc21jX3J4X3JlY3Ztc2dgIGFuZCBgc21jX3R4X3NlbmRtc2dgIGFyZSB0aGUgZW50cnkgcG9pbnRzLiBUaGVyZWZvcmUsIGZvY3VzaW5nIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZSB0d28gZnVuY3Rpb25zIGlzIGEgY29ycmVjdCBhbmQgc3VmZmljaWVudCBzdHJhdGVneS4KCkZpbmFsbHksIEkgdmVyaWZpZWQgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGVzZSBrZXkgZnVuY3Rpb25zOiB0aGV5IGFyZSBwYXJ0IG9mIHRoZSBzb2NrZXQgb3BlcmF0aW9ucyAoYHNtY19yZWN2bXNnYCBhbmQgYHNtY19zZW5kbXNnYCkgZm9yIHRoZSBgQUZfU01DYCBhZGRyZXNzIGZhbWlseS4gVGhpcyBtZWFucyBhbnkgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIGNhbiB0cmlnZ2VyIHRoZW0gYnkgY3JlYXRpbmcgYW4gYEFGX1NNQ2Agc29ja2V0IGFuZCBjYWxsaW5nIGByZWN2bXNnYCBvciBgc2VuZG1zZ2AuIFBlcmZlY3QhIFRoaXMgbWFrZXMgY3JhZnRpbmcgdGVzdCBjYXNlcyByZWxhdGl2ZWx5IGVhc3kuCgpPa2F5LCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGlzIHN0cmF0ZWd5LiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfcnhfcmVjdm1zZyYjMzQ7LAogICAgJiMzNDtzbWNfdHhfc2VuZG1zZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBTTUMgQ0RDIG1lc3NhZ2UgcHJvY2Vzc2luZyBhbmQgc29ja2V0IHJlY2VpdmUvdHJhbnNtaXQgcGF0aHMgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGhhbmRsaW5nIGZvcmdlZCBvciBtYWxmb3JtZWQgQ0RDIG1lc3NhZ2VzIGZyb20gYSBwZWVyLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgU01DIHByb3RvY29sIHN1YnN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U01DJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19yeF9yZWN2bXNnJiMzNDssCiAgICAmIzM0O3NtY190eF9zZW5kbXNnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIFNNQyBDREMgbWVzc2FnZSBwcm9jZXNzaW5nIGFuZCBzb2NrZXQgcmVjZWl2ZS90cmFuc21pdCBwYXRocyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIGludGVnZXIgb3ZlcmZsb3dzIHdoZW4gaGFuZGxpbmcgZm9yZ2VkIG9yIG1hbGZvcm1lZCBDREMgbWVzc2FnZXMgZnJvbSBhIHBlZXIuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGluIHRoZSBTTUMgcHJvdG9jb2wgc3Vic3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTA6MjguOTMyNTU3MzEzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE0OTQ3MzkwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jX3J4X3JlY3Ztc2dcIixcbiAgICBcInNtY190eF9zZW5kbXNnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gU01DIENEQyBtZXNzYWdlIHByb2Nlc3NpbmcgYW5kIHNvY2tldCByZWNlaXZlL3RyYW5zbWl0IHBhdGhzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBoYW5kbGluZyBmb3JnZWQgb3IgbWFsZm9ybWVkIENEQyBtZXNzYWdlcyBmcm9tIGEgcGVlci4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgaW4gdGhlIFNNQyBwcm90b2NvbCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjEwOjI4LjkzMjU2NDkzM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE0NDMyNzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTc0NjZkODI2MWIxMzAwNzQyOGM0NjU2ODc2MjY4MjIzZWFiY2Y4YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAwNToxMDoyNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jZGMuaCBiL25ldC9zbWMvc21jX2NkYy5oXFxuaW5kZXggNjk2Y2MxMWYyMzAzYjkuLmNhNzZlZjYzMDM1NjZjIDEwMDY0NFxcbi0tLSBhL25ldC9zbWMvc21jX2NkYy5oXFxuKysrIGIvbmV0L3NtYy9zbWNfY2RjLmhcXG5AQCAtMjIxLDcgKzIyMSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfaG9zdF9tc2dfdG9fY2RjKHN0cnVjdCBzbWNfY2RjX21zZyAqcGVlcixcXG4gXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfY2RjX2N1cnNvcl90b19ob3N0KHVuaW9uIHNtY19ob3N0X2N1cnNvciAqbG9jYWwsXFxuIFxcdFxcdFxcdFxcdFxcdCAgdW5pb24gc21jX2NkY19jdXJzb3IgKnBlZXIsXFxuLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxcbitcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcXG4rXFx0XFx0XFx0XFx0XFx0ICBpbnQgbWF4X2NvdW50KVxcbiB7XFxuIFxcdHVuaW9uIHNtY19ob3N0X2N1cnNvciB0ZW1wLCBvbGQ7XFxuIFxcdHVuaW9uIHNtY19jZGNfY3Vyc29yIG5ldDtcXG5AQCAtMjM1LDYgKzIzNiwxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc21jX2NkY19jdXJzb3JfdG9faG9zdCh1bmlvbiBzbWNfaG9zdF9jdXJzb3IgKmxvY2FsLFxcbiBcXHRpZiAoKG9sZC53cmFwID09IHRlbXAud3JhcCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIChvbGQuY291bnQgXFx1MDAzZSB0ZW1wLmNvdW50KSlcXG4gXFx0XFx0cmV0dXJuO1xcbitcXHQvKiBUaGUgcGVlciBwcm9kdWNlciBjdXJzb3IgaXMgd2lyZS1jb250cm9sbGVkIGFuZCBpcyBsYXRlciB1c2VkIGFzIGFcXG4rXFx0ICogcmF3IGluZGV4IGludG8gb3VyIFJNQiBieSB0aGUgdXJnZW50IHBhdGg7IGJvdW5kIGl0cyBjb3VudCB0byB0aGVcXG4rXFx0ICogUk1CLiAgbWF4X2NvdW50ID09IDAgbGVhdmVzIHRoZSBjb25zdW1lciBjdXJzb3IgdW5ib3VuZGVkIGhlcmU6IGl0XFxuK1xcdCAqIGluZGV4ZXMgdGhlIHBlZXIncyBSTUIgKGJvdW5kZWQgYnkgcGVlcl9ybWJlX3NpemUsIG5vdCBvdXJcXG4rXFx0ICogcm1iX2Rlc2MtXFx1MDAzZWxlbiksIHNvIGNsYW1waW5nIGl0IHRvIHJtYl9kZXNjLVxcdTAwM2VsZW4gd291bGQgdW5kZXItY3JlZGl0XFxuK1xcdCAqIHBlZXJfcm1iZV9zcGFjZSBhbmQgc3RhbGwgdHJhbnNtaXQgdG8gcGVlcnMgd2l0aCBhIGxhcmdlciBSTUIuXFxuK1xcdCAqL1xcbitcXHRpZiAobWF4X2NvdW50IFxcdTAwMjZcXHUwMDI2IHRlbXAuY291bnQgXFx1MDAzZSBtYXhfY291bnQpXFxuK1xcdFxcdHRlbXAuY291bnQgPSBtYXhfY291bnQ7XFxuIFxcdHNtY19jdXJzX2NvcHkobG9jYWwsIFxcdTAwMjZ0ZW1wLCBjb25uKTtcXG4gfVxcbiBcXG5AQCAtMjQ2LDggKzI1NiwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc21jcl9jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLFxcbiBcXHRsb2NhbC1cXHUwMDNlbGVuID0gcGVlci1cXHUwMDNlbGVuO1xcbiBcXHRsb2NhbC1cXHUwMDNlc2Vxbm8gPSBudG9ocyhwZWVyLVxcdTAwM2VzZXFubyk7XFxuIFxcdGxvY2FsLVxcdTAwM2V0b2tlbiA9IG50b2hsKHBlZXItXFx1MDAzZXRva2VuKTtcXG4tXFx0c21jX2NkY19jdXJzb3JfdG9faG9zdChcXHUwMDI2bG9jYWwtXFx1MDAzZXByb2QsIFxcdTAwMjZwZWVyLVxcdTAwM2Vwcm9kLCBjb25uKTtcXG4tXFx0c21jX2NkY19jdXJzb3JfdG9faG9zdChcXHUwMDI2bG9jYWwtXFx1MDAzZWNvbnMsIFxcdTAwMjZwZWVyLVxcdTAwM2Vjb25zLCBjb25uKTtcXG4rXFx0LyogYm91bmQgdGhlIHdpcmUtY29udHJvbGxlZCBwcm9kdWNlciBjdXJzb3IgdG8gb3VyIFJNQiAodXNlZCBhcyBhIHJhd1xcbitcXHQgKiBpbmRleCBieSB0aGUgdXJnZW50IHBhdGgpOyBsZWF2ZSB0aGUgY29uc3VtZXIgY3Vyc29yIHVuYm91bmRlZCAtLSBpdFxcbitcXHQgKiBpbmRleGVzIHRoZSBwZWVyJ3MgUk1CIGFuZCBpcyBib3VuZGVkIGJ5IHBlZXJfcm1iZV9zaXplLlxcbitcXHQgKi9cXG4rXFx0c21jX2NkY19jdXJzb3JfdG9faG9zdChcXHUwMDI2bG9jYWwtXFx1MDAzZXByb2QsIFxcdTAwMjZwZWVyLVxcdTAwM2Vwcm9kLCBjb25uLFxcbitcXHRcXHRcXHQgICAgICAgY29ubi1cXHUwMDNlcm1iX2Rlc2MtXFx1MDAzZWxlbik7XFxuK1xcdHNtY19jZGNfY3Vyc29yX3RvX2hvc3QoXFx1MDAyNmxvY2FsLVxcdTAwM2Vjb25zLCBcXHUwMDI2cGVlci1cXHUwMDNlY29ucywgY29ubiwgMCk7XFxuIFxcdGxvY2FsLVxcdTAwM2Vwcm9kX2ZsYWdzID0gcGVlci1cXHUwMDNlcHJvZF9mbGFncztcXG4gXFx0bG9jYWwtXFx1MDAzZWNvbm5fc3RhdGVfZmxhZ3MgPSBwZWVyLVxcdTAwM2Vjb25uX3N0YXRlX2ZsYWdzO1xcbiB9XFxuQEAgLTI2MCw2ICsyNzUsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIHNtY2RfY2RjX21zZ190b19ob3N0KHN0cnVjdCBzbWNfaG9zdF9jZGNfbXNnICpsb2NhbCxcXG4gXFxuIFxcdHRlbXAud3JhcCA9IHBlZXItXFx1MDAzZXByb2Qud3JhcDtcXG4gXFx0dGVtcC5jb3VudCA9IHBlZXItXFx1MDAzZXByb2QuY291bnQ7XFxuK1xcdC8qIHRoZSBwZWVyIHByb2R1Y2VyIGN1cnNvciBpcyB3aXJlLWNvbnRyb2xsZWQgYW5kIGlzIHVzZWQgYXMgYSByYXdcXG4rXFx0ICogaW5kZXggaW50byBvdXIgUk1CIGJ5IHRoZSB1cmdlbnQgcGF0aDsgYm91bmQgaXQgdG8gdGhlIFJNQi4gIFRoZVxcbitcXHQgKiBjb25zdW1lciBjdXJzb3IgYmVsb3cgaW5kZXhlcyB0aGUgcGVlcidzIFJNQiBhbmQgaXMgbGVmdCB1bmJvdW5kZWQuXFxuK1xcdCAqL1xcbitcXHRpZiAodGVtcC5jb3VudCBcXHUwMDNlIGNvbm4tXFx1MDAzZXJtYl9kZXNjLVxcdTAwM2VsZW4pXFxuK1xcdFxcdHRlbXAuY291bnQgPSBjb25uLVxcdTAwM2VybWJfZGVzYy1cXHUwMDNlbGVuO1xcbiBcXHRzbWNfY3Vyc19jb3B5KFxcdTAwMjZsb2NhbC1cXHUwMDNlcHJvZCwgXFx1MDAyNnRlbXAsIGNvbm4pO1xcbiBcXG4gXFx0dGVtcC53cmFwID0gcGVlci1cXHUwMDNlY29ucy53cmFwO1xcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19yeC5jIGIvbmV0L3NtYy9zbWNfcnguY1xcbmluZGV4IGMxZDliOTIzOTM4ZGFkLi5mNDYxY2YxMGIwODU1YiAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL3NtY19yeC5jXFxuKysrIGIvbmV0L3NtYy9zbWNfcnguY1xcbkBAIC00NDIsNiArNDQyLDE4IEBAIGludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbiBcXHRcXHQvKiBpbml0aWFsaXplIHZhcmlhYmxlcyBmb3IgMXN0IGl0ZXJhdGlvbiBvZiBzdWJzZXF1ZW50IGxvb3AgKi9cXG4gXFx0XFx0LyogY291bGQgYmUganVzdCAxIGJ5dGUsIGV2ZW4gYWZ0ZXIgd2FpdGluZyBvbiBkYXRhIGFib3ZlICovXFxuIFxcdFxcdHJlYWRhYmxlID0gc21jX3J4X2RhdGFfYXZhaWxhYmxlKGNvbm4sIHBlZWtlZF9ieXRlcyk7XFxuK1xcdFxcdC8qIGJ5dGVzX3RvX3JjdiBpcyBhY2N1bXVsYXRlZCBmcm9tIHRoZSBwZWVyJ3Mgd2lyZS1jb250cm9sbGVkXFxuK1xcdFxcdCAqIHByb2R1Y2VyIGN1cnNvcjsgYSBmb3JnZWQgY3Vyc29yIGNhbiBkcml2ZSBpdCBwYXN0IHRoZSBSTUIsXFxuK1xcdFxcdCAqIG9yIG92ZXJmbG93IHRoZSBzaWduZWQgYWNjdW11bGF0b3IgdG8gYSBuZWdhdGl2ZSB2YWx1ZSBhY3Jvc3NcXG4rXFx0XFx0ICogbWFueSBDREMgbWVzc2FnZXMgKHdoaWNoIGEgcGxhaW4gXFxcIlxcdTAwM2UgbGVuXFxcIiBjaGVjayB3b3VsZCBtaXNzXFxuK1xcdFxcdCAqIGJlZm9yZSB0aGUgc2l6ZV90IGNhc3QgYmVsb3cgdHVybnMgaXQgaHVnZSkuICBCb3VuZCBpdCB0byB0aGVcXG4rXFx0XFx0ICogUk1CIGluIGVpdGhlciBjYXNlIHNvIHRoZSB3cmFwLWFyb3VuZCBjb3B5IGNhbm5vdCBydW4gcGFzdFxcbitcXHRcXHQgKiBybWJfZGVzYy1cXHUwMDNlbGVuLiAgVGhpcyBlbmZvcmNlcyB0aGUgZG9jdW1lbnRlZFxcbitcXHRcXHQgKiAwIFxcdTAwM2M9IGJ5dGVzX3RvX3JjdiBcXHUwMDNjPSBybWJfZGVzYy1cXHUwMDNlbGVuIGludmFyaWFudCBhdCB0aGUgY29uc3VtZXIsXFxuK1xcdFxcdCAqIHJhY2UtZnJlZSBhZ2FpbnN0IHRoZSBwcm9kdWNlciB1cGRhdGUgaW4gdGhlIHJlY2VpdmUgdGFza2xldC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChyZWFkYWJsZSBcXHUwMDNjIDAgfHwgcmVhZGFibGUgXFx1MDAzZSBjb25uLVxcdTAwM2VybWJfZGVzYy1cXHUwMDNlbGVuKVxcbitcXHRcXHRcXHRyZWFkYWJsZSA9IGNvbm4tXFx1MDAzZXJtYl9kZXNjLVxcdTAwM2VsZW47XFxuIFxcdFxcdHNwbGJ5dGVzID0gYXRvbWljX3JlYWQoXFx1MDAyNmNvbm4tXFx1MDAzZXNwbGljZV9wZW5kaW5nKTtcXG4gXFx0XFx0aWYgKCFyZWFkYWJsZSB8fCAobXNnIFxcdTAwMjZcXHUwMDI2IHNwbGJ5dGVzKSkge1xcbiBcXHRcXHRcXHRpZiAoc3BsYnl0ZXMpXFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3R4LmMgYi9uZXQvc21jL3NtY190eC5jXFxuaW5kZXggMzE0NGI0YjFmZTI5MDEuLjU5MTZmMDIwNjBmYjkwIDEwMDY0NFxcbi0tLSBhL25ldC9zbWMvc21jX3R4LmNcXG4rKysgYi9uZXQvc21jL3NtY190eC5jXFxuQEAgLTIzMyw2ICsyMzMsMTkgQEAgaW50IHNtY190eF9zZW5kbXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXFxuIFxcdFxcdC8qIGluaXRpYWxpemUgdmFyaWFibGVzIGZvciAxc3QgaXRlcmF0aW9uIG9mIHN1YnNlcXVlbnQgbG9vcCAqL1xcbiBcXHRcXHQvKiBjb3VsZCBiZSBqdXN0IDEgYnl0ZSwgZXZlbiBhZnRlciBzbWNfdHhfd2FpdCBhYm92ZSAqL1xcbiBcXHRcXHR3cml0ZXNwYWNlID0gYXRvbWljX3JlYWQoXFx1MDAyNmNvbm4tXFx1MDAzZXNuZGJ1Zl9zcGFjZSk7XFxuK1xcdFxcdC8qIHNuZGJ1Zl9zcGFjZSBpcyBhZHZhbmNlZCBmcm9tIHRoZSBwZWVyJ3Mgd2lyZS1jb250cm9sbGVkXFxuK1xcdFxcdCAqIGNvbnN1bWVyIGN1cnNvciBvbiB0aGUgU01DLUQgRE1CLW1lcmdlIHBhdGg7IGEgZm9yZ2VkIGN1cnNvclxcbitcXHRcXHQgKiBjYW4gaW5mbGF0ZSBpdCBwYXN0IHRoZSBzZW5kIGJ1ZmZlciwgb3Igb3ZlcmZsb3cgdGhlIHNpZ25lZFxcbitcXHRcXHQgKiBhY2N1bXVsYXRvciB0byBhIG5lZ2F0aXZlIHZhbHVlIGFjcm9zcyBtYW55IENEQyBtZXNzYWdlc1xcbitcXHRcXHQgKiAod2hpY2ggYSBwbGFpbiBcXFwiXFx1MDAzZSBsZW5cXFwiIGNoZWNrIHdvdWxkIG1pc3MgYmVmb3JlIHRoZSBzaXplX3RcXG4rXFx0XFx0ICogY2FzdCBiZWxvdyB0dXJucyBpdCBodWdlKS4gIEJvdW5kIGl0IHRvIHRoZSBzZW5kIGJ1ZmZlciBpblxcbitcXHRcXHQgKiBlaXRoZXIgY2FzZSBzbyB0aGUgd3JhcC1hcm91bmQgd3JpdGUgY2Fubm90IHJ1biBwYXN0XFxuK1xcdFxcdCAqIHNuZGJ1Zl9kZXNjLVxcdTAwM2VsZW4uICBUaGlzIGVuZm9yY2VzIHRoZSBkb2N1bWVudGVkXFxuK1xcdFxcdCAqIDAgXFx1MDAzYz0gc25kYnVmX3NwYWNlIFxcdTAwM2M9IHNuZGJ1Zl9kZXNjLVxcdTAwM2VsZW4gaW52YXJpYW50IGF0IHRoZVxcbitcXHRcXHQgKiBwcm9kdWNlciwgcmFjZS1mcmVlIGFnYWluc3QgdGhlIENEQyB0YXNrbGV0LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKHdyaXRlc3BhY2UgXFx1MDAzYyAwIHx8IHdyaXRlc3BhY2UgXFx1MDAzZSBjb25uLVxcdTAwM2VzbmRidWZfZGVzYy1cXHUwMDNlbGVuKVxcbitcXHRcXHRcXHR3cml0ZXNwYWNlID0gY29ubi1cXHUwMDNlc25kYnVmX2Rlc2MtXFx1MDAzZWxlbjtcXG4gXFx0XFx0Lyogbm90IG1vcmUgdGhhbiB3aGF0IHVzZXIgc3BhY2UgYXNrZWQgZm9yICovXFxuIFxcdFxcdGNvcHlsZW4gPSBtaW5fdChzaXplX3QsIHNlbmRfcmVtYWluaW5nLCB3cml0ZXNwYWNlKTtcXG4gXFx0XFx0LyogZGV0ZXJtaW5lIHN0YXJ0IG9mIHNuZGJ1ZiAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDoyOS42NDc5NDY1NjJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5MDc3OTM0MTE1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfcnhfcmVjdm1zZ1wiLFxuICAgIFwic21jX3R4X3NlbmRtc2dcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBTTUMgQ0RDIG1lc3NhZ2UgcHJvY2Vzc2luZyBhbmQgc29ja2V0IHJlY2VpdmUvdHJhbnNtaXQgcGF0aHMgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGhhbmRsaW5nIGZvcmdlZCBvciBtYWxmb3JtZWQgQ0RDIG1lc3NhZ2VzIGZyb20gYSBwZWVyLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgU01DIHByb3RvY29sIHN1YnN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTc0NjZkODI2MWIxMzAwNzQyOGM0NjU2ODc2MjY4MjIzZWFiY2Y4YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDA1OjEwOjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY2RjLmggYi9uZXQvc21jL3NtY19jZGMuaFxuaW5kZXggNjk2Y2MxMWYyMzAzYjkuLmNhNzZlZjYzMDM1NjZjIDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfY2RjLmhcbisrKyBiL25ldC9zbWMvc21jX2NkYy5oXG5AQCAtMjIxLDcgKzIyMSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfaG9zdF9tc2dfdG9fY2RjKHN0cnVjdCBzbWNfY2RjX21zZyAqcGVlcixcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgc21jX2NkY19jdXJzb3JfdG9faG9zdCh1bmlvbiBzbWNfaG9zdF9jdXJzb3IgKmxvY2FsLFxuIFx0XHRcdFx0XHQgIHVuaW9uIHNtY19jZGNfY3Vyc29yICpwZWVyLFxuLVx0XHRcdFx0XHQgIHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbitcdFx0XHRcdFx0ICBzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXG4rXHRcdFx0XHRcdCAgaW50IG1heF9jb3VudClcbiB7XG4gXHR1bmlvbiBzbWNfaG9zdF9jdXJzb3IgdGVtcCwgb2xkO1xuIFx0dW5pb24gc21jX2NkY19jdXJzb3IgbmV0O1xuQEAgLTIzNSw2ICsyMzYsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfY3Vyc29yX3RvX2hvc3QodW5pb24gc21jX2hvc3RfY3Vyc29yICpsb2NhbCxcbiBcdGlmICgob2xkLndyYXAgPT0gdGVtcC53cmFwKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAob2xkLmNvdW50IFx1MDAzZSB0ZW1wLmNvdW50KSlcbiBcdFx0cmV0dXJuO1xuK1x0LyogVGhlIHBlZXIgcHJvZHVjZXIgY3Vyc29yIGlzIHdpcmUtY29udHJvbGxlZCBhbmQgaXMgbGF0ZXIgdXNlZCBhcyBhXG4rXHQgKiByYXcgaW5kZXggaW50byBvdXIgUk1CIGJ5IHRoZSB1cmdlbnQgcGF0aDsgYm91bmQgaXRzIGNvdW50IHRvIHRoZVxuK1x0ICogUk1CLiAgbWF4X2NvdW50ID09IDAgbGVhdmVzIHRoZSBjb25zdW1lciBjdXJzb3IgdW5ib3VuZGVkIGhlcmU6IGl0XG4rXHQgKiBpbmRleGVzIHRoZSBwZWVyJ3MgUk1CIChib3VuZGVkIGJ5IHBlZXJfcm1iZV9zaXplLCBub3Qgb3VyXG4rXHQgKiBybWJfZGVzYy1cdTAwM2VsZW4pLCBzbyBjbGFtcGluZyBpdCB0byBybWJfZGVzYy1cdTAwM2VsZW4gd291bGQgdW5kZXItY3JlZGl0XG4rXHQgKiBwZWVyX3JtYmVfc3BhY2UgYW5kIHN0YWxsIHRyYW5zbWl0IHRvIHBlZXJzIHdpdGggYSBsYXJnZXIgUk1CLlxuK1x0ICovXG4rXHRpZiAobWF4X2NvdW50IFx1MDAyNlx1MDAyNiB0ZW1wLmNvdW50IFx1MDAzZSBtYXhfY291bnQpXG4rXHRcdHRlbXAuY291bnQgPSBtYXhfY291bnQ7XG4gXHRzbWNfY3Vyc19jb3B5KGxvY2FsLCBcdTAwMjZ0ZW1wLCBjb25uKTtcbiB9XG4gXG5AQCAtMjQ2LDggKzI1NiwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc21jcl9jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLFxuIFx0bG9jYWwtXHUwMDNlbGVuID0gcGVlci1cdTAwM2VsZW47XG4gXHRsb2NhbC1cdTAwM2VzZXFubyA9IG50b2hzKHBlZXItXHUwMDNlc2Vxbm8pO1xuIFx0bG9jYWwtXHUwMDNldG9rZW4gPSBudG9obChwZWVyLVx1MDAzZXRva2VuKTtcbi1cdHNtY19jZGNfY3Vyc29yX3RvX2hvc3QoXHUwMDI2bG9jYWwtXHUwMDNlcHJvZCwgXHUwMDI2cGVlci1cdTAwM2Vwcm9kLCBjb25uKTtcbi1cdHNtY19jZGNfY3Vyc29yX3RvX2hvc3QoXHUwMDI2bG9jYWwtXHUwMDNlY29ucywgXHUwMDI2cGVlci1cdTAwM2Vjb25zLCBjb25uKTtcbitcdC8qIGJvdW5kIHRoZSB3aXJlLWNvbnRyb2xsZWQgcHJvZHVjZXIgY3Vyc29yIHRvIG91ciBSTUIgKHVzZWQgYXMgYSByYXdcbitcdCAqIGluZGV4IGJ5IHRoZSB1cmdlbnQgcGF0aCk7IGxlYXZlIHRoZSBjb25zdW1lciBjdXJzb3IgdW5ib3VuZGVkIC0tIGl0XG4rXHQgKiBpbmRleGVzIHRoZSBwZWVyJ3MgUk1CIGFuZCBpcyBib3VuZGVkIGJ5IHBlZXJfcm1iZV9zaXplLlxuK1x0ICovXG4rXHRzbWNfY2RjX2N1cnNvcl90b19ob3N0KFx1MDAyNmxvY2FsLVx1MDAzZXByb2QsIFx1MDAyNnBlZXItXHUwMDNlcHJvZCwgY29ubixcbitcdFx0XHQgICAgICAgY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW4pO1xuK1x0c21jX2NkY19jdXJzb3JfdG9faG9zdChcdTAwMjZsb2NhbC1cdTAwM2Vjb25zLCBcdTAwMjZwZWVyLVx1MDAzZWNvbnMsIGNvbm4sIDApO1xuIFx0bG9jYWwtXHUwMDNlcHJvZF9mbGFncyA9IHBlZXItXHUwMDNlcHJvZF9mbGFncztcbiBcdGxvY2FsLVx1MDAzZWNvbm5fc3RhdGVfZmxhZ3MgPSBwZWVyLVx1MDAzZWNvbm5fc3RhdGVfZmxhZ3M7XG4gfVxuQEAgLTI2MCw2ICsyNzUsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIHNtY2RfY2RjX21zZ190b19ob3N0KHN0cnVjdCBzbWNfaG9zdF9jZGNfbXNnICpsb2NhbCxcbiBcbiBcdHRlbXAud3JhcCA9IHBlZXItXHUwMDNlcHJvZC53cmFwO1xuIFx0dGVtcC5jb3VudCA9IHBlZXItXHUwMDNlcHJvZC5jb3VudDtcbitcdC8qIHRoZSBwZWVyIHByb2R1Y2VyIGN1cnNvciBpcyB3aXJlLWNvbnRyb2xsZWQgYW5kIGlzIHVzZWQgYXMgYSByYXdcbitcdCAqIGluZGV4IGludG8gb3VyIFJNQiBieSB0aGUgdXJnZW50IHBhdGg7IGJvdW5kIGl0IHRvIHRoZSBSTUIuICBUaGVcbitcdCAqIGNvbnN1bWVyIGN1cnNvciBiZWxvdyBpbmRleGVzIHRoZSBwZWVyJ3MgUk1CIGFuZCBpcyBsZWZ0IHVuYm91bmRlZC5cbitcdCAqL1xuK1x0aWYgKHRlbXAuY291bnQgXHUwMDNlIGNvbm4tXHUwMDNlcm1iX2Rlc2MtXHUwMDNlbGVuKVxuK1x0XHR0ZW1wLmNvdW50ID0gY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW47XG4gXHRzbWNfY3Vyc19jb3B5KFx1MDAyNmxvY2FsLVx1MDAzZXByb2QsIFx1MDAyNnRlbXAsIGNvbm4pO1xuIFxuIFx0dGVtcC53cmFwID0gcGVlci1cdTAwM2Vjb25zLndyYXA7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfcnguYyBiL25ldC9zbWMvc21jX3J4LmNcbmluZGV4IGMxZDliOTIzOTM4ZGFkLi5mNDYxY2YxMGIwODU1YiAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX3J4LmNcbisrKyBiL25ldC9zbWMvc21jX3J4LmNcbkBAIC00NDIsNiArNDQyLDE4IEBAIGludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0XHQvKiBpbml0aWFsaXplIHZhcmlhYmxlcyBmb3IgMXN0IGl0ZXJhdGlvbiBvZiBzdWJzZXF1ZW50IGxvb3AgKi9cbiBcdFx0LyogY291bGQgYmUganVzdCAxIGJ5dGUsIGV2ZW4gYWZ0ZXIgd2FpdGluZyBvbiBkYXRhIGFib3ZlICovXG4gXHRcdHJlYWRhYmxlID0gc21jX3J4X2RhdGFfYXZhaWxhYmxlKGNvbm4sIHBlZWtlZF9ieXRlcyk7XG4rXHRcdC8qIGJ5dGVzX3RvX3JjdiBpcyBhY2N1bXVsYXRlZCBmcm9tIHRoZSBwZWVyJ3Mgd2lyZS1jb250cm9sbGVkXG4rXHRcdCAqIHByb2R1Y2VyIGN1cnNvcjsgYSBmb3JnZWQgY3Vyc29yIGNhbiBkcml2ZSBpdCBwYXN0IHRoZSBSTUIsXG4rXHRcdCAqIG9yIG92ZXJmbG93IHRoZSBzaWduZWQgYWNjdW11bGF0b3IgdG8gYSBuZWdhdGl2ZSB2YWx1ZSBhY3Jvc3NcbitcdFx0ICogbWFueSBDREMgbWVzc2FnZXMgKHdoaWNoIGEgcGxhaW4gXCJcdTAwM2UgbGVuXCIgY2hlY2sgd291bGQgbWlzc1xuK1x0XHQgKiBiZWZvcmUgdGhlIHNpemVfdCBjYXN0IGJlbG93IHR1cm5zIGl0IGh1Z2UpLiAgQm91bmQgaXQgdG8gdGhlXG4rXHRcdCAqIFJNQiBpbiBlaXRoZXIgY2FzZSBzbyB0aGUgd3JhcC1hcm91bmQgY29weSBjYW5ub3QgcnVuIHBhc3RcbitcdFx0ICogcm1iX2Rlc2MtXHUwMDNlbGVuLiAgVGhpcyBlbmZvcmNlcyB0aGUgZG9jdW1lbnRlZFxuK1x0XHQgKiAwIFx1MDAzYz0gYnl0ZXNfdG9fcmN2IFx1MDAzYz0gcm1iX2Rlc2MtXHUwMDNlbGVuIGludmFyaWFudCBhdCB0aGUgY29uc3VtZXIsXG4rXHRcdCAqIHJhY2UtZnJlZSBhZ2FpbnN0IHRoZSBwcm9kdWNlciB1cGRhdGUgaW4gdGhlIHJlY2VpdmUgdGFza2xldC5cbitcdFx0ICovXG4rXHRcdGlmIChyZWFkYWJsZSBcdTAwM2MgMCB8fCByZWFkYWJsZSBcdTAwM2UgY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW4pXG4rXHRcdFx0cmVhZGFibGUgPSBjb25uLVx1MDAzZXJtYl9kZXNjLVx1MDAzZWxlbjtcbiBcdFx0c3BsYnl0ZXMgPSBhdG9taWNfcmVhZChcdTAwMjZjb25uLVx1MDAzZXNwbGljZV9wZW5kaW5nKTtcbiBcdFx0aWYgKCFyZWFkYWJsZSB8fCAobXNnIFx1MDAyNlx1MDAyNiBzcGxieXRlcykpIHtcbiBcdFx0XHRpZiAoc3BsYnl0ZXMpXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfdHguYyBiL25ldC9zbWMvc21jX3R4LmNcbmluZGV4IDMxNDRiNGIxZmUyOTAxLi41OTE2ZjAyMDYwZmI5MCAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX3R4LmNcbisrKyBiL25ldC9zbWMvc21jX3R4LmNcbkBAIC0yMzMsNiArMjMzLDE5IEBAIGludCBzbWNfdHhfc2VuZG1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuIFx0XHQvKiBpbml0aWFsaXplIHZhcmlhYmxlcyBmb3IgMXN0IGl0ZXJhdGlvbiBvZiBzdWJzZXF1ZW50IGxvb3AgKi9cbiBcdFx0LyogY291bGQgYmUganVzdCAxIGJ5dGUsIGV2ZW4gYWZ0ZXIgc21jX3R4X3dhaXQgYWJvdmUgKi9cbiBcdFx0d3JpdGVzcGFjZSA9IGF0b21pY19yZWFkKFx1MDAyNmNvbm4tXHUwMDNlc25kYnVmX3NwYWNlKTtcbitcdFx0Lyogc25kYnVmX3NwYWNlIGlzIGFkdmFuY2VkIGZyb20gdGhlIHBlZXIncyB3aXJlLWNvbnRyb2xsZWRcbitcdFx0ICogY29uc3VtZXIgY3Vyc29yIG9uIHRoZSBTTUMtRCBETUItbWVyZ2UgcGF0aDsgYSBmb3JnZWQgY3Vyc29yXG4rXHRcdCAqIGNhbiBpbmZsYXRlIGl0IHBhc3QgdGhlIHNlbmQgYnVmZmVyLCBvciBvdmVyZmxvdyB0aGUgc2lnbmVkXG4rXHRcdCAqIGFjY3VtdWxhdG9yIHRvIGEgbmVnYXRpdmUgdmFsdWUgYWNyb3NzIG1hbnkgQ0RDIG1lc3NhZ2VzXG4rXHRcdCAqICh3aGljaCBhIHBsYWluIFwiXHUwMDNlIGxlblwiIGNoZWNrIHdvdWxkIG1pc3MgYmVmb3JlIHRoZSBzaXplX3RcbitcdFx0ICogY2FzdCBiZWxvdyB0dXJucyBpdCBodWdlKS4gIEJvdW5kIGl0IHRvIHRoZSBzZW5kIGJ1ZmZlciBpblxuK1x0XHQgKiBlaXRoZXIgY2FzZSBzbyB0aGUgd3JhcC1hcm91bmQgd3JpdGUgY2Fubm90IHJ1biBwYXN0XG4rXHRcdCAqIHNuZGJ1Zl9kZXNjLVx1MDAzZWxlbi4gIFRoaXMgZW5mb3JjZXMgdGhlIGRvY3VtZW50ZWRcbitcdFx0ICogMCBcdTAwM2M9IHNuZGJ1Zl9zcGFjZSBcdTAwM2M9IHNuZGJ1Zl9kZXNjLVx1MDAzZWxlbiBpbnZhcmlhbnQgYXQgdGhlXG4rXHRcdCAqIHByb2R1Y2VyLCByYWNlLWZyZWUgYWdhaW5zdCB0aGUgQ0RDIHRhc2tsZXQuXG4rXHRcdCAqL1xuK1x0XHRpZiAod3JpdGVzcGFjZSBcdTAwM2MgMCB8fCB3cml0ZXNwYWNlIFx1MDAzZSBjb25uLVx1MDAzZXNuZGJ1Zl9kZXNjLVx1MDAzZWxlbilcbitcdFx0XHR3cml0ZXNwYWNlID0gY29ubi1cdTAwM2VzbmRidWZfZGVzYy1cdTAwM2VsZW47XG4gXHRcdC8qIG5vdCBtb3JlIHRoYW4gd2hhdCB1c2VyIHNwYWNlIGFza2VkIGZvciAqL1xuIFx0XHRjb3B5bGVuID0gbWluX3Qoc2l6ZV90LCBzZW5kX3JlbWFpbmluZywgd3JpdGVzcGFjZSk7XG4gXHRcdC8qIGRldGVybWluZSBzdGFydCBvZiBzbmRidWYgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjEwOjI5LjY0Nzk0ODY5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMzU4ODgzMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU01DIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCBoZXJlIHRoYXQncyB0b3VjaGluZyB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBjb2RlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIENEQyBtZXNzYWdlcy4gSSBzZWUgaXQncyBtb2RpZnlpbmcgYHNtY19jZGMuaGAsIGBzbWNfcnguY2AsIGFuZCBgc21jX3R4LmNgLiBUaGF0IHRlbGxzIG1lIHdlJ3JlIGxvb2tpbmcgYXQgY29yZSBmdW5jdGlvbmFsaXR5IOKAkyB0aGUgaGVhZGVyIGZpbGUsIHJlY2VpdmVyLCBhbmQgdHJhbnNtaXR0ZXIgc2lkZXMuIFRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhleSdyZSBhZGRpbmcgYm91bmRzIGNoZWNraW5nLCBzcGVjaWZpY2FsbHkgaW4gZnVuY3Rpb25zIGxpa2UgYHNtY19jZGNfY3Vyc29yX3RvX2hvc3RgLCBgc21jcl9jZGNfbXNnX3RvX2hvc3RgLCBgc21jZF9jZGNfbXNnX3RvX2hvc3RgLCBgc21jX3J4X3JlY3Ztc2dgLCBhbmQgYHNtY190eF9zZW5kbXNnYC5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZSwgYW5kIGl0J3MgYWltZWQgYXQgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5OiB0aGUgcG9zc2liaWxpdHkgb2Ygb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzIG9yIGludGVnZXIgb3ZlcmZsb3cuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGdvb2QuIE1hbGZvcm1lZCBvciBmb3JnZWQgQ0RDIG1lc3NhZ2VzIGNvdWxkIGJlIHVzZWQgdG8gZXhwbG9pdCB0aGUgc3lzdGVtLCBzbyBhZGRpbmcgY2hlY2tzIGlzIGVzc2VudGlhbCwgcGFydGljdWxhcmx5IGdpdmVuIHRoZSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucyBvZiBTTUMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoaXMgYm91bmRzIGNoZWNraW5nIGlzIGltcGxlbWVudGVkLCBidXQgdGhlIGdlbmVyYWwgcHJpbmNpcGxlIGlzIHNvdW5kLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQgbWUganVzdCBjaGVjayB0aGUgS2NvbmZpZyB0byBzZWUgaG93IFNNQyBpcyBjb25maWd1cmVkLiBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgYWZmZWN0cyBhbGwgYnVpbGRzIG9yIG9ubHkgY2VydGFpbiBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwNiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjEwOjMzLjk4Mzg0MDU2OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ0NzE1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNNQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0xMy1cXG5uZXQvc21jL0tjb25maWc6MTQ6Y29uZmlnIFNNQ19ESUFHXFxubmV0L3NtYy9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0yMi1cXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbm5ldC9zbWMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDozNC4xMDgzMTc4NzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDk1Mzg1OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01DIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBpcyBgU01DYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gcGlucG9pbnQgdGhlIGZvY3VzIHN5bWJvbHMg4oCTIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZWl0aGVyIGRpcmVjdGx5IG1vZGlmaWVkIG9yIGFyZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY2hhbmdlcy4gTG9va2luZyBhdCB0aGUgZGlmZiwgaXQgc2VlbXMgdGhlc2UgYXJlIHRoZSBtb2RpZmllZCBmdW5jdGlvbnM6IGBzbWNfY2RjX2N1cnNvcl90b19ob3N0YCwgYHNtY3JfY2RjX21zZ190b19ob3N0YCwgYHNtY2RfY2RjX21zZ190b19ob3N0YCwgYHNtY19yeF9yZWN2bXNnYCwgYW5kIGBzbWNfdHhfc2VuZG1zZ2AuXG5cblNpbmNlIHRoZSBmaXJzdCB0aHJlZSwgYHNtY19jZGNfY3Vyc29yX3RvX2hvc3RgLCBgc21jcl9jZGNfbXNnX3RvX2hvc3RgIGFuZCBgc21jZF9jZGNfbXNnX3RvX2hvc3RgLCBhcmUgZGVjbGFyZWQgYXMgYHN0YXRpYyBpbmxpbmVgLCB0aGV5IGFyZSBsaWtlbHkgaW5saW5lZCBhdCB0aGUgY2FsbCBzaXRlLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBmb2N1cyBvbiB3aGVyZSAqdGhleSogYXJlIGNhbGxlZCBvciB3aGV0aGVyIHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcyBoYXZlIGRpcmVjdCBtb2RpZmljYXRpb25zLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBpZGVudGlmeSB0aGUgY2FsbCBzaXRlcyBvZiBgc21jcl9jZGNfbXNnX3RvX2hvc3RgIGFuZCBgc21jZF9jZGNfbXNnX3RvX2hvc3RgIOKAkyB0aGVzZSBhcmUgbGlrZWx5IHRoZSBjcml0aWNhbCBwaWVjZXMgdG8gYW5hbHl6ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM3NSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDozOC4yMDM3MDY0NzZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0NDI5OTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY3JfY2RjX21zZ190b19ob3N0fHNtY2RfY2RjX21zZ190b19ob3N0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2NkYy5oPTIyMj1zdGF0aWMgaW5saW5lIHZvaWQgc21jX2NkY19jdXJzb3JfdG9faG9zdCh1bmlvbiBzbWNfaG9zdF9jdXJzb3IgKmxvY2FsLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmgtMjUwLVxcbm5ldC9zbWMvc21jX2NkYy5oOjI1MTpzdGF0aWMgaW5saW5lIHZvaWQgc21jcl9jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLFxcbm5ldC9zbWMvc21jX2NkYy5oLTI1Mi1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc21jX2NkY19tc2cgKnBlZXIsXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuaC0yNjktXFxubmV0L3NtYy9zbWNfY2RjLmg6MjcwOnN0YXRpYyBpbmxpbmUgdm9pZCBzbWNkX2NkY19tc2dfdG9faG9zdChzdHJ1Y3Qgc21jX2hvc3RfY2RjX21zZyAqbG9jYWwsXFxubmV0L3NtYy9zbWNfY2RjLmgtMjcxLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzbWNkX2NkY19tc2cgKnBlZXIsXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuaD0yOTM9c3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmgtMjk3LVxcdGlmIChjb25uLVxcdTAwM2VsZ3ItXFx1MDAzZWlzX3NtY2QpXFxubmV0L3NtYy9zbWNfY2RjLmg6Mjk4OlxcdFxcdHNtY2RfY2RjX21zZ190b19ob3N0KGxvY2FsLCAoc3RydWN0IHNtY2RfY2RjX21zZyAqKXBlZXIsIGNvbm4pO1xcbm5ldC9zbWMvc21jX2NkYy5oLTI5OS1cXHRlbHNlXFxubmV0L3NtYy9zbWNfY2RjLmg6MzAwOlxcdFxcdHNtY3JfY2RjX21zZ190b19ob3N0KGxvY2FsLCBwZWVyLCBjb25uKTtcXG5uZXQvc21jL3NtY19jZGMuaC0zMDEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDozOC4zMDgxNDA5MTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjcxNjYzNDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipUcmFjaW5nIHRoZSBTTUNfQ0RDIE1lc3NhZ2UgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBzbWNfY2RjX21zZ190b19ob3N0YCBmdW5jdGlvbi4gVGhlIGNvZGUgY2FsbHMgaXQsIGFuZCBpdCdzIGFsc28gc3RhdGljIGlubGluZSwgd2hpY2ggaXMgYSBrZXkgZGV0YWlsLiBUaGF0IG1lYW5zIHRoZSBjb21waWxlciBsaWtlbHkgc3Vic3RpdHV0ZXMgdGhlIGZ1bmN0aW9uJ3MgY29kZSBkaXJlY3RseSB3aGVyZXZlciBpdCdzIHVzZWQuIFRoaXMgc3VnZ2VzdHMgaXQncyBhIGNyaXRpY2FsLCBwb3RlbnRpYWxseSBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgcGllY2Ugb2YgdGhlIGNvbW11bmljYXRpb24gbG9naWMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZCB0byBmaWd1cmUgb3V0IHRoZSBsYXJnZXIgY29udGV4dC4gVGltZSB0byB0cmFjayBkb3duIGFsbCB0aGUgY2FsbCBzaXRlcyBvZiBgc21jX2NkY19tc2dfdG9faG9zdGAuIExldCdzIHNlZSBob3cgdGhpcyBkYXRhIGZsb3dzIGFuZCB3aGF0IHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBsb29rcyBsaWtlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjQzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTA6NDEuNTc5ODA3Mzg2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDAwMzA3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfY2RjX21zZ190b19ob3N0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jPTMzMD1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTMzOC1cXHRzbWNfY3Vyc19jb3B5KFxcdTAwMjZjb25zX29sZCwgXFx1MDAyNmNvbm4tXFx1MDAzZWxvY2FsX3J4X2N0cmwuY29ucywgY29ubik7XFxubmV0L3NtYy9zbWNfY2RjLmM6MzM5OlxcdHNtY19jZGNfbXNnX3RvX2hvc3QoXFx1MDAyNmNvbm4tXFx1MDAzZWxvY2FsX3J4X2N0cmwsIGNkYywgY29ubik7XFxubmV0L3NtYy9zbWNfY2RjLmMtMzQwLVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmg9MjcwPXN0YXRpYyBpbmxpbmUgdm9pZCBzbWNkX2NkY19tc2dfdG9faG9zdChzdHJ1Y3Qgc21jX2hvc3RfY2RjX21zZyAqbG9jYWwsXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuaC0yOTItXFxubmV0L3NtYy9zbWNfY2RjLmg6MjkzOnN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfY2RjX21zZ190b19ob3N0KHN0cnVjdCBzbWNfaG9zdF9jZGNfbXNnICpsb2NhbCxcXG5uZXQvc21jL3NtY19jZGMuaC0yOTQtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzbWNfY2RjX21zZyAqcGVlcixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTA6NDEuNzIzODE1NzUzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5ODE1NjU2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBPcmlnaW4gb2YgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBmdW5jdGlvbiwgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYC4gVGhlIGNvZGViYXNlIHRlbGxzIG1lIGl0J3MgY2FsbGVkIGZyb20gYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCB3aXRoaW4gYG5ldC9zbWMvc21jX2NkYy5jYC4gVGhlIGZpcnN0IHRoaW5nIEkgYWx3YXlzIGRvIGluIHRoZXNlIHNpdHVhdGlvbnMgaXMgZXN0YWJsaXNoIHNjb3BlLiBJIGp1c3QgdmVyaWZpZWQgdGhhdCBpdCdzIGEgYHN0YXRpY2AgZnVuY3Rpb24sIHdoaWNoIHNpZ25pZmljYW50bHkgbmFycm93cyBkb3duIHdoZXJlIEkgbmVlZCB0byBsb29rIGZvciBjYWxscy4gTm93LCB0aGUgbmV4dCBzdGVwIGlzIHN0cmFpZ2h0Zm9yd2FyZDogSSBuZWVkIHRvIHBpbnBvaW50IGV2ZXJ5d2hlcmUgdGhpcyBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGlzIGFjdHVhbGx5ICpjYWxsZWQqIHdpdGhpbiB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1bml0LiBUaGlzIHNob3VsZCBiZSBhIHByZXR0eSBxdWljayB0YXNrIHdpdGggYSBnb29kIGNyb3NzLXJlZmVyZW5jaW5nIHRvb2wuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NjQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDo0NS4yMjE5NzQ0NTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTc2NzMxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfY2RjX21zZ19yZWN2X2FjdGlvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19jZGMuYz0zMDg9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfdmFsaWRhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMzI5LVxcbm5ldC9zbWMvc21jX2NkYy5jOjMzMDpzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG5uZXQvc21jL3NtY19jZGMuYy0zMzEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9NDI3PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3Yoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNDMwLVxcdGJoX2xvY2tfc29jayhcXHUwMDI2c21jLVxcdTAwM2Vzayk7XFxubmV0L3NtYy9zbWNfY2RjLmM6NDMxOlxcdHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHNtYywgY2RjKTtcXG5uZXQvc21jL3NtY19jZGMuYy00MzItXFx0YmhfdW5sb2NrX3NvY2soXFx1MDAyNnNtYy1cXHUwMDNlc2spO1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0yOS0vKiBjYWxsYmFjayBpbXBsZW1lbnRhdGlvbiB0byB3YWtldXAgY29uc3VtZXJzIGJsb2NrZWQgd2l0aCBzbWNfcnhfd2FpdCgpLlxcbm5ldC9zbWMvc21jX3J4LmM6MzA6ICogaW5kaXJlY3RseSBjYWxsZWQgYnkgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKS5cXG5uZXQvc21jL3NtY19yeC5jLTMxLSAqL1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYz0zNTI9aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTM5OC1cXHRcXHRpZiAoc2stXFx1MDAzZXNrX3NodXRkb3duIFxcdTAwMjYgUkNWX1NIVVRET1dOKSB7XFxubmV0L3NtYy9zbWNfcnguYzozOTk6XFx0XFx0XFx0Lyogc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKSBjb3VsZCBoYXZlIHJ1biBhZnRlclxcbm5ldC9zbWMvc21jX3J4LmMtNDAwLVxcdFxcdFxcdCAqIGFib3ZlIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTA6NDUuMzIzNzQ2NTM0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODA1NzYzODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlRyYWNpbmcgdGhlIE1lc3NhZ2UgUmVjZXB0aW9uIFBhdGgqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGBzbWNfY2RjX21zZ19yZWN2YC4gVGhhdCdzIHdoZXJlIHRoZSBtZXNzYWdlIGhhbmRsaW5nIHN0YXJ0cywgYnV0IHdoZXJlIGRvZXMgaXQgKmJlZ2luKj8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGxpbmcgY29udGV4dC4gTGV0J3MgdHJhY2UgYmFjayBmcm9tIGBzbWNfY2RjX21zZ19yZWN2YCBhbmQgc2VlIHdoZXJlIGl0J3MgYmVpbmcgaW52b2tlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVyIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIG1lc3NhZ2UgcHJvY2Vzc2luZyBmbG93IGFuZCBwb3RlbnRpYWwgaXNzdWVzLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0J3Mgc2VlLi4uIGEgcXVpY2sgY3Jvc3MtcmVmZXJlbmNlIHNob3VsZCBkbyB0aGUgdHJpY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NzEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDo0OC4zMDQzMjU1OThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MzM1NjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY19jZGNfbXNnX3JlY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9MzA4PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3ZhbGlkYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYyxcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTMyOS1cXG5uZXQvc21jL3NtY19jZGMuYzozMzA6c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsXFxubmV0L3NtYy9zbWNfY2RjLmMtMzMxLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTQyNi0vKiBjYWxsZWQgdW5kZXIgdGFza2xldCBjb250ZXh0ICovXFxubmV0L3NtYy9zbWNfY2RjLmM6NDI3OnN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3Yoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxcbm5ldC9zbWMvc21jX2NkYy5jLTQyOC17XFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy00MzAtXFx0YmhfbG9ja19zb2NrKFxcdTAwMjZzbWMtXFx1MDAzZXNrKTtcXG5uZXQvc21jL3NtY19jZGMuYzo0MzE6XFx0c21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc21jLCBjZGMpO1xcbm5ldC9zbWMvc21jX2NkYy5jLTQzMi1cXHRiaF91bmxvY2tfc29jayhcXHUwMDI2c21jLVxcdTAwM2Vzayk7XFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYz00NDI9c3RhdGljIHZvaWQgc21jZF9jZGNfcnhfdHNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTQ1NS1cXHRzbWMgPSBjb250YWluZXJfb2YoY29ubiwgc3RydWN0IHNtY19zb2NrLCBjb25uKTtcXG5uZXQvc21jL3NtY19jZGMuYzo0NTY6XFx0c21jX2NkY19tc2dfcmVjdihzbWMsIChzdHJ1Y3Qgc21jX2NkY19tc2cgKilcXHUwMDI2Y2RjKTtcXG5uZXQvc21jL3NtY19jZGMuYy00NTctfVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9NDY5PXN0YXRpYyB2b2lkIHNtY19jZGNfcnhfaGFuZGxlcihzdHJ1Y3QgaWJfd2MgKndjLCB2b2lkICpidWYpXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy01MDItXFxubmV0L3NtYy9zbWNfY2RjLmM6NTAzOlxcdHNtY19jZGNfbXNnX3JlY3Yoc21jLCBjZGMpO1xcbm5ldC9zbWMvc21jX2NkYy5jLTUwNC1vdXQ6XFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTI5LS8qIGNhbGxiYWNrIGltcGxlbWVudGF0aW9uIHRvIHdha2V1cCBjb25zdW1lcnMgYmxvY2tlZCB3aXRoIHNtY19yeF93YWl0KCkuXFxubmV0L3NtYy9zbWNfcnguYzozMDogKiBpbmRpcmVjdGx5IGNhbGxlZCBieSBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpLlxcbm5ldC9zbWMvc21jX3J4LmMtMzEtICovXFxuLS1cXG5uZXQvc21jL3NtY19yeC5jPTM1Mj1pbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcXG4tLVxcbm5ldC9zbWMvc21jX3J4LmMtMzk4LVxcdFxcdGlmIChzay1cXHUwMDNlc2tfc2h1dGRvd24gXFx1MDAyNiBSQ1ZfU0hVVERPV04pIHtcXG5uZXQvc21jL3NtY19yeC5jOjM5OTpcXHRcXHRcXHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXFxubmV0L3NtYy9zbWNfcnguYy00MDAtXFx0XFx0XFx0ICogYWJvdmUgc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDo0OC4zNzk2NzAxODFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2MTkyODQ1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBDREMgTWVzc2FnZSBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIENEQyBtZXNzYWdlIHJlY2VwdGlvbiBsb2dpYy4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYHNtY2RfY2RjX3J4X3Rza2xldGAgYW5kIGBzbWNfY2RjX3J4X2hhbmRsZXJgIGFyZSB0aGUgZW50cnkgcG9pbnRzLiBHb3QgaXQuIEFsc28sIEkgc2VlIGBzbWNfcnhfcmVjdm1zZ2AgYW5kIGBzbWNfdHhfc2VuZG1zZ2AgYXJlIGJlaW5nIGRpcmVjdGx5IG1vZGlmaWVkLCB3aGljaCBhcmUgaW1wb3J0YW50LlxuXG5UaGVyZWZvcmUsIHRoZSBrZXkgc3ltYm9scyB0aGF0IHdhcnJhbnQgbXkgaW1tZWRpYXRlIGF0dGVudGlvbiBhcmU6XG5cbiogICBgc21jX3J4X3JlY3Ztc2dgXG4qICAgYHNtY190eF9zZW5kbXNnYFxuKiAgIGBzbWNkX2NkY19yeF90c2tsZXRgXG4qICAgYHNtY19jZGNfcnhfaGFuZGxlcmBcblxuSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoLiBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlIGFib3V0IGhvdyBgc21jZF9jZGNfcnhfdHNrbGV0YCBhbmQgYHNtY19jZGNfcnhfaGFuZGxlcmAgYXJlIHV0aWxpemVkLiBTaW5jZSB0aGV5J3JlIHN0YXRpYywgYXJlIHRoZXkgYWN0dWFsbHkgZXhwb3J0ZWQgc29tZWhvdywgb3IgYXJlIHRoZXkgcGFzc2VkIGFzIGNhbGxiYWNrcyBpbnRlcm5hbGx5PyBUaGF0J3MgYSBjcnVjaWFsIGRpc3RpbmN0aW9uLiBJIG5lZWQgdG8gdHJhY2UgdGhlaXIgdXNhZ2UgdG8gZnVsbHkgZ3Jhc3AgdGhlaXIgcm9sZS4gT2theSwgdGltZSB0byBzZWUgd2hlcmUgdGhlc2UgYXJlIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1ODcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTA6NTIuMDQxNjAxNTM2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY0MTU1ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jZF9jZGNfcnhfdHNrbGV0fHNtY19jZGNfcnhfaGFuZGxlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19jZGMuYz00Mjc9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMpXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy00NDEtICovXFxubmV0L3NtYy9zbWNfY2RjLmM6NDQyOnN0YXRpYyB2b2lkIHNtY2RfY2RjX3J4X3Rza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxubmV0L3NtYy9zbWNfY2RjLmMtNDQzLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTQ2Mj12b2lkIHNtY2RfY2RjX3J4X2luaXQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxcbm5ldC9zbWMvc21jX2NkYy5jLTQ2My17XFxubmV0L3NtYy9zbWNfY2RjLmM6NDY0OlxcdHRhc2tsZXRfc2V0dXAoXFx1MDAyNmNvbm4tXFx1MDAzZXJ4X3Rza2xldCwgc21jZF9jZGNfcnhfdHNrbGV0KTtcXG5uZXQvc21jL3NtY19jZGMuYy00NjUtfVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNDY4LVxcbm5ldC9zbWMvc21jX2NkYy5jOjQ2OTpzdGF0aWMgdm9pZCBzbWNfY2RjX3J4X2hhbmRsZXIoc3RydWN0IGliX3djICp3Yywgdm9pZCAqYnVmKVxcbm5ldC9zbWMvc21jX2NkYy5jLTQ3MC17XFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy01MDctXFxubmV0L3NtYy9zbWNfY2RjLmM6NTA4OnN0YXRpYyBzdHJ1Y3Qgc21jX3dyX3J4X2hhbmRsZXIgc21jX2NkY19yeF9oYW5kbGVyc1tdID0ge1xcbm5ldC9zbWMvc21jX2NkYy5jLTUwOS1cXHR7XFxubmV0L3NtYy9zbWNfY2RjLmM6NTEwOlxcdFxcdC5oYW5kbGVyXFx0PSBzbWNfY2RjX3J4X2hhbmRsZXIsXFxubmV0L3NtYy9zbWNfY2RjLmMtNTExLVxcdFxcdC50eXBlXFx0XFx0PSBTTUNfQ0RDX01TR19UWVBFXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYz01MTg9aW50IF9faW5pdCBzbWNfY2RjX2luaXQodm9pZClcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTUyMi1cXG5uZXQvc21jL3NtY19jZGMuYzo1MjM6XFx0Zm9yIChoYW5kbGVyID0gc21jX2NkY19yeF9oYW5kbGVyczsgaGFuZGxlci1cXHUwMDNlaGFuZGxlcjsgaGFuZGxlcisrKSB7XFxubmV0L3NtYy9zbWNfY2RjLmMtNTI0LVxcdFxcdElOSVRfSExJU1RfTk9ERShcXHUwMDI2aGFuZGxlci1cXHUwMDNlbGlzdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjEwOjUyLjE0ODAyMzQ0N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjgxNDExNzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgVGhlc2UgQ2FsbGJhY2tzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGVzZSBjYWxsYmFja3MgYW5kIGltbWVkaWF0ZWx5IG5vdGljaW5nIHNvbWV0aGluZyDigJMgdGhleSdyZSBzdGF0aWNhbGx5IGRlZmluZWQsIHdoaWNoIGlzIGEgY29tbW9uIHBhdHRlcm4uIFRoaXMgbWFrZXMgdGhlbSBpbnRlcm5hbCBhbmQgbGltaXRzIHRoZWlyIHZpc2liaWxpdHksIHdoaWNoIEkgbmVlZCB0byB1bmRlcnN0YW5kIGluIHRoaXMgY29udGV4dC4gSSBzZWUgYHNtY2RfY2RjX3J4X2luaXRgIGlzIGNhbGxlZCwgYW5kIHRoYXTigJlzICpub3QqIHN0YXRpYywgd2hpY2ggZ2l2ZXMgbWUgcGF1c2UuIFRoYXQncyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi5cblxuQnV0IGhvbGQgb24sIHRoZSByZWFsIGVudHJ5IHBvaW50cyBmb3IgcmVjZWl2aW5nIGFuZCBzZW5kaW5nIGRhdGEgc2VlbSB0byBiZSBgc21jX3J4X3JlY3Ztc2dgIGFuZCBgc21jX3R4X3NlbmRtc2dgLiBOb3csIGFyZSAqdGhvc2UqIHN0YXRpYyB0b28/IFRoYXQncyB0aGUgY3JpdGljYWwgcXVlc3Rpb24uIElmIHRoZXkncmUgbm90IHN0YXRpYywgdGhhdCBjaGFuZ2VzIHRoZSB3aG9sZSBnYW1lLiBUaGV5IGNvdWxkIGJlIHBhcnQgb2YgdGhlIHNvY2tldCBvcGVyYXRpb25zLCBvciB0aGV5IG1heSBiZSBleHBvcnRlZC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgdGhvc2UgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBvciBhcmUgdGhleSBwYXJ0IG9mIHRoZSBkZWZpbmVkIHNvY2tldCBvcGVyYXRpb25zLiBMZXQncyBnZXQgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byBjb25maXJtIHdoZXJlIHRoZXkgYmVsb25nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjA1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTA6NTUuODI5NDM3NDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0Nzc0NDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY19yeF9yZWN2bXNnfHNtY190eF9zZW5kbXNnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvYWZfc21jLmM9Mjc5Nj1pbnQgc21jX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yODI1LVxcdH0gZWxzZSB7XFxubmV0L3NtYy9hZl9zbWMuYzoyODI2OlxcdFxcdHJjID0gc21jX3R4X3NlbmRtc2coc21jLCBtc2csIGxlbik7XFxubmV0L3NtYy9hZl9zbWMuYy0yODI3LVxcdFxcdFNNQ19TVEFUX1RYX1BBWUxPQUQoc21jLCBsZW4sIHJjKTtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MjgzND1pbnQgc21jX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yODYxLVxcdFxcdG1zZy1cXHUwMDNlbXNnX25hbWVsZW4gPSAwO1xcbm5ldC9zbWMvYWZfc21jLmM6Mjg2MjpcXHRcXHRyYyA9IHNtY19yeF9yZWN2bXNnKHNtYywgbXNnLCBOVUxMLCBsZW4sIGZsYWdzKTtcXG5uZXQvc21jL2FmX3NtYy5jLTI4NjMtXFx0XFx0U01DX1NUQVRfUlhfUEFZTE9BRChzbWMsIHJjLCByYyk7XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jPTMyODM9c3NpemVfdCBzbWNfc3BsaWNlX3JlYWQoc3RydWN0IHNvY2tldCAqc29jaywgbG9mZl90ICpwcG9zLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0zMzIwLVxcdFxcdFNNQ19TVEFUX0lOQyhzbWMsIHNwbGljZV9jbnQpO1xcbm5ldC9zbWMvYWZfc21jLmM6MzMyMTpcXHRcXHRyYyA9IHNtY19yeF9yZWN2bXNnKHNtYywgTlVMTCwgcGlwZSwgbGVuLCBmbGFncyk7XFxubmV0L3NtYy9hZl9zbWMuYy0zMzIyLVxcdH1cXG4tLVxcbm5ldC9zbWMvc21jX3J4LmM9Mjg5PXN0YXRpYyBpbnQgc21jX3J4X3JlY3ZfdXJnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4sXFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTMzMi1cXG5uZXQvc21jL3NtY19yeC5jOjMzMzpzdGF0aWMgYm9vbCBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc2l6ZV90IHBlZWtlZClcXG5uZXQvc21jL3NtY19yeC5jLTMzNC17XFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTM0NC1cXG5uZXQvc21jL3NtY19yeC5jOjM0NTovKiBzbWNfcnhfcmVjdm1zZyAtIHJlY2VpdmUgZGF0YSBmcm9tIFJNQkVcXG5uZXQvc21jL3NtY19yeC5jLTM0Ni0gKiBAbXNnOlxcdGNvcHkgZGF0YSB0byByZWNlaXZlIGJ1ZmZlclxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zNTEtICovXFxubmV0L3NtYy9zbWNfcnguYzozNTI6aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxubmV0L3NtYy9zbWNfcnguYy0zNTMtXFx0XFx0ICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKVxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zOTQtXFxubmV0L3NtYy9zbWNfcnguYzozOTU6XFx0XFx0aWYgKHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHNtYywgcGVla2VkX2J5dGVzKSlcXG5uZXQvc21jL3NtY19yeC5jLTM5Ni1cXHRcXHRcXHRnb3RvIGNvcHk7XFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTM5OS1cXHRcXHRcXHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXFxubmV0L3NtYy9zbWNfcnguYzo0MDA6XFx0XFx0XFx0ICogYWJvdmUgc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoKVxcbm5ldC9zbWMvc21jX3J4LmMtNDAxLVxcdFxcdFxcdCAqL1xcbm5ldC9zbWMvc21jX3J4LmM6NDAyOlxcdFxcdFxcdGlmIChzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzbWMsIHBlZWtlZF9ieXRlcykpXFxubmV0L3NtYy9zbWNfcnguYy00MDMtXFx0XFx0XFx0XFx0Z290byBjb3B5O1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYy01MjYtXFxubmV0L3NtYy9zbWNfcnguYzo1Mjc6XFx0XFx0dHJhY2Vfc21jX3J4X3JlY3Ztc2coc21jLCBjb3B5bGVuKTtcXG5uZXQvc21jL3NtY19yeC5jLTUyOC1cXHR9IHdoaWxlIChyZWFkX3JlbWFpbmluZyk7XFxuLS1cXG5uZXQvc21jL3NtY19yeC5oPTIwPXZvaWQgc21jX3J4X2luaXQoc3RydWN0IHNtY19zb2NrICpzbWMpO1xcbm5ldC9zbWMvc21jX3J4LmgtMjEtXFxubmV0L3NtYy9zbWNfcnguaDoyMjppbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcXG5uZXQvc21jL3NtY19yeC5oLTIzLVxcdFxcdCAgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsIHNpemVfdCBsZW4sIGludCBmbGFncyk7XFxuLS1cXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmM9Nj1FWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0woc21jX3N3aXRjaF90b19mYWxsYmFjayk7XFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5jOjc6RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKHNtY190eF9zZW5kbXNnKTtcXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmM6ODpFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0woc21jX3J4X3JlY3Ztc2cpO1xcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuYy05LUVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChzbWNyX2xpbmtfZG93bik7XFxuLS1cXG5uZXQvc21jL3NtY190cmFjZXBvaW50Lmg9NDQ9REVDTEFSRV9FVkVOVF9DTEFTUyhzbWNfbXNnX2V2ZW50LFxcbi0tXFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oLTcwLVxcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuaDo3MTpERUZJTkVfRVZFTlQoc21jX21zZ19ldmVudCwgc21jX3R4X3NlbmRtc2csXFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oLTcyLVxcbi0tXFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oLTc3LVxcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuaDo3ODpERUZJTkVfRVZFTlQoc21jX21zZ19ldmVudCwgc21jX3J4X3JlY3Ztc2csXFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oLTc5LVxcbi0tXFxubmV0L3NtYy9zbWNfdHguYz0xNTk9c3RhdGljIGJvb2wgc21jX3R4X3Nob3VsZF9jb3JrKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxuLS1cXG5uZXQvc21jL3NtY190eC5jLTE4MC0gKi9cXG5uZXQvc21jL3NtY190eC5jOjE4MTppbnQgc21jX3R4X3NlbmRtc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG5uZXQvc21jL3NtY190eC5jLTE4Mi17XFxuLS1cXG5uZXQvc21jL3NtY190eC5jLTI5OS1cXG5uZXQvc21jL3NtY190eC5jOjMwMDpcXHRcXHR0cmFjZV9zbWNfdHhfc2VuZG1zZyhzbWMsIGNvcHlsZW4pO1xcbm5ldC9zbWMvc21jX3R4LmMtMzAxLVxcdH0gLyogd2hpbGUgKG1zZ19kYXRhX2xlZnQobXNnKSkgKi9cXG4tLVxcbm5ldC9zbWMvc21jX3R4Lmg9MzI9dm9pZCBzbWNfdHhfaW5pdChzdHJ1Y3Qgc21jX3NvY2sgKnNtYyk7XFxubmV0L3NtYy9zbWNfdHguaDozMzppbnQgc21jX3R4X3NlbmRtc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbik7XFxubmV0L3NtYy9zbWNfdHguaC0zNC1pbnQgc21jX3R4X3NuZGJ1Zl9ub25lbXB0eShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDo1NS45MjQyMTcxNTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkwNDQwMDUxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNNQyBDREMgUmVjZWl2ZXIgUGF0aCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIFNNQyBDREMgcmVjZWl2ZXIgcGF0aC4gVGhlIGNvcmUgc29ja2V0IG9wZXJhdGlvbnMgZm9yIGBBRl9TTUNgLCBgc21jX3JlY3Ztc2dgIGFuZCBgc21jX3NlbmRtc2dgLCBhcmUgdGhlIG9uZXMgSSBzaG91bGQgYmUgZm9jdXNpbmcgb24uIFRoZXkgY2FsbCBgc21jX3J4X3JlY3Ztc2dgIGFuZCBgc21jX3R4X3NlbmRtc2dgLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBhbmFseXNpcy5cblxuTm93LCBJJ20gdHJ5aW5nIHRvIHRyYWNlIHRoZSBtZXNzYWdlIGhhbmRsaW5nLiBIZXJlLCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGxvb2tzIGxpa2UgdGhlIGZ1bmN0aW9uIHRoYXQncyBjYWxsaW5nIGBzbWNfY2RjX21zZ190b19ob3N0YCwgd2hpY2ggaXMgY3J1Y2lhbCBiZWNhdXNlIGl0IHRoZW4gdXRpbGl6ZXMgdGhvc2UgbW9kaWZpZWQgaW5saW5lIGZ1bmN0aW9ucy4gVGhlIHByb2JsZW0gaXMsIGl0J3Mgc3RhdGljISBBbmQgc28gaXMgYHNtY19jZGNfbXNnX3JlY3ZgLCBhbmQgdGhlIHJlY2VpdmVyIHRhc2tsZXQgZnVuY3Rpb24sIGBzbWNkX2NkY19yeF90c2tsZXRgLCBhbmQgdGhlIGhhbmRsZXIsIGBzbWNfY2RjX3J4X2hhbmRsZXJgLiBUaGlzIGlzIGEgaHVyZGxlLCBhcmUgdGhlcmUgYW55IG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIGhlcmU/IEkgbmVlZCB0byBmaW5kIHRoZSBub24tc3RhdGljIHBvaW50IG9mIGVudHJ5IGluIHRoaXMgQ0RDIHBhdGggdGhhdCBoYW5kbGVzIHJlY2VwdGlvbi4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gY2hlY2sgYG5ldC9zbWMvc21jX2NkYy5jYCBhbmQgaHVudCBmb3IgdGhhdCBlbnRyeSBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3NjYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MDAuODI4NjIwNDQxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIzODEwNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnZvaWQgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jPTIwOT1pbnQgc21jX2NkY19nZXRfc2xvdF9hbmRfbXNnX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMjI3LVxcbm5ldC9zbWMvc21jX2NkYy5jOjIyODp2b2lkIHNtY19jZGNfd2FpdF9wZW5kX3R4X3dyKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG5uZXQvc21jL3NtY19jZGMuYy0yMjkte1xcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9NDQyPXN0YXRpYyB2b2lkIHNtY2RfY2RjX3J4X3Rza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy00NjEtICovXFxubmV0L3NtYy9zbWNfY2RjLmM6NDYyOnZvaWQgc21jZF9jZGNfcnhfaW5pdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY2RjLmMtNDYzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MDAuOTMxMDA2NzAyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MTA0ODk1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDREMgTWVzc2FnZSBIYW5kbGluZyBGbG93KipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCBvZmYsIGBzbWNfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZGAgaXMgKm5vdCogc3RhdGljLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIE5vdywgd2hhdCBhYm91dCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gPyBBaCwgdGhhdCBvbmUgKmlzKiBzdGF0aWMuIEhtbSwgSSBuZWVkIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IEkgY2FuIHplcm8gaW4gb24gZm9yIHRoZSBSWCBwYXRoIG9mIHRoZXNlIENEQyBtZXNzYWdlcywgYSBnb29kIGZvY3VzIHN5bWJvbC4gTWF5YmUsIGp1c3QgbWF5YmUsIGBzbWNfY2RjX3J4X2hhbmRsZXJgIGlzIHJlZ2lzdGVyZWQgYXMgdGhlIGFjdHVhbCBoYW5kbGVyIGZvciBpbmNvbWluZyBtZXNzYWdlcy4gVGhhdCdzIGEgc3Ryb25nIHBvc3NpYmlsaXR5LiBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSBgc21jX2NkY19yeF9oYW5kbGVyc2AgaXMgdXNlZC4gQWgsIGl0IGxvb2tzIGxpa2UgYHNtY19jZGNfaW5pdGAgaGFuZGxlcyB0aGUgcmVnaXN0cmF0aW9uLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSBleHBlY3RlZC4gTm93IEknbSB0aGlua2luZyB0aGUgYWN0dWFsIGVudHJ5IHBvaW50IGlzIGxpa2VseSBpbiBgc21jX3dyLmNgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB3aGVyZSB0aGUgaGFyZHdhcmUgaW50ZXJydXB0cyB3b3VsZCBiZSBoYW5kbGVkLiBMZXQncyBzdGFydCB3aXRoIGBzbWNfd3JfcnhfcHJvY2Vzc19jcWVzYCwgdGhhdCBzZWVtcyBsaWtlIHRoZSBuZXh0IGxvZ2ljYWwgcGxhY2UgdG8gbG9vay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1MjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MDcuODQxNTAxNzE3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDY2NDE4OTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY193cl9yeF9wcm9jZXNzX2NxZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfd3IuYz00MzA9c3RhdGljIGlubGluZSB2b2lkIHNtY193cl9yeF9kZW11bHRpcGxleChzdHJ1Y3QgaWJfd2MgKndjKVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy00NDgtXFxubmV0L3NtYy9zbWNfd3IuYzo0NDk6c3RhdGljIGlubGluZSB2b2lkIHNtY193cl9yeF9wcm9jZXNzX2NxZXMoc3RydWN0IGliX3djIHdjW10sIGludCBudW0pXFxubmV0L3NtYy9zbWNfd3IuYy00NTAte1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYz00Nzk9c3RhdGljIHZvaWQgc21jX3dyX3J4X3Rhc2tsZXRfZm4oc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy00OTctXFx0XFx0XFx0YnJlYWs7XFxubmV0L3NtYy9zbWNfd3IuYzo0OTg6XFx0XFx0c21jX3dyX3J4X3Byb2Nlc3NfY3FlcyhcXHUwMDI2d2NbMF0sIHJjKTtcXG5uZXQvc21jL3NtY193ci5jLTQ5OS1cXHR9IHdoaWxlIChyYyBcXHUwMDNlIDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMTowOS45MDc5MjUzN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDYwNjMxNzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ0RDIFJlY2VpdmUgUGF0aCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIENEQyByZWNlaXZlIHBhdGguIGBzbWNfd3JfcnhfdGFza2xldF9mbmAsIHRoYXQncyB0aGUgY29yZSB0YXNrbGV0IGZ1bmN0aW9uLCByaWdodD8gTGV0J3MgcXVpY2tseSB2ZXJpZnkgaWYgaXQncyBnb3Qgc3RhdGljIGxpbmthZ2UuLi4gWWVwLCBzdGF0aWMuIEdvb2QuIE5vdywgd2hhdCBhYm91dCBgc21jX3dyX3J4X2RlbXVsdGlwbGV4YD8gQWgsIHRoYXQncyBzdGF0aWMgaW5saW5lLiBJbnRlcmVzdGluZy4gU28sIHRoZSBwaWN0dXJlIEknbSBnZXR0aW5nIGlzIHRoYXQgdGhlIENEQyByZWNlaXZlIHBhdGggaXMgKmxhcmdlbHkqIGNvbXBvc2VkIG9mIHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMsIGNhbGxlZCBmcm9tIHdpdGhpbiBlaXRoZXIgdGFza2xldHMgb3IgaW50ZXJydXB0IGhhbmRsZXJzLiBUaGF0IHJlaW5mb3JjZXMgbXkgaW5pdGlhbCBodW5jaCBhYm91dCBob3cgdGhlIGhhcmR3YXJlIGludGVyYWN0cyB3aXRoIHRoZSBzb2Z0d2FyZS5cblxuTm93LCB3aGVyZSBhcmUgdGhlIGtleSBwb2ludHMgb2YgaW50ZXJhY3Rpb24sIHdoZXJlIHRoZSBkYXRhIGZsb3cgaXMgbGVzcyBlbmNhcHN1bGF0ZWQ/IGBzbWNfcnhfcmVjdm1zZ2AgYW5kIGBzbWNfdHhfc2VuZG1zZ2AsIHNpbmNlIHRoZXkncmUgKm5vbiotc3RhdGljIGFuZCBkaXJlY3RseSBleHBvc2VkLCB0aG9zZSBzZWVtIGxpa2UgcHJpbWUgY2FuZGlkYXRlcyBmb3IgZGVlcGVyIGluc3BlY3Rpb24uIFRoZXkncmUgbGlrZWx5IGVudHJ5IHBvaW50cyBvciBjcnVjaWFsIGRhdGEgbWFuaXB1bGF0aW9uIHBvaW50cy4gQXJlIHRoZXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIENEQyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBMZXQncyB0YWtlIGEgbG9vayBhdCBgc21jX2NkY19nZXRfZnJlZV9zbG90YCAtIHByb2JhYmx5IHBsYXlzIGEgcm9sZSBpbiBidWZmZXIgbWFuYWdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIyMTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MTMuOTY4NTYwNTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MTkzMTcxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfY2RjX2dldF9mcmVlX3Nsb3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9MjY9c3RhdGljIHZvaWQgc21jX2NkY190eF9oYW5kbGVyKHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICpwbmRfc25kLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNzItXFxubmV0L3NtYy9zbWNfY2RjLmM6NzM6aW50IHNtY19jZGNfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXFxubmV0L3NtYy9zbWNfY2RjLmMtNzQtXFx0XFx0XFx0ICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYz0xNzQ9c3RhdGljIGludCBzbWNyX2NkY19nZXRfc2xvdF9hbmRfbXNnX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMTg1LVxcdFxcdHJldHVybiAtRU5PTElOSztcXG5uZXQvc21jL3NtY19jZGMuYzoxODY6XFx0cmMgPSBzbWNfY2RjX2dldF9mcmVlX3Nsb3QoY29ubiwgbGluaywgXFx1MDAyNndyX2J1ZiwgTlVMTCwgXFx1MDAyNnBlbmQpO1xcbm5ldC9zbWMvc21jX2NkYy5jLTE4Ny1cXHRpZiAocmMpXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuaD0zMDM9c3RydWN0IHNtY19jZGNfdHhfcGVuZCB7XFxuLS1cXG5uZXQvc21jL3NtY19jZGMuaC0zMDktXFxubmV0L3NtYy9zbWNfY2RjLmg6MzEwOmludCBzbWNfY2RjX2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxcbm5ldC9zbWMvc21jX2NkYy5oLTMxMS1cXHRcXHRcXHQgIHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYz0xMDk1PXN0cnVjdCBzbWNfbGluayAqc21jX3N3aXRjaF9jb25ucyhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMTQ5LVxcdFxcdC8qIHByZS1mZXRjaCBidWZmZXIgb3V0c2lkZSBvZiBzZW5kX2xvY2ssIG1pZ2h0IHNsZWVwICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjExNTA6XFx0XFx0cmMgPSBzbWNfY2RjX2dldF9mcmVlX3Nsb3QoY29ubiwgdG9fbG5rLCBcXHUwMDI2d3JfYnVmLCBOVUxMLCBcXHUwMDI2cGVuZCk7XFxubmV0L3NtYy9zbWNfY29yZS5jLTExNTEtXFx0XFx0aWYgKHJjKVxcbi0tXFxubmV0L3NtYy9zbWNfdHguYz01NjM9c3RhdGljIGludCBzbWNyX3R4X3NuZGJ1Zl9ub25lbXB0eShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxuLS1cXG5uZXQvc21jL3NtY190eC5jLTU3My1cXHRcXHRyZXR1cm4gLUVOT0xJTks7XFxubmV0L3NtYy9zbWNfdHguYzo1NzQ6XFx0cmMgPSBzbWNfY2RjX2dldF9mcmVlX3Nsb3QoY29ubiwgbGluaywgXFx1MDAyNndyX2J1ZiwgXFx1MDAyNndyX3JkbWFfYnVmLCBcXHUwMDI2cGVuZCk7XFxubmV0L3NtYy9zbWNfdHguYy01NzUtXFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMToxNC41MjA1MDMwNDNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzNzc1NjA3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENEQyBNZXNzYWdlIEhhbmRsaW5nIGluIGBuZXQvc21jL3NtY19jZGMuY2AqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGZvY3VzZWQgb24gQ0RDIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIGN1cnNvciBib3VuZHMgY2hlY2tpbmcg4oCTIGdvdCBpdC4gVGhhdCBtZWFucyBgc21jX3J4X3JlY3Ztc2dgIGFuZCBgc21jX3R4X3NlbmRtc2dgIGFyZSB0aGUga2V5IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRvIHNjcnV0aW5pemUuIExldCBtZSBzZWUuLi5haCwgeWVzLCBgc21jX3R4X3NlbmRtc2dgIGlzIHVwZGF0ZWQgdG8gaW5jb3Jwb3JhdGUgYSBjaGVjayBvbiBgd3JpdGVzcGFjZWAuIFRoYXQncyBpbXBvcnRhbnQ7IGl0J3MgdXNpbmcgdGhlIHBlZXIncyB3aXJlLWNvbnRyb2xsZWQgY29uc3VtZXIgY3Vyc29yIHRvIGRldGVybWluZSBhdmFpbGFibGUgc3BhY2UuIEFuZCBgc21jX3J4X3JlY3Ztc2dgIGlzIHNpbWlsYXJseSB1cGRhdGVkIHRvIGNoZWNrIGByZWFkYWJsZWAsIHdoaWNoIGlzIGRlcml2ZWQgZnJvbSB0aGUgcGVlcidzIHdpcmUtY29udHJvbGxlZCBwcm9kdWNlciBjdXJzb3IuIFNvIGJvdGggb2YgdGhvc2UgZnVuY3Rpb25zIGhhdmUgYmVlbiBkaXJlY3RseSBtb2RpZmllZCB0byBlbmZvcmNlIHRoZXNlIGJvdW5kcy5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBgbmV0L3NtYy9zbWNfY2RjLmNgIHRoYXQgYXJlIGFsc28gaW52b2x2ZWQgaW4gaGFuZGxpbmcgQ0RDIG1lc3NhZ2VzLiBJdCdzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoIGFuZCB2ZXJpZnkgdGhhdCB3ZSd2ZSBjb3ZlcmVkIGFsbCB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzLiBJIG5lZWQgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgY2hhbmdlcyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzMyNCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMToxOC42NTgyNjIyMTdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTY4NDEzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWjAtOV9dKyBzbWNfY2RjX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL3NtY19jZGMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19jZGMuYz0yNj1zdGF0aWMgdm9pZCBzbWNfY2RjX3R4X2hhbmRsZXIoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKnBuZF9zbmQsXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy03Mi1cXG5uZXQvc21jL3NtY19jZGMuYzo3MzppbnQgc21jX2NkY19nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcXG5uZXQvc21jL3NtY19jZGMuYy03NC1cXHRcXHRcXHQgIHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTk0PXN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfY2RjX2FkZF9wZW5kaW5nX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMTExLVxcbm5ldC9zbWMvc21jX2NkYy5jOjExMjppbnQgc21jX2NkY19tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXFxubmV0L3NtYy9zbWNfY2RjLmMtMTEzLVxcdFxcdCAgICAgc3RydWN0IHNtY193cl9idWYgKndyX2J1ZixcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTE3ND1zdGF0aWMgaW50IHNtY3JfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy0yMDgtXFxubmV0L3NtYy9zbWNfY2RjLmM6MjA5OmludCBzbWNfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY2RjLmMtMjEwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTIyNy1cXG5uZXQvc21jL3NtY19jZGMuYzoyMjg6dm9pZCBzbWNfY2RjX3dhaXRfcGVuZF90eF93cihzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY2RjLmMtMjI5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MTguODE3OTUyNjMzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzY2ODM4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTTUMgQ0RDIE1lc3NhZ2UgRmxvdyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgdGhhdCBgc21jX2NkY19tc2dfc2VuZGAgYW5kIGBzbWNfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZGAgYXJlIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCB3aGljaCBpcyB1c2VmdWwgaW5mb3JtYXRpb24gdG8ga25vdyBpbW1lZGlhdGVseS4gSG93ZXZlciwgdGhlIHBhdGNoIGlzIG1ha2luZyBjaGFuZ2VzIHRvIGBzbWNfY2RjX2N1cnNvcl90b19ob3N0YCwgYHNtY3JfY2RjX21zZ190b19ob3N0YCwgYW5kIGBzbWNkX2NkY19tc2dfdG9faG9zdGAsIGFuZCB0aG9zZSBhcmUgYWxsIGNhbGxlZCBkdXJpbmcgdGhlIFJYIHBhdGgg4oCTIHRoYXQncyB3aGVuIHdlJ3JlIHJlY2VpdmluZyBDREMgbWVzc2FnZXMgZnJvbSB0aGUgb3RoZXIgc2lkZS4gTm93LCB0aG9zZSBSWCBwYXRoIGZ1bmN0aW9ucz8gTW9zdGx5IHN0YXRpYy4gVGhhdCBtYWtlcyB0aGluZ3MgYSBiaXQgbW9yZSBpbnRlcmVzdGluZywgcmlnaHQ/XG5cbkdpdmVuIHRoaXMsIGl0IGxvb2tzIGxpa2UgYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYCBhcmUgZ29pbmcgdG8gYmUgdGhlIHByaW1lIHN1c3BlY3RzLCB0aGUgc3ltYm9scyB0aGF0IGRlc2VydmUgdGhlIGNsb3Nlc3QgaW5zcGVjdGlvbi4gVGhleSdyZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIGhlcmUuXG5cbkJlZm9yZSBkaWdnaW5nIGRlZXBlciwgSSBzaG91bGQgbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgZWxzZS4gTGV0IG1lIGNoZWNrIGZvciBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zLiBPa2F5LCB3ZSd2ZSBnb3QgYFNNQ2AgaXRzZWxmLCB3aGljaCBpcyBhIGtleSBzdGFydGluZyBwb2ludC4gQXJlIHRoZXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHJlbGF0ZWQgdG8gdGhlIFNNQyBjb25maWd1cmF0aW9uPyBJJ2xsIG5lZWQgdG8gY2hhc2UgdGhhdCBkb3duLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDIyNiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMToyMi44NTQ2NDAyNjZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NzMzMjU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU01DJFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MjMuNDMxOTc3Nzc2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTk1ODg2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgU01DKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYFNNQ2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIG1hcCBvdXQgaXRzIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBjb21wb25lbnRzLCBtb2R1bGVzLCBvciBsaWJyYXJpZXMgYFNNQ2AgcmVsaWVzIG9uIHRvIGZ1bmN0aW9uLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjb25zaWRlciwgYXQgYSBoaWdoIGxldmVsLCB0aGUgdHlwZXMgb2YgZGVwZW5kZW5jaWVzIEkgZXhwZWN0IHRvIHNlZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgY29yZSBsaWJyYXJpZXMsIHBlcmhhcHMgc29tZSBkb21haW4tc3BlY2lmaWMgdXRpbGl0aWVzLCBtYXliZSBldmVuIGV4dGVybmFsIHNlcnZpY2VzIGl0IGludGVyZmFjZXMgd2l0aD9cblxuTGV0J3Mgc3RhcnQgZnJvbSB0aGUgdG9wLCBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBhcmUgZXNzZW50aWFsLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgKnJlcXVpcmVkKiBmb3IgYFNNQ2AgdG8gZXZlbiBib290LCBhbmQgd2hhdCBpcyAqbmljZS10by1oYXZlKi4gVW5kZXJzdGFuZGluZyB0aGUgY29yZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbC4gVGhlIG5vbi1lc3NlbnRpYWwsIG9yIHBvdGVudGlhbGx5IG9wdGlvbmFsIGRlcGVuZGVuY2llcyB3aWxsIGJlIGludGVyZXN0aW5nIC0ga25vd2luZyB0aG9zZSBtaWdodCB1bmxvY2sgbmV3IHBvc3NpYmlsaXRpZXMgZm9yIG9wdGltaXphdGlvbi5cblxuSSdtIHRoaW5raW5nIGFib3V0IHRoZSBsYXllcnMgaGVyZS4gSXMgdGhpcyBhIGRlZXAgZGVwZW5kZW5jeSBncmFwaCwgb3IgcmVsYXRpdmVseSBzaGFsbG93PyBUaGUgbW9yZSBsYXllcnMsIHRoZSBtb3JlIGNvbXBsZXggdGhlIHN5c3RlbSBiZWNvbWVzLlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gbG9vayBwYXN0IGp1c3QgdGhlIGRpcmVjdCBkZXBlbmRlbmNpZXMuIFdoYXQgYXJlIHRoZSBpbmRpcmVjdCBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgZGVwZW5kZW5jaWVzPyBIb3cgZG9lcyBgU01DYCBpbmZsdWVuY2UgKm90aGVyKiBjb21wb25lbnRzPyBXaGF0IHJpc2tzIG9yIHBvdGVudGlhbCBib3R0bGVuZWNrcyBkb2VzIGBTTUNgIGludHJvZHVjZT8gSSBuZWVkIHRoZSBmdWxsIHBpY3R1cmUgaGVyZSB0byBtYWtlIGFueSByZWFsIGFzc2Vzc21lbnQgb2YgaXRzIGRlc2lnbiBvciBwb3RlbnRpYWwgaW1wcm92ZW1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDc1NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjExOjI3LjA1MTU3MTQyNVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc21jL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTTUNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EIFxcdTAwMjZcXHUwMDI2IERJQlNcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgU01DLVIgcHJvdmlkZXMgYSBcXFwic29ja2V0cyBvdmVyIFJETUFcXFwiIHNvbHV0aW9uIG1ha2luZyB1c2Ugb2ZcXG4gICA3OlxcdFxcdCAgUkRNQSBvdmVyIENvbnZlcmdlZCBFdGhlcm5ldCAoUm9DRSkgdGVjaG5vbG9neSB0byB1cGdyYWRlXFxuICAgODpcXHRcXHQgIEFGX0lORVQgVENQIGNvbm5lY3Rpb25zIHRyYW5zcGFyZW50bHkuXFxuICAgOTpcXHRcXHQgIFRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU01DLVIgc29sdXRpb24gaXMgZGVzaWduZWQgYXNcXG4gIDEwOlxcdFxcdCAgYSBzZXBhcmF0ZSBzb2NrZXQgZmFtaWx5IFNNQy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBTTUNfRElBR1xcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBTTUNcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcXG4gIDE5OlxcdFxcdCAgc21jc3MuXFxuICAyMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MjcuMDUxNjcwOTY1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDIzMTc1MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBUcmFpbiBvZiBUaG91Z2h0KipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZXNlIGRlcGVuZGVuY2llcy4gSW5pdGlhbGx5LCBJIHRob3VnaHQgaXQgd2FzIGRlcGVuZGVudCBvbiBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kIGBESUJTYCwgYnV0IHNvbWV0aGluZyBmZWx0IG9mZi4gTGV0IG1lIHJlLWV2YWx1YXRlLi4uIFJpZ2h0LCBob2xkIG9uLCBpdCdzIGp1c3QgYElORVRgIGFuZCBgSU5GSU5JQkFORGAuIEdvb2QsIGdvdCBpdC4gQmV0dGVyIGRvdWJsZSBjaGVjaywgdGhvdWdoLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBJJ20gZ29pbmcgdG8gdGFrZSBhbm90aGVyIGxvb2sgYXQgdGhhdCBgbmV0L3NtYy9LY29uZmlnYCBmaWxlLiBOZWVkIHRvIGVuc3VyZSBJIGhhdmVuJ3QgbWlzcmVhZCB0aGUgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM1OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MzAuMTkzOTkxNjQ1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4MjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNNQ1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgRElCU1xcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBTTUMtUiBwcm92aWRlcyBhIFxcXCJzb2NrZXRzIG92ZXIgUkRNQVxcXCIgc29sdXRpb24gbWFraW5nIHVzZSBvZlxcbiAgIDc6XFx0XFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcXG4gICA4OlxcdFxcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cXG4gICA5OlxcdFxcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xcbiAgMTA6XFx0XFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMTozMC4xOTQwOTIyNDVaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4Nzg3NDkzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIENvbmZ1c2lvbiBhbmQgQ2xhcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYW5kIEkgc2VlIGBESUJTYC4gV2FpdCBhIG1pbnV0ZSwgaXMgdGhhdCByaWdodD8gRGlkIEkgbWlzcmVhZCBzb21ldGhpbmc/IE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gaW1tZWRpYXRlbHkgY2hlY2ssIHRvIHNlZSBpZiBpdCdzIGEgdHlwbyBvciBzb21ldGhpbmcuIE9rYXksIGxldCBtZSBxdWlja2x5IGdvIGJhY2sgYW5kIHZlcmlmeS4gQWgsIHllcywgdGhlcmUgaXQgaXM6IGBkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IERJQlNgLiBSaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgRElCU2AgaXMgaW4gdGhpcyBjb250ZXh0LiBMZXQgbWUgbWFrZSBzdXJlIEknbSBzZWVpbmcgdGhpcyBjb3JyZWN0bHkuIE9rLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgYWN0dWFsIGZpbGUgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBSaWdodCwgc28gaXQncyBgZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYCBhbHJpZ2h0LCBsZXQgbWUgY2hlY2sgdGhlIGZpbGUgcHJvcGVybHkgYWdhaW4uIExldCBtZSBqdXN0IGdyZXAgZm9yIGBESUJTYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3NjAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMTozNC4wODE5NzE5MjFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTg2NjMxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJESUJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL0tjb25maWc9Mj1jb25maWcgU01DXFxubmV0L3NtYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbm5ldC9zbWMvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EIFxcdTAwMjZcXHUwMDI2IERJQlNcXG5uZXQvc21jL0tjb25maWctNS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjExOjM0LjIwMzg0NTJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkwNTE5NjI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbml0aWFsIEltcHJlc3Npb24gYW5kIFRlcm1pbm9sb2d5IFZlcmlmaWNhdGlvbioqXG5cblwiV2FpdCwgZGlkIEkganVzdCBzZWUgYERJQlNgPyBSZWFsbHk/IEh1aC4gSW50ZXJlc3RpbmcuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcywgdGhhdCdzIG5vdCBzb21ldGhpbmcgSSBzZWUgZXZlcnkgZGF5LCBlc3BlY2lhbGx5IGluIHRoaXMgY29udGV4dC4gQWxyaWdodCwgaG9sZCBvbi4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHdoYXQgd2UncmUgZGVhbGluZyB3aXRoLiBJdCdzIGNydWNpYWwgdG8gZW5zdXJlIHRoZXJlJ3Mgbm8gbWlzaW50ZXJwcmV0YXRpb24sIGVzcGVjaWFsbHkgd2l0aCBhY3JvbnltcyB0aGF0IGNhbiBoYXZlIG11bHRpcGxlIG1lYW5pbmdzIGRlcGVuZGluZyBvbiB0aGUgZG9tYWluLiBJIG5lZWQgdG8gZXN0YWJsaXNoIGEgYmFzZSBkZWZpbml0aW9uIGZvciBgRElCU2AgYmVmb3JlIEkgY2FuIHByb3Blcmx5IGFzc2VzcyBpdC5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjE0NCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjExOjM3LjEwOTA0NDE1WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODA0MzcyNzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBESUJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXFxuZHJpdmVycy9kaWJzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE1LVxcdGJvb2wgXFxcIkludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MzkuOTEzNDI2MTg5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NTAyOTEzNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6XG5cbioqQ2hlY2tpbmcgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nKipcblxuQWxyaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBgRElCU2AsIHRoYXQncyBEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcuIEdvdCBpdC4gTm93LCBnaXZlbiB0aGUgY29udGV4dCwgSSdtIGdvaW5nIHRvIGFzc3VtZSB0aGlzIGlzIHJlbGF0ZWQgdG8gaGlnaC1wZXJmb3JtYW5jZSBuZXR3b3JraW5nIG9yIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiB3aXRoaW4gYSBzZXJ2ZXIgb3IgY2x1c3Rlci4gU28sIHRoZSBtYWluIGludGVyZmFjZXMgdGhhdCBjb21lIHRvIG1pbmQgYXJlIGBJTkVUYCAodHlwaWNhbCBUQ1AvSVApLCBgSU5GSU5JQkFORGAgKGhpZ2gtc3BlZWQgaW50ZXJjb25uZWN0KSwgYERJQlNgLCBhbmQgYFNNQ2AgKFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMpLiBJdCdzIGEgcXVpY2sgbWVudGFsIGNoZWNrbGlzdCBvZiB0aGUga2V5IGNvbnRlbmRlcnMgZm9yIHRoaXMga2luZCBvZiB3b3JrLlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIHdlJ3JlIGNvdmVyaW5nIGFsbCBvdXIgYmFzZXMuIGBJTkZJTklCQU5EYCBpcyBvZnRlbiBpbnRlZ3JhdGVkIHdpdGggYSBsb3Qgb2YgbGlicmFyaWVzLiBTbyBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGVuc3VyZSBpdCdzIGRlcGVuZGVuY2llcyBhcmUgaW4gY2hlY2suIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYElORklOSUJBTkRgLCBhcyBpdCBmcmVxdWVudGx5IHJlbGllcyBvbiBvdGhlciB1bmRlcmx5aW5nIGRyaXZlcnMgb3IgcHJvdG9jb2xzLiBJJ2xsIHNlZSBpZiBJIG5lZWQgdG8gYWRqdXN0IG9yIGFkZCBhbnl0aGluZyBiYXNlZCBvbiB3aGF0IGl0IGRlcGVuZHMgb24uIFRoaXMgaXMgdG8gZW5zdXJlIHdlIGhhdmUgYSBnb29kIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQ1NiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjExOjQzLjU2MzcyMTYxNVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAzMDY3Nzc3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU5GSU5JQkFORCRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MjptZW51Y29uZmlnIElORklOSUJBTkRcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbmZpbmlCYW5kIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjExOjQ2LjU5NDQwNDkxNFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTEyMTk3MDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqRXhhbWluaW5nIEluZmluaWJhbmQgRGVwZW5kZW5jaWVzIGluIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aGUgSW5maW5pYmFuZCBzdWJzeXN0ZW0gd2l0aGluIHRoZSBrZXJuZWwuIE15IGZpcnN0IGluc3RpbmN0LCBhbmQgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2gsIGlzIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhhdCBtZWFucyBJIHNob3VsZCBuYXZpZ2F0ZSB0byB0aGUgYGRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnYCBmaWxlLiBJIGtub3cgdGhhdCdzIHdoZXJlIHRoZSByZWxldmFudCBgQ09ORklHX0lORklOSUJBTkRgIHNldHRpbmcsIGFuZCBpdHMgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZmVhdHVyZXMgb3IgaGFyZHdhcmUsIGlzIGRlZmluZWQuIEJ5IGV4YW1pbmluZyB0aGlzIGZpbGUsIEknbGwgYmUgYWJsZSB0byBxdWlja2x5IGRldGVybWluZSBhbGwgdGhlIHVuZGVybHlpbmcgcmVxdWlyZW1lbnRzIGFuZCBjb25zdHJhaW50cyBmb3IgZW5hYmxpbmcgSW5maW5pYmFuZCBzdXBwb3J0IGluIHRoaXMga2VybmVsIGJ1aWxkLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSBuZWVkIHRvIGRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjg1OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjExOjQ5LjUwNjYwNDI4NFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0bWVudWNvbmZpZyBJTkZJTklCQU5EXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiSW5maW5pQmFuZCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiAhQUxQSEFcXG4gICA4OlxcdFxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbiAgIDk6XFx0XFx0c2VsZWN0IElSUV9QT0xMXFxuICAxMDpcXHRcXHRzZWxlY3QgRElNTElCXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjExOjQ5LjUwNjY2NjkzNFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzA3NjM4MzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEtlcm5lbCBDb25maWd1cmF0aW9uIENoZWNrbGlzdCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBzZXR0aW5nIHVwIGBJTkZJTklCQU5EYCBpcyBnb2luZyB0byBsZWFuIG9uIGEgZmV3IGtleSBidWlsZGluZyBibG9ja3M6IGBIQVNfSU9NRU1gLCBgSEFTX0RNQWAsIGBORVRgLCBhbmQgYElORVRgLCBidXQgbm90IGlmIHdlIGFyZSBvbiBhbiBgQUxQSEFgIHN5c3RlbSwgd2hpY2ggSSB3b3VsZG4ndCBleHBlY3QgYW55d2F5LiBJJ2xsIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kLiBTbywgaWYgSSB3YW50IGBJTkZJTklCQU5EYCB3b3JraW5nIGFzIGV4cGVjdGVkLCBJJ2xsIG5lZWQgdG8gZW5zdXJlIHRob3NlIGFyZSBhbHNvIGNvbmZpZ3VyZWQgcHJvcGVybHkuIFxuXG5TcGVjaWZpY2FsbHksIGBJTkVUYCwgYElORklOSUJBTkRgLCBgRElCU2AsIGFuZCBgU01DYCBzZWVtIHRvIGJlIHRoZSBwcmltYXJ5IGNvbmZpZ3MgaW52b2x2ZWQgaGVyZS4gTm93LCBJIHNob3VsZCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZXF1aXJlbWVudHMgb2YgYERJQlNgIHNpbmNlIGl0J3Mgb25lIG9mIHRoZSBvcHRpb25zLiBMZXQncyBzZWUgd2hhdCB0aGF0IGRlcGVuZHMgb24uLi4gSXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBkZXBlbmRlbmN5IHRyZWUsIGFuZCBJJ2xsIG5lZWQgdG8gZGVsdmUgaW50byBgRElCU2AgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gb3JkZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MjA3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMTo1Mi44MTQzMDczOFoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdGNvbmZpZyBESUJTXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZWZhdWx0IG5cXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcXG4gICA3OlxcdFxcdCAgdXNlcyBjb21tb24gcGh5c2ljYWwgKGludGVybmFsKSBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIGRpcmVjdCBhY2Nlc3NcXG4gICA4OlxcdFxcdCAgaW50byBhIHJlbW90ZSBidWZmZXIuXFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIHByb3ZpZGUgdGhlIGFic3RyYWN0aW9uIGxheWVyIGJldHdlZW5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6NTIuODE0MzY1OTZaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ3MDM0MjE5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBUaGlzIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZvciBhIHRhcmdldGVkIGZ1enppbmcgYXBwcm9hY2guIEl0IGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGNydWNpYWwgYm91bmRzIGNoZWNraW5nIHdpdGhpbiB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBwcm90b2NvbCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBDREMgKENvbm5lY3Rpb24gRGF0YSBDaGFubmVsKSBtZXNzYWdlIHByb2Nlc3NpbmcuIFRoZSBnb2FsIGlzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBoYW5kbGluZyBwb3RlbnRpYWxseSBtYWxpY2lvdXMgb3IgY29ycnVwdGVkIENEQyBtZXNzYWdlcy4gVGhlIGtleSB0YWtlYXdheSBpcyB0aGF0IHRoaXMgdG91Y2hlcyBjb3JlIGtlcm5lbCBsb2dpYyBkaXJlY3RseSBleHBvc2VkIHZpYSB0aGUgU01DIHByb3RvY29sLlxuXG5GaXJzdCwgdGhlIGRlcGVuZGVuY2llcyBhcmUgc3RyYWlnaHRmb3J3YXJkOyB3ZSBvbmx5IG5lZWQgdG8gZW5hYmxlIGBTTUNgLCBgSU5GSU5JQkFORGAsIGFuZCBgRElCU2AgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGUgYW5hbHlzaXMgaW5kaWNhdGVzIHRoaXMgaXMgYSBwcm9taXNpbmcgYXJlYSBmb3IgZnV6emluZyAoV29ydGhGdXp6aW5nOiB0cnVlKS4gVGhlIGlkZW50aWZpZWQgZm9jdXMgc3ltYm9scyBhcmUgYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYC5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCB0aGVzZSBhcmUgdGhlIG9ubHkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgZGlyZWN0bHkgbW9kaWZpZWQuIFRoZSBvdGhlciBjaGFuZ2VzIGFyZSBpbmxpbmVkIG9yIHN0YXRpYyBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIENEQyBtZXNzYWdlIGNvbnZlcnNpb246IGBzbWNfY2RjX2N1cnNvcl90b19ob3N0YCwgYHNtY3JfY2RjX21zZ190b19ob3N0YCwgYHNtY2RfY2RjX21zZ190b19ob3N0YCwgYHNtY19jZGNfbXNnX3RvX2hvc3RgLCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gLCBgc21jX2NkY19tc2dfcmVjdmAsIGBzbWNkX2NkY19yeF90c2tsZXRgLCBhbmQgYHNtY19jZGNfcnhfaGFuZGxlcmAuICBIb3dldmVyLCBiZWNhdXNlIG9mIHRoZSBjYWxsIGNoYWluOiAgYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYCBhcmUgdGhlIGVudHJ5IHBvaW50cy4gVGhlcmVmb3JlLCBmb2N1c2luZyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlc2UgdHdvIGZ1bmN0aW9ucyBpcyBhIGNvcnJlY3QgYW5kIHN1ZmZpY2llbnQgc3RyYXRlZ3kuXG5cbkZpbmFsbHksIEkgdmVyaWZpZWQgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGVzZSBrZXkgZnVuY3Rpb25zOiB0aGV5IGFyZSBwYXJ0IG9mIHRoZSBzb2NrZXQgb3BlcmF0aW9ucyAoYHNtY19yZWN2bXNnYCBhbmQgYHNtY19zZW5kbXNnYCkgZm9yIHRoZSBgQUZfU01DYCBhZGRyZXNzIGZhbWlseS4gVGhpcyBtZWFucyBhbnkgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIGNhbiB0cmlnZ2VyIHRoZW0gYnkgY3JlYXRpbmcgYW4gYEFGX1NNQ2Agc29ja2V0IGFuZCBjYWxsaW5nIGByZWN2bXNnYCBvciBgc2VuZG1zZ2AuIFBlcmZlY3QhIFRoaXMgbWFrZXMgY3JhZnRpbmcgdGVzdCBjYXNlcyByZWxhdGl2ZWx5IGVhc3kuXG5cbk9rYXksIEknbSBjb25maWRlbnQgaW4gdGhpcyBzdHJhdGVneS4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NjQ1LCJPdXRwdXRUb2tlbnMiOjExNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjEyOjAwLjI4NDcxMjcwN1oiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjU3MjQ1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jX3J4X3JlY3Ztc2dcIixcbiAgICBcInNtY190eF9zZW5kbXNnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gU01DIENEQyBtZXNzYWdlIHByb2Nlc3NpbmcgYW5kIHNvY2tldCByZWNlaXZlL3RyYW5zbWl0IHBhdGhzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBoYW5kbGluZyBmb3JnZWQgb3IgbWFsZm9ybWVkIENEQyBtZXNzYWdlcyBmcm9tIGEgcGVlci4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgaW4gdGhlIFNNQyBwcm90b2NvbCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jX3J4X3JlY3Ztc2dcIixcbiAgICBcInNtY190eF9zZW5kbXNnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gU01DIENEQyBtZXNzYWdlIHByb2Nlc3NpbmcgYW5kIHNvY2tldCByZWNlaXZlL3RyYW5zbWl0IHBhdGhzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBoYW5kbGluZyBmb3JnZWQgb3IgbWFsZm9ybWVkIENEQyBtZXNzYWdlcyBmcm9tIGEgcGVlci4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgaW4gdGhlIFNNQyBwcm90b2NvbCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbx2rt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 04:44:26 +0000 UTC FinishedAt: 2026-07-25 05:12:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4539944e515183668109bdf4d0c3d7d228383d88", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4539944e515183668109bdf4d0c3d7d228383d88", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS" ], "series_id": "8767ef1c-4c0f-472f-b8a1-c02ca36a55f6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smc_rx_recvmsg", "smc_tx_sendmsg" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfcnhfcmVjdm1zZyYjMzQ7LAogICAgJiMzNDtzbWNfdHhfc2VuZG1zZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBTTUMgQ0RDIG1lc3NhZ2UgcHJvY2Vzc2luZyBhbmQgc29ja2V0IHJlY2VpdmUvdHJhbnNtaXQgcGF0aHMgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGhhbmRsaW5nIGZvcmdlZCBvciBtYWxmb3JtZWQgQ0RDIG1lc3NhZ2VzIGZyb20gYSBwZWVyLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgU01DIHByb3RvY29sIHN1YnN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE3NDY2ZDgyNjFiMTMwMDc0MjhjNDY1Njg3NjI2ODIyM2VhYmNmOGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwNToxMDoyNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jZGMuaCBiL25ldC9zbWMvc21jX2NkYy5oXG5pbmRleCA2OTZjYzExZjIzMDNiOS4uY2E3NmVmNjMwMzU2NmMgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jZGMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfY2RjLmhcbkBAIC0yMjEsNyAmIzQzOzIyMSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfaG9zdF9tc2dfdG9fY2RjKHN0cnVjdCBzbWNfY2RjX21zZyAqcGVlcixcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgc21jX2NkY19jdXJzb3JfdG9faG9zdCh1bmlvbiBzbWNfaG9zdF9jdXJzb3IgKmxvY2FsLFxuIFx0XHRcdFx0XHQgIHVuaW9uIHNtY19jZGNfY3Vyc29yICpwZWVyLFxuLVx0XHRcdFx0XHQgIHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbiYjNDM7XHRcdFx0XHRcdCAgc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxuJiM0MztcdFx0XHRcdFx0ICBpbnQgbWF4X2NvdW50KVxuIHtcbiBcdHVuaW9uIHNtY19ob3N0X2N1cnNvciB0ZW1wLCBvbGQ7XG4gXHR1bmlvbiBzbWNfY2RjX2N1cnNvciBuZXQ7XG5AQCAtMjM1LDYgJiM0MzsyMzYsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfY3Vyc29yX3RvX2hvc3QodW5pb24gc21jX2hvc3RfY3Vyc29yICpsb2NhbCxcbiBcdGlmICgob2xkLndyYXAgPT0gdGVtcC53cmFwKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAob2xkLmNvdW50IFx1MDAzZSB0ZW1wLmNvdW50KSlcbiBcdFx0cmV0dXJuO1xuJiM0MztcdC8qIFRoZSBwZWVyIHByb2R1Y2VyIGN1cnNvciBpcyB3aXJlLWNvbnRyb2xsZWQgYW5kIGlzIGxhdGVyIHVzZWQgYXMgYVxuJiM0MztcdCAqIHJhdyBpbmRleCBpbnRvIG91ciBSTUIgYnkgdGhlIHVyZ2VudCBwYXRoOyBib3VuZCBpdHMgY291bnQgdG8gdGhlXG4mIzQzO1x0ICogUk1CLiAgbWF4X2NvdW50ID09IDAgbGVhdmVzIHRoZSBjb25zdW1lciBjdXJzb3IgdW5ib3VuZGVkIGhlcmU6IGl0XG4mIzQzO1x0ICogaW5kZXhlcyB0aGUgcGVlciYjMzk7cyBSTUIgKGJvdW5kZWQgYnkgcGVlcl9ybWJlX3NpemUsIG5vdCBvdXJcbiYjNDM7XHQgKiBybWJfZGVzYy1cdTAwM2VsZW4pLCBzbyBjbGFtcGluZyBpdCB0byBybWJfZGVzYy1cdTAwM2VsZW4gd291bGQgdW5kZXItY3JlZGl0XG4mIzQzO1x0ICogcGVlcl9ybWJlX3NwYWNlIGFuZCBzdGFsbCB0cmFuc21pdCB0byBwZWVycyB3aXRoIGEgbGFyZ2VyIFJNQi5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAobWF4X2NvdW50IFx1MDAyNlx1MDAyNiB0ZW1wLmNvdW50IFx1MDAzZSBtYXhfY291bnQpXG4mIzQzO1x0XHR0ZW1wLmNvdW50ID0gbWF4X2NvdW50O1xuIFx0c21jX2N1cnNfY29weShsb2NhbCwgXHUwMDI2dGVtcCwgY29ubik7XG4gfVxuIFxuQEAgLTI0Niw4ICYjNDM7MjU2LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbWNyX2NkY19tc2dfdG9faG9zdChzdHJ1Y3Qgc21jX2hvc3RfY2RjX21zZyAqbG9jYWwsXG4gXHRsb2NhbC1cdTAwM2VsZW4gPSBwZWVyLVx1MDAzZWxlbjtcbiBcdGxvY2FsLVx1MDAzZXNlcW5vID0gbnRvaHMocGVlci1cdTAwM2VzZXFubyk7XG4gXHRsb2NhbC1cdTAwM2V0b2tlbiA9IG50b2hsKHBlZXItXHUwMDNldG9rZW4pO1xuLVx0c21jX2NkY19jdXJzb3JfdG9faG9zdChcdTAwMjZsb2NhbC1cdTAwM2Vwcm9kLCBcdTAwMjZwZWVyLVx1MDAzZXByb2QsIGNvbm4pO1xuLVx0c21jX2NkY19jdXJzb3JfdG9faG9zdChcdTAwMjZsb2NhbC1cdTAwM2Vjb25zLCBcdTAwMjZwZWVyLVx1MDAzZWNvbnMsIGNvbm4pO1xuJiM0MztcdC8qIGJvdW5kIHRoZSB3aXJlLWNvbnRyb2xsZWQgcHJvZHVjZXIgY3Vyc29yIHRvIG91ciBSTUIgKHVzZWQgYXMgYSByYXdcbiYjNDM7XHQgKiBpbmRleCBieSB0aGUgdXJnZW50IHBhdGgpOyBsZWF2ZSB0aGUgY29uc3VtZXIgY3Vyc29yIHVuYm91bmRlZCAtLSBpdFxuJiM0MztcdCAqIGluZGV4ZXMgdGhlIHBlZXImIzM5O3MgUk1CIGFuZCBpcyBib3VuZGVkIGJ5IHBlZXJfcm1iZV9zaXplLlxuJiM0MztcdCAqL1xuJiM0MztcdHNtY19jZGNfY3Vyc29yX3RvX2hvc3QoXHUwMDI2bG9jYWwtXHUwMDNlcHJvZCwgXHUwMDI2cGVlci1cdTAwM2Vwcm9kLCBjb25uLFxuJiM0MztcdFx0XHQgICAgICAgY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW4pO1xuJiM0MztcdHNtY19jZGNfY3Vyc29yX3RvX2hvc3QoXHUwMDI2bG9jYWwtXHUwMDNlY29ucywgXHUwMDI2cGVlci1cdTAwM2Vjb25zLCBjb25uLCAwKTtcbiBcdGxvY2FsLVx1MDAzZXByb2RfZmxhZ3MgPSBwZWVyLVx1MDAzZXByb2RfZmxhZ3M7XG4gXHRsb2NhbC1cdTAwM2Vjb25uX3N0YXRlX2ZsYWdzID0gcGVlci1cdTAwM2Vjb25uX3N0YXRlX2ZsYWdzO1xuIH1cbkBAIC0yNjAsNiAmIzQzOzI3NSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc21jZF9jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLFxuIFxuIFx0dGVtcC53cmFwID0gcGVlci1cdTAwM2Vwcm9kLndyYXA7XG4gXHR0ZW1wLmNvdW50ID0gcGVlci1cdTAwM2Vwcm9kLmNvdW50O1xuJiM0MztcdC8qIHRoZSBwZWVyIHByb2R1Y2VyIGN1cnNvciBpcyB3aXJlLWNvbnRyb2xsZWQgYW5kIGlzIHVzZWQgYXMgYSByYXdcbiYjNDM7XHQgKiBpbmRleCBpbnRvIG91ciBSTUIgYnkgdGhlIHVyZ2VudCBwYXRoOyBib3VuZCBpdCB0byB0aGUgUk1CLiAgVGhlXG4mIzQzO1x0ICogY29uc3VtZXIgY3Vyc29yIGJlbG93IGluZGV4ZXMgdGhlIHBlZXImIzM5O3MgUk1CIGFuZCBpcyBsZWZ0IHVuYm91bmRlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAodGVtcC5jb3VudCBcdTAwM2UgY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW4pXG4mIzQzO1x0XHR0ZW1wLmNvdW50ID0gY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW47XG4gXHRzbWNfY3Vyc19jb3B5KFx1MDAyNmxvY2FsLVx1MDAzZXByb2QsIFx1MDAyNnRlbXAsIGNvbm4pO1xuIFxuIFx0dGVtcC53cmFwID0gcGVlci1cdTAwM2Vjb25zLndyYXA7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfcnguYyBiL25ldC9zbWMvc21jX3J4LmNcbmluZGV4IGMxZDliOTIzOTM4ZGFkLi5mNDYxY2YxMGIwODU1YiAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX3J4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX3J4LmNcbkBAIC00NDIsNiAmIzQzOzQ0MiwxOCBAQCBpbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcbiBcdFx0LyogaW5pdGlhbGl6ZSB2YXJpYWJsZXMgZm9yIDFzdCBpdGVyYXRpb24gb2Ygc3Vic2VxdWVudCBsb29wICovXG4gXHRcdC8qIGNvdWxkIGJlIGp1c3QgMSBieXRlLCBldmVuIGFmdGVyIHdhaXRpbmcgb24gZGF0YSBhYm92ZSAqL1xuIFx0XHRyZWFkYWJsZSA9IHNtY19yeF9kYXRhX2F2YWlsYWJsZShjb25uLCBwZWVrZWRfYnl0ZXMpO1xuJiM0MztcdFx0LyogYnl0ZXNfdG9fcmN2IGlzIGFjY3VtdWxhdGVkIGZyb20gdGhlIHBlZXImIzM5O3Mgd2lyZS1jb250cm9sbGVkXG4mIzQzO1x0XHQgKiBwcm9kdWNlciBjdXJzb3I7IGEgZm9yZ2VkIGN1cnNvciBjYW4gZHJpdmUgaXQgcGFzdCB0aGUgUk1CLFxuJiM0MztcdFx0ICogb3Igb3ZlcmZsb3cgdGhlIHNpZ25lZCBhY2N1bXVsYXRvciB0byBhIG5lZ2F0aXZlIHZhbHVlIGFjcm9zc1xuJiM0MztcdFx0ICogbWFueSBDREMgbWVzc2FnZXMgKHdoaWNoIGEgcGxhaW4gXCYjMzQ7XHUwMDNlIGxlblwmIzM0OyBjaGVjayB3b3VsZCBtaXNzXG4mIzQzO1x0XHQgKiBiZWZvcmUgdGhlIHNpemVfdCBjYXN0IGJlbG93IHR1cm5zIGl0IGh1Z2UpLiAgQm91bmQgaXQgdG8gdGhlXG4mIzQzO1x0XHQgKiBSTUIgaW4gZWl0aGVyIGNhc2Ugc28gdGhlIHdyYXAtYXJvdW5kIGNvcHkgY2Fubm90IHJ1biBwYXN0XG4mIzQzO1x0XHQgKiBybWJfZGVzYy1cdTAwM2VsZW4uICBUaGlzIGVuZm9yY2VzIHRoZSBkb2N1bWVudGVkXG4mIzQzO1x0XHQgKiAwIFx1MDAzYz0gYnl0ZXNfdG9fcmN2IFx1MDAzYz0gcm1iX2Rlc2MtXHUwMDNlbGVuIGludmFyaWFudCBhdCB0aGUgY29uc3VtZXIsXG4mIzQzO1x0XHQgKiByYWNlLWZyZWUgYWdhaW5zdCB0aGUgcHJvZHVjZXIgdXBkYXRlIGluIHRoZSByZWNlaXZlIHRhc2tsZXQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChyZWFkYWJsZSBcdTAwM2MgMCB8fCByZWFkYWJsZSBcdTAwM2UgY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW4pXG4mIzQzO1x0XHRcdHJlYWRhYmxlID0gY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW47XG4gXHRcdHNwbGJ5dGVzID0gYXRvbWljX3JlYWQoXHUwMDI2Y29ubi1cdTAwM2VzcGxpY2VfcGVuZGluZyk7XG4gXHRcdGlmICghcmVhZGFibGUgfHwgKG1zZyBcdTAwMjZcdTAwMjYgc3BsYnl0ZXMpKSB7XG4gXHRcdFx0aWYgKHNwbGJ5dGVzKVxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3R4LmMgYi9uZXQvc21jL3NtY190eC5jXG5pbmRleCAzMTQ0YjRiMWZlMjkwMS4uNTkxNmYwMjA2MGZiOTAgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY190eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY190eC5jXG5AQCAtMjMzLDYgJiM0MzsyMzMsMTkgQEAgaW50IHNtY190eF9zZW5kbXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4gXHRcdC8qIGluaXRpYWxpemUgdmFyaWFibGVzIGZvciAxc3QgaXRlcmF0aW9uIG9mIHN1YnNlcXVlbnQgbG9vcCAqL1xuIFx0XHQvKiBjb3VsZCBiZSBqdXN0IDEgYnl0ZSwgZXZlbiBhZnRlciBzbWNfdHhfd2FpdCBhYm92ZSAqL1xuIFx0XHR3cml0ZXNwYWNlID0gYXRvbWljX3JlYWQoXHUwMDI2Y29ubi1cdTAwM2VzbmRidWZfc3BhY2UpO1xuJiM0MztcdFx0Lyogc25kYnVmX3NwYWNlIGlzIGFkdmFuY2VkIGZyb20gdGhlIHBlZXImIzM5O3Mgd2lyZS1jb250cm9sbGVkXG4mIzQzO1x0XHQgKiBjb25zdW1lciBjdXJzb3Igb24gdGhlIFNNQy1EIERNQi1tZXJnZSBwYXRoOyBhIGZvcmdlZCBjdXJzb3JcbiYjNDM7XHRcdCAqIGNhbiBpbmZsYXRlIGl0IHBhc3QgdGhlIHNlbmQgYnVmZmVyLCBvciBvdmVyZmxvdyB0aGUgc2lnbmVkXG4mIzQzO1x0XHQgKiBhY2N1bXVsYXRvciB0byBhIG5lZ2F0aXZlIHZhbHVlIGFjcm9zcyBtYW55IENEQyBtZXNzYWdlc1xuJiM0MztcdFx0ICogKHdoaWNoIGEgcGxhaW4gXCYjMzQ7XHUwMDNlIGxlblwmIzM0OyBjaGVjayB3b3VsZCBtaXNzIGJlZm9yZSB0aGUgc2l6ZV90XG4mIzQzO1x0XHQgKiBjYXN0IGJlbG93IHR1cm5zIGl0IGh1Z2UpLiAgQm91bmQgaXQgdG8gdGhlIHNlbmQgYnVmZmVyIGluXG4mIzQzO1x0XHQgKiBlaXRoZXIgY2FzZSBzbyB0aGUgd3JhcC1hcm91bmQgd3JpdGUgY2Fubm90IHJ1biBwYXN0XG4mIzQzO1x0XHQgKiBzbmRidWZfZGVzYy1cdTAwM2VsZW4uICBUaGlzIGVuZm9yY2VzIHRoZSBkb2N1bWVudGVkXG4mIzQzO1x0XHQgKiAwIFx1MDAzYz0gc25kYnVmX3NwYWNlIFx1MDAzYz0gc25kYnVmX2Rlc2MtXHUwMDNlbGVuIGludmFyaWFudCBhdCB0aGVcbiYjNDM7XHRcdCAqIHByb2R1Y2VyLCByYWNlLWZyZWUgYWdhaW5zdCB0aGUgQ0RDIHRhc2tsZXQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmICh3cml0ZXNwYWNlIFx1MDAzYyAwIHx8IHdyaXRlc3BhY2UgXHUwMDNlIGNvbm4tXHUwMDNlc25kYnVmX2Rlc2MtXHUwMDNlbGVuKVxuJiM0MztcdFx0XHR3cml0ZXNwYWNlID0gY29ubi1cdTAwM2VzbmRidWZfZGVzYy1cdTAwM2VsZW47XG4gXHRcdC8qIG5vdCBtb3JlIHRoYW4gd2hhdCB1c2VyIHNwYWNlIGFza2VkIGZvciAqL1xuIFx0XHRjb3B5bGVuID0gbWluX3Qoc2l6ZV90LCBzZW5kX3JlbWFpbmluZywgd3JpdGVzcGFjZSk7XG4gXHRcdC8qIGRldGVybWluZSBzdGFydCBvZiBzbmRidWYgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U01DJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19yeF9yZWN2bXNnJiMzNDssCiAgICAmIzM0O3NtY190eF9zZW5kbXNnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIFNNQyBDREMgbWVzc2FnZSBwcm9jZXNzaW5nIGFuZCBzb2NrZXQgcmVjZWl2ZS90cmFuc21pdCBwYXRocyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIGludGVnZXIgb3ZlcmZsb3dzIHdoZW4gaGFuZGxpbmcgZm9yZ2VkIG9yIG1hbGZvcm1lZCBDREMgbWVzc2FnZXMgZnJvbSBhIHBlZXIuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGluIHRoZSBTTUMgcHJvdG9jb2wgc3Vic3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTc0NjZkODI2MWIxMzAwNzQyOGM0NjU2ODc2MjY4MjIzZWFiY2Y4YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDI1IDA1OjEwOjI3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY2RjLmggYi9uZXQvc21jL3NtY19jZGMuaAppbmRleCA2OTZjYzExZjIzMDNiOS4uY2E3NmVmNjMwMzU2NmMgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX2NkYy5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX2NkYy5oCkBAIC0yMjEsNyAmIzQzOzIyMSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfaG9zdF9tc2dfdG9fY2RjKHN0cnVjdCBzbWNfY2RjX21zZyAqcGVlciwKIAogc3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfY3Vyc29yX3RvX2hvc3QodW5pb24gc21jX2hvc3RfY3Vyc29yICpsb2NhbCwKIAkJCQkJICB1bmlvbiBzbWNfY2RjX2N1cnNvciAqcGVlciwKLQkJCQkJICBzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pCiYjNDM7CQkJCQkgIHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiwKJiM0MzsJCQkJCSAgaW50IG1heF9jb3VudCkKIHsKIAl1bmlvbiBzbWNfaG9zdF9jdXJzb3IgdGVtcCwgb2xkOwogCXVuaW9uIHNtY19jZGNfY3Vyc29yIG5ldDsKQEAgLTIzNSw2ICYjNDM7MjM2LDE1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfY2RjX2N1cnNvcl90b19ob3N0KHVuaW9uIHNtY19ob3N0X2N1cnNvciAqbG9jYWwsCiAJaWYgKChvbGQud3JhcCA9PSB0ZW1wLndyYXApICZhbXA7JmFtcDsKIAkgICAgKG9sZC5jb3VudCAmZ3Q7IHRlbXAuY291bnQpKQogCQlyZXR1cm47CiYjNDM7CS8qIFRoZSBwZWVyIHByb2R1Y2VyIGN1cnNvciBpcyB3aXJlLWNvbnRyb2xsZWQgYW5kIGlzIGxhdGVyIHVzZWQgYXMgYQomIzQzOwkgKiByYXcgaW5kZXggaW50byBvdXIgUk1CIGJ5IHRoZSB1cmdlbnQgcGF0aDsgYm91bmQgaXRzIGNvdW50IHRvIHRoZQomIzQzOwkgKiBSTUIuICBtYXhfY291bnQgPT0gMCBsZWF2ZXMgdGhlIGNvbnN1bWVyIGN1cnNvciB1bmJvdW5kZWQgaGVyZTogaXQKJiM0MzsJICogaW5kZXhlcyB0aGUgcGVlciYjMzk7cyBSTUIgKGJvdW5kZWQgYnkgcGVlcl9ybWJlX3NpemUsIG5vdCBvdXIKJiM0MzsJICogcm1iX2Rlc2MtJmd0O2xlbiksIHNvIGNsYW1waW5nIGl0IHRvIHJtYl9kZXNjLSZndDtsZW4gd291bGQgdW5kZXItY3JlZGl0CiYjNDM7CSAqIHBlZXJfcm1iZV9zcGFjZSBhbmQgc3RhbGwgdHJhbnNtaXQgdG8gcGVlcnMgd2l0aCBhIGxhcmdlciBSTUIuCiYjNDM7CSAqLwomIzQzOwlpZiAobWF4X2NvdW50ICZhbXA7JmFtcDsgdGVtcC5jb3VudCAmZ3Q7IG1heF9jb3VudCkKJiM0MzsJCXRlbXAuY291bnQgPSBtYXhfY291bnQ7CiAJc21jX2N1cnNfY29weShsb2NhbCwgJmFtcDt0ZW1wLCBjb25uKTsKIH0KIApAQCAtMjQ2LDggJiM0MzsyNTYsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIHNtY3JfY2RjX21zZ190b19ob3N0KHN0cnVjdCBzbWNfaG9zdF9jZGNfbXNnICpsb2NhbCwKIAlsb2NhbC0mZ3Q7bGVuID0gcGVlci0mZ3Q7bGVuOwogCWxvY2FsLSZndDtzZXFubyA9IG50b2hzKHBlZXItJmd0O3NlcW5vKTsKIAlsb2NhbC0mZ3Q7dG9rZW4gPSBudG9obChwZWVyLSZndDt0b2tlbik7Ci0Jc21jX2NkY19jdXJzb3JfdG9faG9zdCgmYW1wO2xvY2FsLSZndDtwcm9kLCAmYW1wO3BlZXItJmd0O3Byb2QsIGNvbm4pOwotCXNtY19jZGNfY3Vyc29yX3RvX2hvc3QoJmFtcDtsb2NhbC0mZ3Q7Y29ucywgJmFtcDtwZWVyLSZndDtjb25zLCBjb25uKTsKJiM0MzsJLyogYm91bmQgdGhlIHdpcmUtY29udHJvbGxlZCBwcm9kdWNlciBjdXJzb3IgdG8gb3VyIFJNQiAodXNlZCBhcyBhIHJhdwomIzQzOwkgKiBpbmRleCBieSB0aGUgdXJnZW50IHBhdGgpOyBsZWF2ZSB0aGUgY29uc3VtZXIgY3Vyc29yIHVuYm91bmRlZCAtLSBpdAomIzQzOwkgKiBpbmRleGVzIHRoZSBwZWVyJiMzOTtzIFJNQiBhbmQgaXMgYm91bmRlZCBieSBwZWVyX3JtYmVfc2l6ZS4KJiM0MzsJICovCiYjNDM7CXNtY19jZGNfY3Vyc29yX3RvX2hvc3QoJmFtcDtsb2NhbC0mZ3Q7cHJvZCwgJmFtcDtwZWVyLSZndDtwcm9kLCBjb25uLAomIzQzOwkJCSAgICAgICBjb25uLSZndDtybWJfZGVzYy0mZ3Q7bGVuKTsKJiM0MzsJc21jX2NkY19jdXJzb3JfdG9faG9zdCgmYW1wO2xvY2FsLSZndDtjb25zLCAmYW1wO3BlZXItJmd0O2NvbnMsIGNvbm4sIDApOwogCWxvY2FsLSZndDtwcm9kX2ZsYWdzID0gcGVlci0mZ3Q7cHJvZF9mbGFnczsKIAlsb2NhbC0mZ3Q7Y29ubl9zdGF0ZV9mbGFncyA9IHBlZXItJmd0O2Nvbm5fc3RhdGVfZmxhZ3M7CiB9CkBAIC0yNjAsNiAmIzQzOzI3NSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc21jZF9jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLAogCiAJdGVtcC53cmFwID0gcGVlci0mZ3Q7cHJvZC53cmFwOwogCXRlbXAuY291bnQgPSBwZWVyLSZndDtwcm9kLmNvdW50OwomIzQzOwkvKiB0aGUgcGVlciBwcm9kdWNlciBjdXJzb3IgaXMgd2lyZS1jb250cm9sbGVkIGFuZCBpcyB1c2VkIGFzIGEgcmF3CiYjNDM7CSAqIGluZGV4IGludG8gb3VyIFJNQiBieSB0aGUgdXJnZW50IHBhdGg7IGJvdW5kIGl0IHRvIHRoZSBSTUIuICBUaGUKJiM0MzsJICogY29uc3VtZXIgY3Vyc29yIGJlbG93IGluZGV4ZXMgdGhlIHBlZXImIzM5O3MgUk1CIGFuZCBpcyBsZWZ0IHVuYm91bmRlZC4KJiM0MzsJICovCiYjNDM7CWlmICh0ZW1wLmNvdW50ICZndDsgY29ubi0mZ3Q7cm1iX2Rlc2MtJmd0O2xlbikKJiM0MzsJCXRlbXAuY291bnQgPSBjb25uLSZndDtybWJfZGVzYy0mZ3Q7bGVuOwogCXNtY19jdXJzX2NvcHkoJmFtcDtsb2NhbC0mZ3Q7cHJvZCwgJmFtcDt0ZW1wLCBjb25uKTsKIAogCXRlbXAud3JhcCA9IHBlZXItJmd0O2NvbnMud3JhcDsKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3J4LmMgYi9uZXQvc21jL3NtY19yeC5jCmluZGV4IGMxZDliOTIzOTM4ZGFkLi5mNDYxY2YxMGIwODU1YiAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfcnguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19yeC5jCkBAIC00NDIsNiAmIzQzOzQ0MiwxOCBAQCBpbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZywKIAkJLyogaW5pdGlhbGl6ZSB2YXJpYWJsZXMgZm9yIDFzdCBpdGVyYXRpb24gb2Ygc3Vic2VxdWVudCBsb29wICovCiAJCS8qIGNvdWxkIGJlIGp1c3QgMSBieXRlLCBldmVuIGFmdGVyIHdhaXRpbmcgb24gZGF0YSBhYm92ZSAqLwogCQlyZWFkYWJsZSA9IHNtY19yeF9kYXRhX2F2YWlsYWJsZShjb25uLCBwZWVrZWRfYnl0ZXMpOwomIzQzOwkJLyogYnl0ZXNfdG9fcmN2IGlzIGFjY3VtdWxhdGVkIGZyb20gdGhlIHBlZXImIzM5O3Mgd2lyZS1jb250cm9sbGVkCiYjNDM7CQkgKiBwcm9kdWNlciBjdXJzb3I7IGEgZm9yZ2VkIGN1cnNvciBjYW4gZHJpdmUgaXQgcGFzdCB0aGUgUk1CLAomIzQzOwkJICogb3Igb3ZlcmZsb3cgdGhlIHNpZ25lZCBhY2N1bXVsYXRvciB0byBhIG5lZ2F0aXZlIHZhbHVlIGFjcm9zcwomIzQzOwkJICogbWFueSBDREMgbWVzc2FnZXMgKHdoaWNoIGEgcGxhaW4gJiMzNDsmZ3Q7IGxlbiYjMzQ7IGNoZWNrIHdvdWxkIG1pc3MKJiM0MzsJCSAqIGJlZm9yZSB0aGUgc2l6ZV90IGNhc3QgYmVsb3cgdHVybnMgaXQgaHVnZSkuICBCb3VuZCBpdCB0byB0aGUKJiM0MzsJCSAqIFJNQiBpbiBlaXRoZXIgY2FzZSBzbyB0aGUgd3JhcC1hcm91bmQgY29weSBjYW5ub3QgcnVuIHBhc3QKJiM0MzsJCSAqIHJtYl9kZXNjLSZndDtsZW4uICBUaGlzIGVuZm9yY2VzIHRoZSBkb2N1bWVudGVkCiYjNDM7CQkgKiAwICZsdDs9IGJ5dGVzX3RvX3JjdiAmbHQ7PSBybWJfZGVzYy0mZ3Q7bGVuIGludmFyaWFudCBhdCB0aGUgY29uc3VtZXIsCiYjNDM7CQkgKiByYWNlLWZyZWUgYWdhaW5zdCB0aGUgcHJvZHVjZXIgdXBkYXRlIGluIHRoZSByZWNlaXZlIHRhc2tsZXQuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChyZWFkYWJsZSAmbHQ7IDAgfHwgcmVhZGFibGUgJmd0OyBjb25uLSZndDtybWJfZGVzYy0mZ3Q7bGVuKQomIzQzOwkJCXJlYWRhYmxlID0gY29ubi0mZ3Q7cm1iX2Rlc2MtJmd0O2xlbjsKIAkJc3BsYnl0ZXMgPSBhdG9taWNfcmVhZCgmYW1wO2Nvbm4tJmd0O3NwbGljZV9wZW5kaW5nKTsKIAkJaWYgKCFyZWFkYWJsZSB8fCAobXNnICZhbXA7JmFtcDsgc3BsYnl0ZXMpKSB7CiAJCQlpZiAoc3BsYnl0ZXMpCmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY190eC5jIGIvbmV0L3NtYy9zbWNfdHguYwppbmRleCAzMTQ0YjRiMWZlMjkwMS4uNTkxNmYwMjA2MGZiOTAgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfdHguYwpAQCAtMjMzLDYgJiM0MzsyMzMsMTkgQEAgaW50IHNtY190eF9zZW5kbXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pCiAJCS8qIGluaXRpYWxpemUgdmFyaWFibGVzIGZvciAxc3QgaXRlcmF0aW9uIG9mIHN1YnNlcXVlbnQgbG9vcCAqLwogCQkvKiBjb3VsZCBiZSBqdXN0IDEgYnl0ZSwgZXZlbiBhZnRlciBzbWNfdHhfd2FpdCBhYm92ZSAqLwogCQl3cml0ZXNwYWNlID0gYXRvbWljX3JlYWQoJmFtcDtjb25uLSZndDtzbmRidWZfc3BhY2UpOwomIzQzOwkJLyogc25kYnVmX3NwYWNlIGlzIGFkdmFuY2VkIGZyb20gdGhlIHBlZXImIzM5O3Mgd2lyZS1jb250cm9sbGVkCiYjNDM7CQkgKiBjb25zdW1lciBjdXJzb3Igb24gdGhlIFNNQy1EIERNQi1tZXJnZSBwYXRoOyBhIGZvcmdlZCBjdXJzb3IKJiM0MzsJCSAqIGNhbiBpbmZsYXRlIGl0IHBhc3QgdGhlIHNlbmQgYnVmZmVyLCBvciBvdmVyZmxvdyB0aGUgc2lnbmVkCiYjNDM7CQkgKiBhY2N1bXVsYXRvciB0byBhIG5lZ2F0aXZlIHZhbHVlIGFjcm9zcyBtYW55IENEQyBtZXNzYWdlcwomIzQzOwkJICogKHdoaWNoIGEgcGxhaW4gJiMzNDsmZ3Q7IGxlbiYjMzQ7IGNoZWNrIHdvdWxkIG1pc3MgYmVmb3JlIHRoZSBzaXplX3QKJiM0MzsJCSAqIGNhc3QgYmVsb3cgdHVybnMgaXQgaHVnZSkuICBCb3VuZCBpdCB0byB0aGUgc2VuZCBidWZmZXIgaW4KJiM0MzsJCSAqIGVpdGhlciBjYXNlIHNvIHRoZSB3cmFwLWFyb3VuZCB3cml0ZSBjYW5ub3QgcnVuIHBhc3QKJiM0MzsJCSAqIHNuZGJ1Zl9kZXNjLSZndDtsZW4uICBUaGlzIGVuZm9yY2VzIHRoZSBkb2N1bWVudGVkCiYjNDM7CQkgKiAwICZsdDs9IHNuZGJ1Zl9zcGFjZSAmbHQ7PSBzbmRidWZfZGVzYy0mZ3Q7bGVuIGludmFyaWFudCBhdCB0aGUKJiM0MzsJCSAqIHByb2R1Y2VyLCByYWNlLWZyZWUgYWdhaW5zdCB0aGUgQ0RDIHRhc2tsZXQuCiYjNDM7CQkgKi8KJiM0MzsJCWlmICh3cml0ZXNwYWNlICZsdDsgMCB8fCB3cml0ZXNwYWNlICZndDsgY29ubi0mZ3Q7c25kYnVmX2Rlc2MtJmd0O2xlbikKJiM0MzsJCQl3cml0ZXNwYWNlID0gY29ubi0mZ3Q7c25kYnVmX2Rlc2MtJmd0O2xlbjsKIAkJLyogbm90IG1vcmUgdGhhbiB3aGF0IHVzZXIgc3BhY2UgYXNrZWQgZm9yICovCiAJCWNvcHlsZW4gPSBtaW5fdChzaXplX3QsIHNlbmRfcmVtYWluaW5nLCB3cml0ZXNwYWNlKTsKIAkJLyogZGV0ZXJtaW5lIHN0YXJ0IG9mIHNuZGJ1ZiAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzA2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNNQyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgY29kZSwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBDREMgbWVzc2FnZXMuIEkgc2VlIGl0JiMzOTtzIG1vZGlmeWluZyBgc21jX2NkYy5oYCwgYHNtY19yeC5jYCwgYW5kIGBzbWNfdHguY2AuIFRoYXQgdGVsbHMgbWUgd2UmIzM5O3JlIGxvb2tpbmcgYXQgY29yZSBmdW5jdGlvbmFsaXR5IOKAkyB0aGUgaGVhZGVyIGZpbGUsIHJlY2VpdmVyLCBhbmQgdHJhbnNtaXR0ZXIgc2lkZXMuIFRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhleSYjMzk7cmUgYWRkaW5nIGJvdW5kcyBjaGVja2luZywgc3BlY2lmaWNhbGx5IGluIGZ1bmN0aW9ucyBsaWtlIGBzbWNfY2RjX2N1cnNvcl90b19ob3N0YCwgYHNtY3JfY2RjX21zZ190b19ob3N0YCwgYHNtY2RfY2RjX21zZ190b19ob3N0YCwgYHNtY19yeF9yZWN2bXNnYCwgYW5kIGBzbWNfdHhfc2VuZG1zZ2AuCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLCBhbmQgaXQmIzM5O3MgYWltZWQgYXQgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5OiB0aGUgcG9zc2liaWxpdHkgb2Ygb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzIG9yIGludGVnZXIgb3ZlcmZsb3cuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGdvb2QuIE1hbGZvcm1lZCBvciBmb3JnZWQgQ0RDIG1lc3NhZ2VzIGNvdWxkIGJlIHVzZWQgdG8gZXhwbG9pdCB0aGUgc3lzdGVtLCBzbyBhZGRpbmcgY2hlY2tzIGlzIGVzc2VudGlhbCwgcGFydGljdWxhcmx5IGdpdmVuIHRoZSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucyBvZiBTTUMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoaXMgYm91bmRzIGNoZWNraW5nIGlzIGltcGxlbWVudGVkLCBidXQgdGhlIGdlbmVyYWwgcHJpbmNpcGxlIGlzIHNvdW5kLgoKQmVmb3JlIEkgZ28gZnVydGhlciwgbGV0IG1lIGp1c3QgY2hlY2sgdGhlIEtjb25maWcgdG8gc2VlIGhvdyBTTUMgaXMgY29uZmlndXJlZC4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGFmZmVjdHMgYWxsIGJ1aWxkcyBvciBvbmx5IGNlcnRhaW4gY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNNQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9zbWMvS2NvbmZpZzoyOmNvbmZpZyBTTUNcbm5ldC9zbWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMTMtXG5uZXQvc21jL0tjb25maWc6MTQ6Y29uZmlnIFNNQ19ESUFHXG5uZXQvc21jL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC9zbWMvS2NvbmZpZy0yMi1cbm5ldC9zbWMvS2NvbmZpZzoyMzpjb25maWcgU01DX0hTX0NUUkxfQlBGXG5uZXQvc21jL0tjb25maWctMjQtXHRib29sIFwmIzM0O0dlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzc1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU01DIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaXMgYFNNQ2AuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHBpbnBvaW50IHRoZSBmb2N1cyBzeW1ib2xzIOKAkyB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGVpdGhlciBkaXJlY3RseSBtb2RpZmllZCBvciBhcmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNoYW5nZXMuIExvb2tpbmcgYXQgdGhlIGRpZmYsIGl0IHNlZW1zIHRoZXNlIGFyZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zOiBgc21jX2NkY19jdXJzb3JfdG9faG9zdGAsIGBzbWNyX2NkY19tc2dfdG9faG9zdGAsIGBzbWNkX2NkY19tc2dfdG9faG9zdGAsIGBzbWNfcnhfcmVjdm1zZ2AsIGFuZCBgc21jX3R4X3NlbmRtc2dgLgoKU2luY2UgdGhlIGZpcnN0IHRocmVlLCBgc21jX2NkY19jdXJzb3JfdG9faG9zdGAsIGBzbWNyX2NkY19tc2dfdG9faG9zdGAgYW5kIGBzbWNkX2NkY19tc2dfdG9faG9zdGAsIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljIGlubGluZWAsIHRoZXkgYXJlIGxpa2VseSBpbmxpbmVkIGF0IHRoZSBjYWxsIHNpdGUuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGZvY3VzIG9uIHdoZXJlICp0aGV5KiBhcmUgY2FsbGVkIG9yIHdoZXRoZXIgdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzIGhhdmUgZGlyZWN0IG1vZGlmaWNhdGlvbnMuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGlkZW50aWZ5IHRoZSBjYWxsIHNpdGVzIG9mIGBzbWNyX2NkY19tc2dfdG9faG9zdGAgYW5kIGBzbWNkX2NkY19tc2dfdG9faG9zdGAg4oCTIHRoZXNlIGFyZSBsaWtlbHkgdGhlIGNyaXRpY2FsIHBpZWNlcyB0byBhbmFseXplLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY3JfY2RjX21zZ190b19ob3N0fHNtY2RfY2RjX21zZ190b19ob3N0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY2RjLmg9MjIyPXN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfY2RjX2N1cnNvcl90b19ob3N0KHVuaW9uIHNtY19ob3N0X2N1cnNvciAqbG9jYWwsXG4tLVxubmV0L3NtYy9zbWNfY2RjLmgtMjUwLVxubmV0L3NtYy9zbWNfY2RjLmg6MjUxOnN0YXRpYyBpbmxpbmUgdm9pZCBzbWNyX2NkY19tc2dfdG9faG9zdChzdHJ1Y3Qgc21jX2hvc3RfY2RjX21zZyAqbG9jYWwsXG5uZXQvc21jL3NtY19jZGMuaC0yNTItXHRcdFx0XHRcdHN0cnVjdCBzbWNfY2RjX21zZyAqcGVlcixcbi0tXG5uZXQvc21jL3NtY19jZGMuaC0yNjktXG5uZXQvc21jL3NtY19jZGMuaDoyNzA6c3RhdGljIGlubGluZSB2b2lkIHNtY2RfY2RjX21zZ190b19ob3N0KHN0cnVjdCBzbWNfaG9zdF9jZGNfbXNnICpsb2NhbCxcbm5ldC9zbWMvc21jX2NkYy5oLTI3MS1cdFx0XHRcdFx0c3RydWN0IHNtY2RfY2RjX21zZyAqcGVlcixcbi0tXG5uZXQvc21jL3NtY19jZGMuaD0yOTM9c3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLFxuLS1cbm5ldC9zbWMvc21jX2NkYy5oLTI5Ny1cdGlmIChjb25uLVx1MDAzZWxnci1cdTAwM2Vpc19zbWNkKVxubmV0L3NtYy9zbWNfY2RjLmg6Mjk4Olx0XHRzbWNkX2NkY19tc2dfdG9faG9zdChsb2NhbCwgKHN0cnVjdCBzbWNkX2NkY19tc2cgKilwZWVyLCBjb25uKTtcbm5ldC9zbWMvc21jX2NkYy5oLTI5OS1cdGVsc2Vcbm5ldC9zbWMvc21jX2NkYy5oOjMwMDpcdFx0c21jcl9jZGNfbXNnX3RvX2hvc3QobG9jYWwsIHBlZXIsIGNvbm4pO1xubmV0L3NtYy9zbWNfY2RjLmgtMzAxLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqVHJhY2luZyB0aGUgU01DX0NEQyBNZXNzYWdlIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBzbWNfY2RjX21zZ190b19ob3N0YCBmdW5jdGlvbi4gVGhlIGNvZGUgY2FsbHMgaXQsIGFuZCBpdCYjMzk7cyBhbHNvIHN0YXRpYyBpbmxpbmUsIHdoaWNoIGlzIGEga2V5IGRldGFpbC4gVGhhdCBtZWFucyB0aGUgY29tcGlsZXIgbGlrZWx5IHN1YnN0aXR1dGVzIHRoZSBmdW5jdGlvbiYjMzk7cyBjb2RlIGRpcmVjdGx5IHdoZXJldmVyIGl0JiMzOTtzIHVzZWQuIFRoaXMgc3VnZ2VzdHMgaXQmIzM5O3MgYSBjcml0aWNhbCwgcG90ZW50aWFsbHkgcGVyZm9ybWFuY2Utc2Vuc2l0aXZlIHBpZWNlIG9mIHRoZSBjb21tdW5pY2F0aW9uIGxvZ2ljLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQgdG8gZmlndXJlIG91dCB0aGUgbGFyZ2VyIGNvbnRleHQuIFRpbWUgdG8gdHJhY2sgZG93biBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgYHNtY19jZGNfbXNnX3RvX2hvc3RgLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIGRhdGEgZmxvd3MgYW5kIHdoYXQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGxvb2tzIGxpa2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2NkY19tc2dfdG9faG9zdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTMzMD1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcbi0tXG5uZXQvc21jL3NtY19jZGMuYy0zMzgtXHRzbWNfY3Vyc19jb3B5KFx1MDAyNmNvbnNfb2xkLCBcdTAwMjZjb25uLVx1MDAzZWxvY2FsX3J4X2N0cmwuY29ucywgY29ubik7XG5uZXQvc21jL3NtY19jZGMuYzozMzk6XHRzbWNfY2RjX21zZ190b19ob3N0KFx1MDAyNmNvbm4tXHUwMDNlbG9jYWxfcnhfY3RybCwgY2RjLCBjb25uKTtcbm5ldC9zbWMvc21jX2NkYy5jLTM0MC1cbi0tXG5uZXQvc21jL3NtY19jZGMuaD0yNzA9c3RhdGljIGlubGluZSB2b2lkIHNtY2RfY2RjX21zZ190b19ob3N0KHN0cnVjdCBzbWNfaG9zdF9jZGNfbXNnICpsb2NhbCxcbi0tXG5uZXQvc21jL3NtY19jZGMuaC0yOTItXG5uZXQvc21jL3NtY19jZGMuaDoyOTM6c3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLFxubmV0L3NtYy9zbWNfY2RjLmgtMjk0LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBzbWNfY2RjX21zZyAqcGVlcixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzY0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgT3JpZ2luIG9mIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBmdW5jdGlvbiwgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYC4gVGhlIGNvZGViYXNlIHRlbGxzIG1lIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgd2l0aGluIGBuZXQvc21jL3NtY19jZGMuY2AuIFRoZSBmaXJzdCB0aGluZyBJIGFsd2F5cyBkbyBpbiB0aGVzZSBzaXR1YXRpb25zIGlzIGVzdGFibGlzaCBzY29wZS4gSSBqdXN0IHZlcmlmaWVkIHRoYXQgaXQmIzM5O3MgYSBgc3RhdGljYCBmdW5jdGlvbiwgd2hpY2ggc2lnbmlmaWNhbnRseSBuYXJyb3dzIGRvd24gd2hlcmUgSSBuZWVkIHRvIGxvb2sgZm9yIGNhbGxzLiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgc3RyYWlnaHRmb3J3YXJkOiBJIG5lZWQgdG8gcGlucG9pbnQgZXZlcnl3aGVyZSB0aGlzIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgaXMgYWN0dWFsbHkgKmNhbGxlZCogd2l0aGluIHRoZSBjb2RlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBzYW1lIHRyYW5zbGF0aW9uIHVuaXQuIFRoaXMgc2hvdWxkIGJlIGEgcHJldHR5IHF1aWNrIHRhc2sgd2l0aCBhIGdvb2QgY3Jvc3MtcmVmZXJlbmNpbmcgdG9vbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2NkY19tc2dfcmVjdl9hY3Rpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jZGMuYz0zMDg9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfdmFsaWRhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjLFxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTMyOS1cbm5ldC9zbWMvc21jX2NkYy5jOjMzMDpzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcbm5ldC9zbWMvc21jX2NkYy5jLTMzMS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcbi0tXG5uZXQvc21jL3NtY19jZGMuYz00Mjc9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMpXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNDMwLVx0YmhfbG9ja19zb2NrKFx1MDAyNnNtYy1cdTAwM2Vzayk7XG5uZXQvc21jL3NtY19jZGMuYzo0MzE6XHRzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzbWMsIGNkYyk7XG5uZXQvc21jL3NtY19jZGMuYy00MzItXHRiaF91bmxvY2tfc29jayhcdTAwMjZzbWMtXHUwMDNlc2spO1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtMjktLyogY2FsbGJhY2sgaW1wbGVtZW50YXRpb24gdG8gd2FrZXVwIGNvbnN1bWVycyBibG9ja2VkIHdpdGggc21jX3J4X3dhaXQoKS5cbm5ldC9zbWMvc21jX3J4LmM6MzA6ICogaW5kaXJlY3RseSBjYWxsZWQgYnkgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKS5cbm5ldC9zbWMvc21jX3J4LmMtMzEtICovXG4tLVxubmV0L3NtYy9zbWNfcnguYz0zNTI9aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4tLVxubmV0L3NtYy9zbWNfcnguYy0zOTgtXHRcdGlmIChzay1cdTAwM2Vza19zaHV0ZG93biBcdTAwMjYgUkNWX1NIVVRET1dOKSB7XG5uZXQvc21jL3NtY19yeC5jOjM5OTpcdFx0XHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cdFx0XHQgKiBhYm92ZSBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZSgpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NzEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqVHJhY2luZyB0aGUgTWVzc2FnZSBSZWNlcHRpb24gUGF0aCoqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGBzbWNfY2RjX21zZ19yZWN2YC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgbWVzc2FnZSBoYW5kbGluZyBzdGFydHMsIGJ1dCB3aGVyZSBkb2VzIGl0ICpiZWdpbio/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGNvbnRleHQuIExldCYjMzk7cyB0cmFjZSBiYWNrIGZyb20gYHNtY19jZGNfbXNnX3JlY3ZgIGFuZCBzZWUgd2hlcmUgaXQmIzM5O3MgYmVpbmcgaW52b2tlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVyIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIG1lc3NhZ2UgcHJvY2Vzc2luZyBmbG93IGFuZCBwb3RlbnRpYWwgaXNzdWVzLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHNlZS4uLiBhIHF1aWNrIGNyb3NzLXJlZmVyZW5jZSBzaG91bGQgZG8gdGhlIHRyaWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfY2RjX21zZ19yZWN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY2RjLmM9MzA4PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3ZhbGlkYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYyxcbi0tXG5uZXQvc21jL3NtY19jZGMuYy0zMjktXG5uZXQvc21jL3NtY19jZGMuYzozMzA6c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsXG5uZXQvc21jL3NtY19jZGMuYy0zMzEtXHRcdFx0XHQgICAgc3RydWN0IHNtY19jZGNfbXNnICpjZGMpXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNDI2LS8qIGNhbGxlZCB1bmRlciB0YXNrbGV0IGNvbnRleHQgKi9cbm5ldC9zbWMvc21jX2NkYy5jOjQyNzpzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2KHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcbm5ldC9zbWMvc21jX2NkYy5jLTQyOC17XG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNDMwLVx0YmhfbG9ja19zb2NrKFx1MDAyNnNtYy1cdTAwM2Vzayk7XG5uZXQvc21jL3NtY19jZGMuYzo0MzE6XHRzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzbWMsIGNkYyk7XG5uZXQvc21jL3NtY19jZGMuYy00MzItXHRiaF91bmxvY2tfc29jayhcdTAwMjZzbWMtXHUwMDNlc2spO1xuLS1cbm5ldC9zbWMvc21jX2NkYy5jPTQ0Mj1zdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTQ1NS1cdHNtYyA9IGNvbnRhaW5lcl9vZihjb25uLCBzdHJ1Y3Qgc21jX3NvY2ssIGNvbm4pO1xubmV0L3NtYy9zbWNfY2RjLmM6NDU2Olx0c21jX2NkY19tc2dfcmVjdihzbWMsIChzdHJ1Y3Qgc21jX2NkY19tc2cgKilcdTAwMjZjZGMpO1xubmV0L3NtYy9zbWNfY2RjLmMtNDU3LX1cbi0tXG5uZXQvc21jL3NtY19jZGMuYz00Njk9c3RhdGljIHZvaWQgc21jX2NkY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1Zilcbi0tXG5uZXQvc21jL3NtY19jZGMuYy01MDItXG5uZXQvc21jL3NtY19jZGMuYzo1MDM6XHRzbWNfY2RjX21zZ19yZWN2KHNtYywgY2RjKTtcbm5ldC9zbWMvc21jX2NkYy5jLTUwNC1vdXQ6XG4tLVxubmV0L3NtYy9zbWNfcnguYy0yOS0vKiBjYWxsYmFjayBpbXBsZW1lbnRhdGlvbiB0byB3YWtldXAgY29uc3VtZXJzIGJsb2NrZWQgd2l0aCBzbWNfcnhfd2FpdCgpLlxubmV0L3NtYy9zbWNfcnguYzozMDogKiBpbmRpcmVjdGx5IGNhbGxlZCBieSBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpLlxubmV0L3NtYy9zbWNfcnguYy0zMS0gKi9cbi0tXG5uZXQvc21jL3NtY19yeC5jPTM1Mj1pbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcbi0tXG5uZXQvc21jL3NtY19yeC5jLTM5OC1cdFx0aWYgKHNrLVx1MDAzZXNrX3NodXRkb3duIFx1MDAyNiBSQ1ZfU0hVVERPV04pIHtcbm5ldC9zbWMvc21jX3J4LmM6Mzk5Olx0XHRcdC8qIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkgY291bGQgaGF2ZSBydW4gYWZ0ZXJcbm5ldC9zbWMvc21jX3J4LmMtNDAwLVx0XHRcdCAqIGFib3ZlIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU4NwoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBDREMgTWVzc2FnZSBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgQ0RDIG1lc3NhZ2UgcmVjZXB0aW9uIGxvZ2ljLiBNeSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgc21jZF9jZGNfcnhfdHNrbGV0YCBhbmQgYHNtY19jZGNfcnhfaGFuZGxlcmAgYXJlIHRoZSBlbnRyeSBwb2ludHMuIEdvdCBpdC4gQWxzbywgSSBzZWUgYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYCBhcmUgYmVpbmcgZGlyZWN0bHkgbW9kaWZpZWQsIHdoaWNoIGFyZSBpbXBvcnRhbnQuCgpUaGVyZWZvcmUsIHRoZSBrZXkgc3ltYm9scyB0aGF0IHdhcnJhbnQgbXkgaW1tZWRpYXRlIGF0dGVudGlvbiBhcmU6CgoqICAgYHNtY19yeF9yZWN2bXNnYAoqICAgYHNtY190eF9zZW5kbXNnYAoqICAgYHNtY2RfY2RjX3J4X3Rza2xldGAKKiAgIGBzbWNfY2RjX3J4X2hhbmRsZXJgCgpIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2guIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UgYWJvdXQgaG93IGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYCBhcmUgdXRpbGl6ZWQuIFNpbmNlIHRoZXkmIzM5O3JlIHN0YXRpYywgYXJlIHRoZXkgYWN0dWFsbHkgZXhwb3J0ZWQgc29tZWhvdywgb3IgYXJlIHRoZXkgcGFzc2VkIGFzIGNhbGxiYWNrcyBpbnRlcm5hbGx5PyBUaGF0JiMzOTtzIGEgY3J1Y2lhbCBkaXN0aW5jdGlvbi4gSSBuZWVkIHRvIHRyYWNlIHRoZWlyIHVzYWdlIHRvIGZ1bGx5IGdyYXNwIHRoZWlyIHJvbGUuIE9rYXksIHRpbWUgdG8gc2VlIHdoZXJlIHRoZXNlIGFyZSB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNkX2NkY19yeF90c2tsZXR8c21jX2NkY19yeF9oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY2RjLmM9NDI3PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3Yoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTQ0MS0gKi9cbm5ldC9zbWMvc21jX2NkYy5jOjQ0MjpzdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxubmV0L3NtYy9zbWNfY2RjLmMtNDQzLXtcbi0tXG5uZXQvc21jL3NtY19jZGMuYz00NjI9dm9pZCBzbWNkX2NkY19yeF9pbml0KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NkYy5jLTQ2My17XG5uZXQvc21jL3NtY19jZGMuYzo0NjQ6XHR0YXNrbGV0X3NldHVwKFx1MDAyNmNvbm4tXHUwMDNlcnhfdHNrbGV0LCBzbWNkX2NkY19yeF90c2tsZXQpO1xubmV0L3NtYy9zbWNfY2RjLmMtNDY1LX1cbi0tXG5uZXQvc21jL3NtY19jZGMuYy00NjgtXG5uZXQvc21jL3NtY19jZGMuYzo0Njk6c3RhdGljIHZvaWQgc21jX2NkY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1Zilcbm5ldC9zbWMvc21jX2NkYy5jLTQ3MC17XG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNTA3LVxubmV0L3NtYy9zbWNfY2RjLmM6NTA4OnN0YXRpYyBzdHJ1Y3Qgc21jX3dyX3J4X2hhbmRsZXIgc21jX2NkY19yeF9oYW5kbGVyc1tdID0ge1xubmV0L3NtYy9zbWNfY2RjLmMtNTA5LVx0e1xubmV0L3NtYy9zbWNfY2RjLmM6NTEwOlx0XHQuaGFuZGxlclx0PSBzbWNfY2RjX3J4X2hhbmRsZXIsXG5uZXQvc21jL3NtY19jZGMuYy01MTEtXHRcdC50eXBlXHRcdD0gU01DX0NEQ19NU0dfVFlQRVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jPTUxOD1pbnQgX19pbml0IHNtY19jZGNfaW5pdCh2b2lkKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTUyMi1cbm5ldC9zbWMvc21jX2NkYy5jOjUyMzpcdGZvciAoaGFuZGxlciA9IHNtY19jZGNfcnhfaGFuZGxlcnM7IGhhbmRsZXItXHUwMDNlaGFuZGxlcjsgaGFuZGxlciYjNDM7JiM0MzspIHtcbm5ldC9zbWMvc21jX2NkYy5jLTUyNC1cdFx0SU5JVF9ITElTVF9OT0RFKFx1MDAyNmhhbmRsZXItXHUwMDNlbGlzdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MDUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNjb3BlIG9mIFRoZXNlIENhbGxiYWNrcyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGVzZSBjYWxsYmFja3MgYW5kIGltbWVkaWF0ZWx5IG5vdGljaW5nIHNvbWV0aGluZyDigJMgdGhleSYjMzk7cmUgc3RhdGljYWxseSBkZWZpbmVkLCB3aGljaCBpcyBhIGNvbW1vbiBwYXR0ZXJuLiBUaGlzIG1ha2VzIHRoZW0gaW50ZXJuYWwgYW5kIGxpbWl0cyB0aGVpciB2aXNpYmlsaXR5LCB3aGljaCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpbiB0aGlzIGNvbnRleHQuIEkgc2VlIGBzbWNkX2NkY19yeF9pbml0YCBpcyBjYWxsZWQsIGFuZCB0aGF04oCZcyAqbm90KiBzdGF0aWMsIHdoaWNoIGdpdmVzIG1lIHBhdXNlLiBUaGF0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLgoKQnV0IGhvbGQgb24sIHRoZSByZWFsIGVudHJ5IHBvaW50cyBmb3IgcmVjZWl2aW5nIGFuZCBzZW5kaW5nIGRhdGEgc2VlbSB0byBiZSBgc21jX3J4X3JlY3Ztc2dgIGFuZCBgc21jX3R4X3NlbmRtc2dgLiBOb3csIGFyZSAqdGhvc2UqIHN0YXRpYyB0b28/IFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uLiBJZiB0aGV5JiMzOTtyZSBub3Qgc3RhdGljLCB0aGF0IGNoYW5nZXMgdGhlIHdob2xlIGdhbWUuIFRoZXkgY291bGQgYmUgcGFydCBvZiB0aGUgc29ja2V0IG9wZXJhdGlvbnMsIG9yIHRoZXkgbWF5IGJlIGV4cG9ydGVkLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hldGhlciB0aG9zZSBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIG9yIGFyZSB0aGV5IHBhcnQgb2YgdGhlIGRlZmluZWQgc29ja2V0IG9wZXJhdGlvbnMuIExldCYjMzk7cyBnZXQgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byBjb25maXJtIHdoZXJlIHRoZXkgYmVsb25nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfcnhfcmVjdm1zZ3xzbWNfdHhfc2VuZG1zZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvYWZfc21jLmM9Mjc5Nj1pbnQgc21jX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjgyNS1cdH0gZWxzZSB7XG5uZXQvc21jL2FmX3NtYy5jOjI4MjY6XHRcdHJjID0gc21jX3R4X3NlbmRtc2coc21jLCBtc2csIGxlbik7XG5uZXQvc21jL2FmX3NtYy5jLTI4MjctXHRcdFNNQ19TVEFUX1RYX1BBWUxPQUQoc21jLCBsZW4sIHJjKTtcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTI4MzQ9aW50IHNtY19yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTI4NjEtXHRcdG1zZy1cdTAwM2Vtc2dfbmFtZWxlbiA9IDA7XG5uZXQvc21jL2FmX3NtYy5jOjI4NjI6XHRcdHJjID0gc21jX3J4X3JlY3Ztc2coc21jLCBtc2csIE5VTEwsIGxlbiwgZmxhZ3MpO1xubmV0L3NtYy9hZl9zbWMuYy0yODYzLVx0XHRTTUNfU1RBVF9SWF9QQVlMT0FEKHNtYywgcmMsIHJjKTtcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTMyODM9c3NpemVfdCBzbWNfc3BsaWNlX3JlYWQoc3RydWN0IHNvY2tldCAqc29jaywgbG9mZl90ICpwcG9zLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMzMyMC1cdFx0U01DX1NUQVRfSU5DKHNtYywgc3BsaWNlX2NudCk7XG5uZXQvc21jL2FmX3NtYy5jOjMzMjE6XHRcdHJjID0gc21jX3J4X3JlY3Ztc2coc21jLCBOVUxMLCBwaXBlLCBsZW4sIGZsYWdzKTtcbm5ldC9zbWMvYWZfc21jLmMtMzMyMi1cdH1cbi0tXG5uZXQvc21jL3NtY19yeC5jPTI4OT1zdGF0aWMgaW50IHNtY19yeF9yZWN2X3VyZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVuLFxuLS1cbm5ldC9zbWMvc21jX3J4LmMtMzMyLVxubmV0L3NtYy9zbWNfcnguYzozMzM6c3RhdGljIGJvb2wgc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHNpemVfdCBwZWVrZWQpXG5uZXQvc21jL3NtY19yeC5jLTMzNC17XG4tLVxubmV0L3NtYy9zbWNfcnguYy0zNDQtXG5uZXQvc21jL3NtY19yeC5jOjM0NTovKiBzbWNfcnhfcmVjdm1zZyAtIHJlY2VpdmUgZGF0YSBmcm9tIFJNQkVcbm5ldC9zbWMvc21jX3J4LmMtMzQ2LSAqIEBtc2c6XHRjb3B5IGRhdGEgdG8gcmVjZWl2ZSBidWZmZXJcbi0tXG5uZXQvc21jL3NtY19yeC5jLTM1MS0gKi9cbm5ldC9zbWMvc21jX3J4LmM6MzUyOmludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxubmV0L3NtYy9zbWNfcnguYy0zNTMtXHRcdCAgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsIHNpemVfdCBsZW4sIGludCBmbGFncylcbi0tXG5uZXQvc21jL3NtY19yeC5jLTM5NC1cbm5ldC9zbWMvc21jX3J4LmM6Mzk1Olx0XHRpZiAoc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoc21jLCBwZWVrZWRfYnl0ZXMpKVxubmV0L3NtYy9zbWNfcnguYy0zOTYtXHRcdFx0Z290byBjb3B5O1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtMzk5LVx0XHRcdC8qIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkgY291bGQgaGF2ZSBydW4gYWZ0ZXJcbm5ldC9zbWMvc21jX3J4LmM6NDAwOlx0XHRcdCAqIGFib3ZlIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKClcbm5ldC9zbWMvc21jX3J4LmMtNDAxLVx0XHRcdCAqL1xubmV0L3NtYy9zbWNfcnguYzo0MDI6XHRcdFx0aWYgKHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHNtYywgcGVla2VkX2J5dGVzKSlcbm5ldC9zbWMvc21jX3J4LmMtNDAzLVx0XHRcdFx0Z290byBjb3B5O1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtNTI2LVxubmV0L3NtYy9zbWNfcnguYzo1Mjc6XHRcdHRyYWNlX3NtY19yeF9yZWN2bXNnKHNtYywgY29weWxlbik7XG5uZXQvc21jL3NtY19yeC5jLTUyOC1cdH0gd2hpbGUgKHJlYWRfcmVtYWluaW5nKTtcbi0tXG5uZXQvc21jL3NtY19yeC5oPTIwPXZvaWQgc21jX3J4X2luaXQoc3RydWN0IHNtY19zb2NrICpzbWMpO1xubmV0L3NtYy9zbWNfcnguaC0yMS1cbm5ldC9zbWMvc21jX3J4Lmg6MjI6aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXG5uZXQvc21jL3NtY19yeC5oLTIzLVx0XHQgICBzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpwaXBlLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MpO1xuLS1cbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuYz02PUVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChzbWNfc3dpdGNoX3RvX2ZhbGxiYWNrKTtcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuYzo3OkVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChzbWNfdHhfc2VuZG1zZyk7XG5uZXQvc21jL3NtY190cmFjZXBvaW50LmM6ODpFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0woc21jX3J4X3JlY3Ztc2cpO1xubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5jLTktRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKHNtY3JfbGlua19kb3duKTtcbi0tXG5uZXQvc21jL3NtY190cmFjZXBvaW50Lmg9NDQ9REVDTEFSRV9FVkVOVF9DTEFTUyhzbWNfbXNnX2V2ZW50LFxuLS1cbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuaC03MC1cbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuaDo3MTpERUZJTkVfRVZFTlQoc21jX21zZ19ldmVudCwgc21jX3R4X3NlbmRtc2csXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmgtNzItXG4tLVxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oLTc3LVxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oOjc4OkRFRklORV9FVkVOVChzbWNfbXNnX2V2ZW50LCBzbWNfcnhfcmVjdm1zZyxcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuaC03OS1cbi0tXG5uZXQvc21jL3NtY190eC5jPTE1OT1zdGF0aWMgYm9vbCBzbWNfdHhfc2hvdWxkX2Nvcmsoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZylcbi0tXG5uZXQvc21jL3NtY190eC5jLTE4MC0gKi9cbm5ldC9zbWMvc21jX3R4LmM6MTgxOmludCBzbWNfdHhfc2VuZG1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxubmV0L3NtYy9zbWNfdHguYy0xODIte1xuLS1cbm5ldC9zbWMvc21jX3R4LmMtMjk5LVxubmV0L3NtYy9zbWNfdHguYzozMDA6XHRcdHRyYWNlX3NtY190eF9zZW5kbXNnKHNtYywgY29weWxlbik7XG5uZXQvc21jL3NtY190eC5jLTMwMS1cdH0gLyogd2hpbGUgKG1zZ19kYXRhX2xlZnQobXNnKSkgKi9cbi0tXG5uZXQvc21jL3NtY190eC5oPTMyPXZvaWQgc21jX3R4X2luaXQoc3RydWN0IHNtY19zb2NrICpzbWMpO1xubmV0L3NtYy9zbWNfdHguaDozMzppbnQgc21jX3R4X3NlbmRtc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbik7XG5uZXQvc21jL3NtY190eC5oLTM0LWludCBzbWNfdHhfc25kYnVmX25vbmVtcHR5KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzY2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU01DIENEQyBSZWNlaXZlciBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBTTUMgQ0RDIHJlY2VpdmVyIHBhdGguIFRoZSBjb3JlIHNvY2tldCBvcGVyYXRpb25zIGZvciBgQUZfU01DYCwgYHNtY19yZWN2bXNnYCBhbmQgYHNtY19zZW5kbXNnYCwgYXJlIHRoZSBvbmVzIEkgc2hvdWxkIGJlIGZvY3VzaW5nIG9uLiBUaGV5IGNhbGwgYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYCwgc28gdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGFuYWx5c2lzLgoKTm93LCBJJiMzOTttIHRyeWluZyB0byB0cmFjZSB0aGUgbWVzc2FnZSBoYW5kbGluZy4gSGVyZSwgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCBsb29rcyBsaWtlIHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzIGNhbGxpbmcgYHNtY19jZGNfbXNnX3RvX2hvc3RgLCB3aGljaCBpcyBjcnVjaWFsIGJlY2F1c2UgaXQgdGhlbiB1dGlsaXplcyB0aG9zZSBtb2RpZmllZCBpbmxpbmUgZnVuY3Rpb25zLiBUaGUgcHJvYmxlbSBpcywgaXQmIzM5O3Mgc3RhdGljISBBbmQgc28gaXMgYHNtY19jZGNfbXNnX3JlY3ZgLCBhbmQgdGhlIHJlY2VpdmVyIHRhc2tsZXQgZnVuY3Rpb24sIGBzbWNkX2NkY19yeF90c2tsZXRgLCBhbmQgdGhlIGhhbmRsZXIsIGBzbWNfY2RjX3J4X2hhbmRsZXJgLiBUaGlzIGlzIGEgaHVyZGxlLCBhcmUgdGhlcmUgYW55IG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIGhlcmU/IEkgbmVlZCB0byBmaW5kIHRoZSBub24tc3RhdGljIHBvaW50IG9mIGVudHJ5IGluIHRoaXMgQ0RDIHBhdGggdGhhdCBoYW5kbGVzIHJlY2VwdGlvbi4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIGNoZWNrIGBuZXQvc21jL3NtY19jZGMuY2AgYW5kIGh1bnQgZm9yIHRoYXQgZW50cnkgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O152b2lkICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTIwOT1pbnQgc21jX2NkY19nZXRfc2xvdF9hbmRfbXNnX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTIyNy1cbm5ldC9zbWMvc21jX2NkYy5jOjIyODp2b2lkIHNtY19jZGNfd2FpdF9wZW5kX3R4X3dyKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NkYy5jLTIyOS17XG4tLVxubmV0L3NtYy9zbWNfY2RjLmM9NDQyPXN0YXRpYyB2b2lkIHNtY2RfY2RjX3J4X3Rza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNDYxLSAqL1xubmV0L3NtYy9zbWNfY2RjLmM6NDYyOnZvaWQgc21jZF9jZGNfcnhfaW5pdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG5uZXQvc21jL3NtY19jZGMuYy00NjMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTUyOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENEQyBNZXNzYWdlIEhhbmRsaW5nIEZsb3cqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3Qgb2ZmLCBgc21jX2NkY19nZXRfc2xvdF9hbmRfbXNnX3NlbmRgIGlzICpub3QqIHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBOb3csIHdoYXQgYWJvdXQgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYD8gQWgsIHRoYXQgb25lICppcyogc3RhdGljLiBIbW0sIEkgbmVlZCBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBJIGNhbiB6ZXJvIGluIG9uIGZvciB0aGUgUlggcGF0aCBvZiB0aGVzZSBDREMgbWVzc2FnZXMsIGEgZ29vZCBmb2N1cyBzeW1ib2wuIE1heWJlLCBqdXN0IG1heWJlLCBgc21jX2NkY19yeF9oYW5kbGVyYCBpcyByZWdpc3RlcmVkIGFzIHRoZSBhY3R1YWwgaGFuZGxlciBmb3IgaW5jb21pbmcgbWVzc2FnZXMuIFRoYXQmIzM5O3MgYSBzdHJvbmcgcG9zc2liaWxpdHkuIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIGBzbWNfY2RjX3J4X2hhbmRsZXJzYCBpcyB1c2VkLiBBaCwgaXQgbG9va3MgbGlrZSBgc21jX2NkY19pbml0YCBoYW5kbGVzIHRoZSByZWdpc3RyYXRpb24sIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIGV4cGVjdGVkLiBOb3cgSSYjMzk7bSB0aGlua2luZyB0aGUgYWN0dWFsIGVudHJ5IHBvaW50IGlzIGxpa2VseSBpbiBgc21jX3dyLmNgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB3aGVyZSB0aGUgaGFyZHdhcmUgaW50ZXJydXB0cyB3b3VsZCBiZSBoYW5kbGVkLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgc21jX3dyX3J4X3Byb2Nlc3NfY3Flc2AsIHRoYXQgc2VlbXMgbGlrZSB0aGUgbmV4dCBsb2dpY2FsIHBsYWNlIHRvIGxvb2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY193cl9yeF9wcm9jZXNzX2NxZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY193ci5jPTQzMD1zdGF0aWMgaW5saW5lIHZvaWQgc21jX3dyX3J4X2RlbXVsdGlwbGV4KHN0cnVjdCBpYl93YyAqd2MpXG4tLVxubmV0L3NtYy9zbWNfd3IuYy00NDgtXG5uZXQvc21jL3NtY193ci5jOjQ0OTpzdGF0aWMgaW5saW5lIHZvaWQgc21jX3dyX3J4X3Byb2Nlc3NfY3FlcyhzdHJ1Y3QgaWJfd2Mgd2NbXSwgaW50IG51bSlcbm5ldC9zbWMvc21jX3dyLmMtNDUwLXtcbi0tXG5uZXQvc21jL3NtY193ci5jPTQ3OT1zdGF0aWMgdm9pZCBzbWNfd3JfcnhfdGFza2xldF9mbihzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxubmV0L3NtYy9zbWNfd3IuYy00OTctXHRcdFx0YnJlYWs7XG5uZXQvc21jL3NtY193ci5jOjQ5ODpcdFx0c21jX3dyX3J4X3Byb2Nlc3NfY3FlcyhcdTAwMjZ3Y1swXSwgcmMpO1xubmV0L3NtYy9zbWNfd3IuYy00OTktXHR9IHdoaWxlIChyYyBcdTAwM2UgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjE4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ0RDIFJlY2VpdmUgUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgQ0RDIHJlY2VpdmUgcGF0aC4gYHNtY193cl9yeF90YXNrbGV0X2ZuYCwgdGhhdCYjMzk7cyB0aGUgY29yZSB0YXNrbGV0IGZ1bmN0aW9uLCByaWdodD8gTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IGlmIGl0JiMzOTtzIGdvdCBzdGF0aWMgbGlua2FnZS4uLiBZZXAsIHN0YXRpYy4gR29vZC4gTm93LCB3aGF0IGFib3V0IGBzbWNfd3JfcnhfZGVtdWx0aXBsZXhgPyBBaCwgdGhhdCYjMzk7cyBzdGF0aWMgaW5saW5lLiBJbnRlcmVzdGluZy4gU28sIHRoZSBwaWN0dXJlIEkmIzM5O20gZ2V0dGluZyBpcyB0aGF0IHRoZSBDREMgcmVjZWl2ZSBwYXRoIGlzICpsYXJnZWx5KiBjb21wb3NlZCBvZiB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zLCBjYWxsZWQgZnJvbSB3aXRoaW4gZWl0aGVyIHRhc2tsZXRzIG9yIGludGVycnVwdCBoYW5kbGVycy4gVGhhdCByZWluZm9yY2VzIG15IGluaXRpYWwgaHVuY2ggYWJvdXQgaG93IHRoZSBoYXJkd2FyZSBpbnRlcmFjdHMgd2l0aCB0aGUgc29mdHdhcmUuCgpOb3csIHdoZXJlIGFyZSB0aGUga2V5IHBvaW50cyBvZiBpbnRlcmFjdGlvbiwgd2hlcmUgdGhlIGRhdGEgZmxvdyBpcyBsZXNzIGVuY2Fwc3VsYXRlZD8gYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYCwgc2luY2UgdGhleSYjMzk7cmUgKm5vbiotc3RhdGljIGFuZCBkaXJlY3RseSBleHBvc2VkLCB0aG9zZSBzZWVtIGxpa2UgcHJpbWUgY2FuZGlkYXRlcyBmb3IgZGVlcGVyIGluc3BlY3Rpb24uIFRoZXkmIzM5O3JlIGxpa2VseSBlbnRyeSBwb2ludHMgb3IgY3J1Y2lhbCBkYXRhIG1hbmlwdWxhdGlvbiBwb2ludHMuIEFyZSB0aGVyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byBDREMgdGhhdCBtaWdodCBiZSByZWxldmFudD8gTGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGBzbWNfY2RjX2dldF9mcmVlX3Nsb3RgIC0gcHJvYmFibHkgcGxheXMgYSByb2xlIGluIGJ1ZmZlciBtYW5hZ2VtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfY2RjX2dldF9mcmVlX3Nsb3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jZGMuYz0yNj1zdGF0aWMgdm9pZCBzbWNfY2RjX3R4X2hhbmRsZXIoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKnBuZF9zbmQsXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNzItXG5uZXQvc21jL3NtY19jZGMuYzo3MzppbnQgc21jX2NkY19nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcbm5ldC9zbWMvc21jX2NkYy5jLTc0LVx0XHRcdCAgc3RydWN0IHNtY19saW5rICpsaW5rLFxuLS1cbm5ldC9zbWMvc21jX2NkYy5jPTE3ND1zdGF0aWMgaW50IHNtY3JfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtMTg1LVx0XHRyZXR1cm4gLUVOT0xJTks7XG5uZXQvc21jL3NtY19jZGMuYzoxODY6XHRyYyA9IHNtY19jZGNfZ2V0X2ZyZWVfc2xvdChjb25uLCBsaW5rLCBcdTAwMjZ3cl9idWYsIE5VTEwsIFx1MDAyNnBlbmQpO1xubmV0L3NtYy9zbWNfY2RjLmMtMTg3LVx0aWYgKHJjKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5oPTMwMz1zdHJ1Y3Qgc21jX2NkY190eF9wZW5kIHtcbi0tXG5uZXQvc21jL3NtY19jZGMuaC0zMDktXG5uZXQvc21jL3NtY19jZGMuaDozMTA6aW50IHNtY19jZGNfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXG5uZXQvc21jL3NtY19jZGMuaC0zMTEtXHRcdFx0ICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jPTEwOTU9c3RydWN0IHNtY19saW5rICpzbWNfc3dpdGNoX2Nvbm5zKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xMTQ5LVx0XHQvKiBwcmUtZmV0Y2ggYnVmZmVyIG91dHNpZGUgb2Ygc2VuZF9sb2NrLCBtaWdodCBzbGVlcCAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjExNTA6XHRcdHJjID0gc21jX2NkY19nZXRfZnJlZV9zbG90KGNvbm4sIHRvX2xuaywgXHUwMDI2d3JfYnVmLCBOVUxMLCBcdTAwMjZwZW5kKTtcbm5ldC9zbWMvc21jX2NvcmUuYy0xMTUxLVx0XHRpZiAocmMpXG4tLVxubmV0L3NtYy9zbWNfdHguYz01NjM9c3RhdGljIGludCBzbWNyX3R4X3NuZGJ1Zl9ub25lbXB0eShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG4tLVxubmV0L3NtYy9zbWNfdHguYy01NzMtXHRcdHJldHVybiAtRU5PTElOSztcbm5ldC9zbWMvc21jX3R4LmM6NTc0Olx0cmMgPSBzbWNfY2RjX2dldF9mcmVlX3Nsb3QoY29ubiwgbGluaywgXHUwMDI2d3JfYnVmLCBcdTAwMjZ3cl9yZG1hX2J1ZiwgXHUwMDI2cGVuZCk7XG5uZXQvc21jL3NtY190eC5jLTU3NS1cdGlmIChyYyBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMyNAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENEQyBNZXNzYWdlIEhhbmRsaW5nIGluIGBuZXQvc21jL3NtY19jZGMuY2AqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBmb2N1c2VkIG9uIENEQyBtZXNzYWdlIGhhbmRsaW5nIGFuZCBjdXJzb3IgYm91bmRzIGNoZWNraW5nIOKAkyBnb3QgaXQuIFRoYXQgbWVhbnMgYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYCBhcmUgdGhlIGtleSBub24tc3RhdGljIGZ1bmN0aW9ucyB0byBzY3J1dGluaXplLiBMZXQgbWUgc2VlLi4uYWgsIHllcywgYHNtY190eF9zZW5kbXNnYCBpcyB1cGRhdGVkIHRvIGluY29ycG9yYXRlIGEgY2hlY2sgb24gYHdyaXRlc3BhY2VgLiBUaGF0JiMzOTtzIGltcG9ydGFudDsgaXQmIzM5O3MgdXNpbmcgdGhlIHBlZXImIzM5O3Mgd2lyZS1jb250cm9sbGVkIGNvbnN1bWVyIGN1cnNvciB0byBkZXRlcm1pbmUgYXZhaWxhYmxlIHNwYWNlLiBBbmQgYHNtY19yeF9yZWN2bXNnYCBpcyBzaW1pbGFybHkgdXBkYXRlZCB0byBjaGVjayBgcmVhZGFibGVgLCB3aGljaCBpcyBkZXJpdmVkIGZyb20gdGhlIHBlZXImIzM5O3Mgd2lyZS1jb250cm9sbGVkIHByb2R1Y2VyIGN1cnNvci4gU28gYm90aCBvZiB0aG9zZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIGRpcmVjdGx5IG1vZGlmaWVkIHRvIGVuZm9yY2UgdGhlc2UgYm91bmRzLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGBuZXQvc21jL3NtY19jZGMuY2AgdGhhdCBhcmUgYWxzbyBpbnZvbHZlZCBpbiBoYW5kbGluZyBDREMgbWVzc2FnZXMuIEl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoIGFuZCB2ZXJpZnkgdGhhdCB3ZSYjMzk7dmUgY292ZXJlZCBhbGwgdGhlIHJlbGV2YW50IGVudHJ5IHBvaW50cy4gSSBuZWVkIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGNoYW5nZXMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVowLTlfXSYjNDM7IHNtY19jZGNfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY2RjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY2RjLmM9MjY9c3RhdGljIHZvaWQgc21jX2NkY190eF9oYW5kbGVyKHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICpwbmRfc25kLFxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTcyLVxubmV0L3NtYy9zbWNfY2RjLmM6NzM6aW50IHNtY19jZGNfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXG5uZXQvc21jL3NtY19jZGMuYy03NC1cdFx0XHQgIHN0cnVjdCBzbWNfbGluayAqbGluayxcbi0tXG5uZXQvc21jL3NtY19jZGMuYz05ND1zdGF0aWMgaW5saW5lIHZvaWQgc21jX2NkY19hZGRfcGVuZGluZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcbi0tXG5uZXQvc21jL3NtY19jZGMuYy0xMTEtXG5uZXQvc21jL3NtY19jZGMuYzoxMTI6aW50IHNtY19jZGNfbXNnX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxubmV0L3NtYy9zbWNfY2RjLmMtMTEzLVx0XHQgICAgIHN0cnVjdCBzbWNfd3JfYnVmICp3cl9idWYsXG4tLVxubmV0L3NtYy9zbWNfY2RjLmM9MTc0PXN0YXRpYyBpbnQgc21jcl9jZGNfZ2V0X3Nsb3RfYW5kX21zZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbi0tXG5uZXQvc21jL3NtY19jZGMuYy0yMDgtXG5uZXQvc21jL3NtY19jZGMuYzoyMDk6aW50IHNtY19jZGNfZ2V0X3Nsb3RfYW5kX21zZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NkYy5jLTIxMC17XG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtMjI3LVxubmV0L3NtYy9zbWNfY2RjLmM6MjI4OnZvaWQgc21jX2NkY193YWl0X3BlbmRfdHhfd3Ioc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxubmV0L3NtYy9zbWNfY2RjLmMtMjI5LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyMjYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMgQ0RDIE1lc3NhZ2UgRmxvdyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSB0aGF0IGBzbWNfY2RjX21zZ19zZW5kYCBhbmQgYHNtY19jZGNfZ2V0X3Nsb3RfYW5kX21zZ19zZW5kYCBhcmUgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHdoaWNoIGlzIHVzZWZ1bCBpbmZvcm1hdGlvbiB0byBrbm93IGltbWVkaWF0ZWx5LiBIb3dldmVyLCB0aGUgcGF0Y2ggaXMgbWFraW5nIGNoYW5nZXMgdG8gYHNtY19jZGNfY3Vyc29yX3RvX2hvc3RgLCBgc21jcl9jZGNfbXNnX3RvX2hvc3RgLCBhbmQgYHNtY2RfY2RjX21zZ190b19ob3N0YCwgYW5kIHRob3NlIGFyZSBhbGwgY2FsbGVkIGR1cmluZyB0aGUgUlggcGF0aCDigJMgdGhhdCYjMzk7cyB3aGVuIHdlJiMzOTtyZSByZWNlaXZpbmcgQ0RDIG1lc3NhZ2VzIGZyb20gdGhlIG90aGVyIHNpZGUuIE5vdywgdGhvc2UgUlggcGF0aCBmdW5jdGlvbnM/IE1vc3RseSBzdGF0aWMuIFRoYXQgbWFrZXMgdGhpbmdzIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcsIHJpZ2h0PwoKR2l2ZW4gdGhpcywgaXQgbG9va3MgbGlrZSBgc21jX3J4X3JlY3Ztc2dgIGFuZCBgc21jX3R4X3NlbmRtc2dgIGFyZSBnb2luZyB0byBiZSB0aGUgcHJpbWUgc3VzcGVjdHMsIHRoZSBzeW1ib2xzIHRoYXQgZGVzZXJ2ZSB0aGUgY2xvc2VzdCBpbnNwZWN0aW9uLiBUaGV5JiMzOTtyZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIGhlcmUuCgpCZWZvcmUgZGlnZ2luZyBkZWVwZXIsIEkgc2hvdWxkIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBlbHNlLiBMZXQgbWUgY2hlY2sgZm9yIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMuIE9rYXksIHdlJiMzOTt2ZSBnb3QgYFNNQ2AgaXRzZWxmLCB3aGljaCBpcyBhIGtleSBzdGFydGluZyBwb2ludC4gQXJlIHRoZXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHJlbGF0ZWQgdG8gdGhlIFNNQyBjb25maWd1cmF0aW9uPyBJJiMzOTtsbCBuZWVkIHRvIGNoYXNlIHRoYXQgZG93bi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNNQyQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NzU1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBTTUMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBTTUNgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBtYXAgb3V0IGl0cyBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgY29tcG9uZW50cywgbW9kdWxlcywgb3IgbGlicmFyaWVzIGBTTUNgIHJlbGllcyBvbiB0byBmdW5jdGlvbi4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNvbnNpZGVyLCBhdCBhIGhpZ2ggbGV2ZWwsIHRoZSB0eXBlcyBvZiBkZXBlbmRlbmNpZXMgSSBleHBlY3QgdG8gc2VlLiBBcmUgd2UgdGFsa2luZyBhYm91dCBjb3JlIGxpYnJhcmllcywgcGVyaGFwcyBzb21lIGRvbWFpbi1zcGVjaWZpYyB1dGlsaXRpZXMsIG1heWJlIGV2ZW4gZXh0ZXJuYWwgc2VydmljZXMgaXQgaW50ZXJmYWNlcyB3aXRoPwoKTGV0JiMzOTtzIHN0YXJ0IGZyb20gdGhlIHRvcCwgSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGFyZSBlc3NlbnRpYWwuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpyZXF1aXJlZCogZm9yIGBTTUNgIHRvIGV2ZW4gYm9vdCwgYW5kIHdoYXQgaXMgKm5pY2UtdG8taGF2ZSouIFVuZGVyc3RhbmRpbmcgdGhlIGNvcmUgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWwuIFRoZSBub24tZXNzZW50aWFsLCBvciBwb3RlbnRpYWxseSBvcHRpb25hbCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBpbnRlcmVzdGluZyAtIGtub3dpbmcgdGhvc2UgbWlnaHQgdW5sb2NrIG5ldyBwb3NzaWJpbGl0aWVzIGZvciBvcHRpbWl6YXRpb24uCgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBsYXllcnMgaGVyZS4gSXMgdGhpcyBhIGRlZXAgZGVwZW5kZW5jeSBncmFwaCwgb3IgcmVsYXRpdmVseSBzaGFsbG93PyBUaGUgbW9yZSBsYXllcnMsIHRoZSBtb3JlIGNvbXBsZXggdGhlIHN5c3RlbSBiZWNvbWVzLgoKRmluYWxseSwgSSBuZWVkIHRvIGxvb2sgcGFzdCBqdXN0IHRoZSBkaXJlY3QgZGVwZW5kZW5jaWVzLiBXaGF0IGFyZSB0aGUgaW5kaXJlY3QgaW1wbGljYXRpb25zIG9mIHRoZXNlIGRlcGVuZGVuY2llcz8gSG93IGRvZXMgYFNNQ2AgaW5mbHVlbmNlICpvdGhlciogY29tcG9uZW50cz8gV2hhdCByaXNrcyBvciBwb3RlbnRpYWwgYm90dGxlbmVja3MgZG9lcyBgU01DYCBpbnRyb2R1Y2U/IEkgbmVlZCB0aGUgZnVsbCBwaWN0dXJlIGhlcmUgdG8gbWFrZSBhbnkgcmVhbCBhc3Nlc3NtZW50IG9mIGl0cyBkZXNpZ24gb3IgcG90ZW50aWFsIGltcHJvdmVtZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU01DXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFNNQy1SIHByb3ZpZGVzIGEgXCYjMzQ7c29ja2V0cyBvdmVyIFJETUFcJiMzNDsgc29sdXRpb24gbWFraW5nIHVzZSBvZlxuICAgNzpcdFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcbiAgIDg6XHRcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cbiAgIDk6XHRcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xuICAxMDpcdFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxuICAxMTpcdFxuICAxMjpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIFNNQ19ESUFHXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBTTUNcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcbiAgMTk6XHRcdCAgc21jc3MuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MzU5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBUcmFpbiBvZiBUaG91Z2h0KioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlc2UgZGVwZW5kZW5jaWVzLiBJbml0aWFsbHksIEkgdGhvdWdodCBpdCB3YXMgZGVwZW5kZW50IG9uIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgLCBidXQgc29tZXRoaW5nIGZlbHQgb2ZmLiBMZXQgbWUgcmUtZXZhbHVhdGUuLi4gUmlnaHQsIGhvbGQgb24sIGl0JiMzOTtzIGp1c3QgYElORVRgIGFuZCBgSU5GSU5JQkFORGAuIEdvb2QsIGdvdCBpdC4gQmV0dGVyIGRvdWJsZSBjaGVjaywgdGhvdWdoLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4gSSYjMzk7bSBnb2luZyB0byB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGF0IGBuZXQvc21jL0tjb25maWdgIGZpbGUuIE5lZWQgdG8gZW5zdXJlIEkgaGF2ZW4mIzM5O3QgbWlzcmVhZCB0aGUgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTTUNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IERJQlNcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgU01DLVIgcHJvdmlkZXMgYSBcJiMzNDtzb2NrZXRzIG92ZXIgUkRNQVwmIzM0OyBzb2x1dGlvbiBtYWtpbmcgdXNlIG9mXG4gICA3Olx0XHQgIFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQgKFJvQ0UpIHRlY2hub2xvZ3kgdG8gdXBncmFkZVxuICAgODpcdFx0ICBBRl9JTkVUIFRDUCBjb25uZWN0aW9ucyB0cmFuc3BhcmVudGx5LlxuICAgOTpcdFx0ICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNNQy1SIHNvbHV0aW9uIGlzIGRlc2lnbmVkIGFzXG4gIDEwOlx0XHQgIGEgc2VwYXJhdGUgc29ja2V0IGZhbWlseSBTTUMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NzYwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQ29uZnVzaW9uIGFuZCBDbGFyaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGFuZCBJIHNlZSBgRElCU2AuIFdhaXQgYSBtaW51dGUsIGlzIHRoYXQgcmlnaHQ/IERpZCBJIG1pc3JlYWQgc29tZXRoaW5nPyBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGltbWVkaWF0ZWx5IGNoZWNrLCB0byBzZWUgaWYgaXQmIzM5O3MgYSB0eXBvIG9yIHNvbWV0aGluZy4gT2theSwgbGV0IG1lIHF1aWNrbHkgZ28gYmFjayBhbmQgdmVyaWZ5LiBBaCwgeWVzLCB0aGVyZSBpdCBpczogYGRlcGVuZHMgb24gSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkQgJmFtcDsmYW1wOyBESUJTYC4gUmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYERJQlNgIGlzIGluIHRoaXMgY29udGV4dC4gTGV0IG1lIG1ha2Ugc3VyZSBJJiMzOTttIHNlZWluZyB0aGlzIGNvcnJlY3RseS4gT2ssIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgYWN0dWFsIGZpbGUgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBSaWdodCwgc28gaXQmIzM5O3MgYGRlcGVuZHMgb24gSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkQgJmFtcDsmYW1wOyBESUJTYCBhbHJpZ2h0LCBsZXQgbWUgY2hlY2sgdGhlIGZpbGUgcHJvcGVybHkgYWdhaW4uIExldCBtZSBqdXN0IGdyZXAgZm9yIGBESUJTYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RElCUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWc9Mj1jb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG5uZXQvc21jL0tjb25maWc6NDpcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORCBcdTAwMjZcdTAwMjYgRElCU1xubmV0L3NtYy9LY29uZmlnLTUtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MTQ0CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbml0aWFsIEltcHJlc3Npb24gYW5kIFRlcm1pbm9sb2d5IFZlcmlmaWNhdGlvbioqCgomIzM0O1dhaXQsIGRpZCBJIGp1c3Qgc2VlIGBESUJTYD8gUmVhbGx5PyBIdWguIEludGVyZXN0aW5nLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMsIHRoYXQmIzM5O3Mgbm90IHNvbWV0aGluZyBJIHNlZSBldmVyeSBkYXksIGVzcGVjaWFsbHkgaW4gdGhpcyBjb250ZXh0LiBBbHJpZ2h0LCBob2xkIG9uLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGVuc3VyZSB0aGVyZSYjMzk7cyBubyBtaXNpbnRlcnByZXRhdGlvbiwgZXNwZWNpYWxseSB3aXRoIGFjcm9ueW1zIHRoYXQgY2FuIGhhdmUgbXVsdGlwbGUgbWVhbmluZ3MgZGVwZW5kaW5nIG9uIHRoZSBkb21haW4uIEkgbmVlZCB0byBlc3RhYmxpc2ggYSBiYXNlIGRlZmluaXRpb24gZm9yIGBESUJTYCBiZWZvcmUgSSBjYW4gcHJvcGVybHkgYXNzZXNzIGl0LiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBESUJTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9kaWJzL0tjb25maWc6Mjpjb25maWcgRElCU1xuZHJpdmVycy9kaWJzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0RpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9kaWJzL0tjb25maWctMTMtXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjQ1NgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6CgoqKkNoZWNraW5nIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBgRElCU2AsIHRoYXQmIzM5O3MgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nLiBHb3QgaXQuIE5vdywgZ2l2ZW4gdGhlIGNvbnRleHQsIEkmIzM5O20gZ29pbmcgdG8gYXNzdW1lIHRoaXMgaXMgcmVsYXRlZCB0byBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcgb3IgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIHdpdGhpbiBhIHNlcnZlciBvciBjbHVzdGVyLiBTbywgdGhlIG1haW4gaW50ZXJmYWNlcyB0aGF0IGNvbWUgdG8gbWluZCBhcmUgYElORVRgICh0eXBpY2FsIFRDUC9JUCksIGBJTkZJTklCQU5EYCAoaGlnaC1zcGVlZCBpbnRlcmNvbm5lY3QpLCBgRElCU2AsIGFuZCBgU01DYCAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykuIEl0JiMzOTtzIGEgcXVpY2sgbWVudGFsIGNoZWNrbGlzdCBvZiB0aGUga2V5IGNvbnRlbmRlcnMgZm9yIHRoaXMga2luZCBvZiB3b3JrLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgd2UmIzM5O3JlIGNvdmVyaW5nIGFsbCBvdXIgYmFzZXMuIGBJTkZJTklCQU5EYCBpcyBvZnRlbiBpbnRlZ3JhdGVkIHdpdGggYSBsb3Qgb2YgbGlicmFyaWVzLiBTbyBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGVuc3VyZSBpdCYjMzk7cyBkZXBlbmRlbmNpZXMgYXJlIGluIGNoZWNrLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgSU5GSU5JQkFORGAsIGFzIGl0IGZyZXF1ZW50bHkgcmVsaWVzIG9uIG90aGVyIHVuZGVybHlpbmcgZHJpdmVycyBvciBwcm90b2NvbHMuIEkmIzM5O2xsIHNlZSBpZiBJIG5lZWQgdG8gYWRqdXN0IG9yIGFkZCBhbnl0aGluZyBiYXNlZCBvbiB3aGF0IGl0IGRlcGVuZHMgb24uIFRoaXMgaXMgdG8gZW5zdXJlIHdlIGhhdmUgYSBnb29kIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5GSU5JQkFORCQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjI6bWVudWNvbmZpZyBJTkZJTklCQU5EXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SW5maW5pQmFuZCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2ODU4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkV4YW1pbmluZyBJbmZpbmliYW5kIERlcGVuZGVuY2llcyBpbiB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIHRoZSBJbmZpbmliYW5kIHN1YnN5c3RlbSB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCBhIHByZXR0eSBzdGFuZGFyZCBhcHByb2FjaCwgaXMgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGF0IG1lYW5zIEkgc2hvdWxkIG5hdmlnYXRlIHRvIHRoZSBgZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWdgIGZpbGUuIEkga25vdyB0aGF0JiMzOTtzIHdoZXJlIHRoZSByZWxldmFudCBgQ09ORklHX0lORklOSUJBTkRgIHNldHRpbmcsIGFuZCBpdHMgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZmVhdHVyZXMgb3IgaGFyZHdhcmUsIGlzIGRlZmluZWQuIEJ5IGV4YW1pbmluZyB0aGlzIGZpbGUsIEkmIzM5O2xsIGJlIGFibGUgdG8gcXVpY2tseSBkZXRlcm1pbmUgYWxsIHRoZSB1bmRlcmx5aW5nIHJlcXVpcmVtZW50cyBhbmQgY29uc3RyYWludHMgZm9yIGVuYWJsaW5nIEluZmluaWJhbmQgc3VwcG9ydCBpbiB0aGlzIGtlcm5lbCBidWlsZCwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkgbmVlZCB0byBkby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnVjb25maWcgSU5GSU5JQkFORFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7SW5maW5pQmFuZCBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgIDY6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAgNzpcdFx0ZGVwZW5kcyBvbiAhQUxQSEFcbiAgIDg6XHRcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuICAgOTpcdFx0c2VsZWN0IElSUV9QT0xMXG4gIDEwOlx0XHRzZWxlY3QgRElNTElCXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MjA3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgS2VybmVsIENvbmZpZ3VyYXRpb24gQ2hlY2tsaXN0KioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugc2V0dGluZyB1cCBgSU5GSU5JQkFORGAgaXMgZ29pbmcgdG8gbGVhbiBvbiBhIGZldyBrZXkgYnVpbGRpbmcgYmxvY2tzOiBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgTkVUYCwgYW5kIGBJTkVUYCwgYnV0IG5vdCBpZiB3ZSBhcmUgb24gYW4gYEFMUEhBYCBzeXN0ZW0sIHdoaWNoIEkgd291bGRuJiMzOTt0IGV4cGVjdCBhbnl3YXkuIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kLiBTbywgaWYgSSB3YW50IGBJTkZJTklCQU5EYCB3b3JraW5nIGFzIGV4cGVjdGVkLCBJJiMzOTtsbCBuZWVkIHRvIGVuc3VyZSB0aG9zZSBhcmUgYWxzbyBjb25maWd1cmVkIHByb3Blcmx5LiAKClNwZWNpZmljYWxseSwgYElORVRgLCBgSU5GSU5JQkFORGAsIGBESUJTYCwgYW5kIGBTTUNgIHNlZW0gdG8gYmUgdGhlIHByaW1hcnkgY29uZmlncyBpbnZvbHZlZCBoZXJlLiBOb3csIEkgc2hvdWxkIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlcXVpcmVtZW50cyBvZiBgRElCU2Agc2luY2UgaXQmIzM5O3Mgb25lIG9mIHRoZSBvcHRpb25zLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBkZXBlbmRzIG9uLi4uIEl0JiMzOTtzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGRlcGVuZGVuY3kgdHJlZSwgYW5kIEkmIzM5O2xsIG5lZWQgdG8gZGVsdmUgaW50byBgRElCU2AgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gb3JkZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0Y29uZmlnIERJQlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0RpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IG5cbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcbiAgIDc6XHRcdCAgdXNlcyBjb21tb24gcGh5c2ljYWwgKGludGVybmFsKSBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIGRpcmVjdCBhY2Nlc3NcbiAgIDg6XHRcdCAgaW50byBhIHJlbW90ZSBidWZmZXIuXG4gICA5Olx0XG4gIDEwOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBwcm92aWRlIHRoZSBhYnN0cmFjdGlvbiBsYXllciBiZXR3ZWVuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NjQ1CgkJCQkJCQlvdXRwdXQ6IDExNgoJCQkJCQkJdGhvdWdodHM6IDQ0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBUaGlzIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZm9yIGEgdGFyZ2V0ZWQgZnV6emluZyBhcHByb2FjaC4gSXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgY3J1Y2lhbCBib3VuZHMgY2hlY2tpbmcgd2l0aGluIHRoZSBTTUMgKFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMpIHByb3RvY29sLCBzcGVjaWZpY2FsbHkgYXJvdW5kIENEQyAoQ29ubmVjdGlvbiBEYXRhIENoYW5uZWwpIG1lc3NhZ2UgcHJvY2Vzc2luZy4gVGhlIGdvYWwgaXMgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGhhbmRsaW5nIHBvdGVudGlhbGx5IG1hbGljaW91cyBvciBjb3JydXB0ZWQgQ0RDIG1lc3NhZ2VzLiBUaGUga2V5IHRha2Vhd2F5IGlzIHRoYXQgdGhpcyB0b3VjaGVzIGNvcmUga2VybmVsIGxvZ2ljIGRpcmVjdGx5IGV4cG9zZWQgdmlhIHRoZSBTTUMgcHJvdG9jb2wuCgpGaXJzdCwgdGhlIGRlcGVuZGVuY2llcyBhcmUgc3RyYWlnaHRmb3J3YXJkOyB3ZSBvbmx5IG5lZWQgdG8gZW5hYmxlIGBTTUNgLCBgSU5GSU5JQkFORGAsIGFuZCBgRElCU2AgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGUgYW5hbHlzaXMgaW5kaWNhdGVzIHRoaXMgaXMgYSBwcm9taXNpbmcgYXJlYSBmb3IgZnV6emluZyAoV29ydGhGdXp6aW5nOiB0cnVlKS4gVGhlIGlkZW50aWZpZWQgZm9jdXMgc3ltYm9scyBhcmUgYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYC4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZXNlIGFyZSB0aGUgb25seSBub24tc3RhdGljIGZ1bmN0aW9ucyBkaXJlY3RseSBtb2RpZmllZC4gVGhlIG90aGVyIGNoYW5nZXMgYXJlIGlubGluZWQgb3Igc3RhdGljIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gQ0RDIG1lc3NhZ2UgY29udmVyc2lvbjogYHNtY19jZGNfY3Vyc29yX3RvX2hvc3RgLCBgc21jcl9jZGNfbXNnX3RvX2hvc3RgLCBgc21jZF9jZGNfbXNnX3RvX2hvc3RgLCBgc21jX2NkY19tc2dfdG9faG9zdGAsIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAsIGBzbWNfY2RjX21zZ19yZWN2YCwgYHNtY2RfY2RjX3J4X3Rza2xldGAsIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYC4gIEhvd2V2ZXIsIGJlY2F1c2Ugb2YgdGhlIGNhbGwgY2hhaW46ICBgc21jX3J4X3JlY3Ztc2dgIGFuZCBgc21jX3R4X3NlbmRtc2dgIGFyZSB0aGUgZW50cnkgcG9pbnRzLiBUaGVyZWZvcmUsIGZvY3VzaW5nIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZSB0d28gZnVuY3Rpb25zIGlzIGEgY29ycmVjdCBhbmQgc3VmZmljaWVudCBzdHJhdGVneS4KCkZpbmFsbHksIEkgdmVyaWZpZWQgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGVzZSBrZXkgZnVuY3Rpb25zOiB0aGV5IGFyZSBwYXJ0IG9mIHRoZSBzb2NrZXQgb3BlcmF0aW9ucyAoYHNtY19yZWN2bXNnYCBhbmQgYHNtY19zZW5kbXNnYCkgZm9yIHRoZSBgQUZfU01DYCBhZGRyZXNzIGZhbWlseS4gVGhpcyBtZWFucyBhbnkgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIGNhbiB0cmlnZ2VyIHRoZW0gYnkgY3JlYXRpbmcgYW4gYEFGX1NNQ2Agc29ja2V0IGFuZCBjYWxsaW5nIGByZWN2bXNnYCBvciBgc2VuZG1zZ2AuIFBlcmZlY3QhIFRoaXMgbWFrZXMgY3JhZnRpbmcgdGVzdCBjYXNlcyByZWxhdGl2ZWx5IGVhc3kuCgpPa2F5LCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGlzIHN0cmF0ZWd5LiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDU6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfcnhfcmVjdm1zZyYjMzQ7LAogICAgJiMzNDtzbWNfdHhfc2VuZG1zZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBTTUMgQ0RDIG1lc3NhZ2UgcHJvY2Vzc2luZyBhbmQgc29ja2V0IHJlY2VpdmUvdHJhbnNtaXQgcGF0aHMgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGhhbmRsaW5nIGZvcmdlZCBvciBtYWxmb3JtZWQgQ0RDIG1lc3NhZ2VzIGZyb20gYSBwZWVyLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgU01DIHByb3RvY29sIHN1YnN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U01DJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19yeF9yZWN2bXNnJiMzNDssCiAgICAmIzM0O3NtY190eF9zZW5kbXNnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIFNNQyBDREMgbWVzc2FnZSBwcm9jZXNzaW5nIGFuZCBzb2NrZXQgcmVjZWl2ZS90cmFuc21pdCBwYXRocyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIGludGVnZXIgb3ZlcmZsb3dzIHdoZW4gaGFuZGxpbmcgZm9yZ2VkIG9yIG1hbGZvcm1lZCBDREMgbWVzc2FnZXMgZnJvbSBhIHBlZXIuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGluIHRoZSBTTUMgcHJvdG9jb2wgc3Vic3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTA6MjguOTMyNTU3MzEzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE0OTQ3MzkwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jX3J4X3JlY3Ztc2dcIixcbiAgICBcInNtY190eF9zZW5kbXNnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gU01DIENEQyBtZXNzYWdlIHByb2Nlc3NpbmcgYW5kIHNvY2tldCByZWNlaXZlL3RyYW5zbWl0IHBhdGhzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBoYW5kbGluZyBmb3JnZWQgb3IgbWFsZm9ybWVkIENEQyBtZXNzYWdlcyBmcm9tIGEgcGVlci4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgaW4gdGhlIFNNQyBwcm90b2NvbCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjEwOjI4LjkzMjU2NDkzM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE0NDMyNzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTc0NjZkODI2MWIxMzAwNzQyOGM0NjU2ODc2MjY4MjIzZWFiY2Y4YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAwNToxMDoyNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jZGMuaCBiL25ldC9zbWMvc21jX2NkYy5oXFxuaW5kZXggNjk2Y2MxMWYyMzAzYjkuLmNhNzZlZjYzMDM1NjZjIDEwMDY0NFxcbi0tLSBhL25ldC9zbWMvc21jX2NkYy5oXFxuKysrIGIvbmV0L3NtYy9zbWNfY2RjLmhcXG5AQCAtMjIxLDcgKzIyMSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfaG9zdF9tc2dfdG9fY2RjKHN0cnVjdCBzbWNfY2RjX21zZyAqcGVlcixcXG4gXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfY2RjX2N1cnNvcl90b19ob3N0KHVuaW9uIHNtY19ob3N0X2N1cnNvciAqbG9jYWwsXFxuIFxcdFxcdFxcdFxcdFxcdCAgdW5pb24gc21jX2NkY19jdXJzb3IgKnBlZXIsXFxuLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxcbitcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcXG4rXFx0XFx0XFx0XFx0XFx0ICBpbnQgbWF4X2NvdW50KVxcbiB7XFxuIFxcdHVuaW9uIHNtY19ob3N0X2N1cnNvciB0ZW1wLCBvbGQ7XFxuIFxcdHVuaW9uIHNtY19jZGNfY3Vyc29yIG5ldDtcXG5AQCAtMjM1LDYgKzIzNiwxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc21jX2NkY19jdXJzb3JfdG9faG9zdCh1bmlvbiBzbWNfaG9zdF9jdXJzb3IgKmxvY2FsLFxcbiBcXHRpZiAoKG9sZC53cmFwID09IHRlbXAud3JhcCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIChvbGQuY291bnQgXFx1MDAzZSB0ZW1wLmNvdW50KSlcXG4gXFx0XFx0cmV0dXJuO1xcbitcXHQvKiBUaGUgcGVlciBwcm9kdWNlciBjdXJzb3IgaXMgd2lyZS1jb250cm9sbGVkIGFuZCBpcyBsYXRlciB1c2VkIGFzIGFcXG4rXFx0ICogcmF3IGluZGV4IGludG8gb3VyIFJNQiBieSB0aGUgdXJnZW50IHBhdGg7IGJvdW5kIGl0cyBjb3VudCB0byB0aGVcXG4rXFx0ICogUk1CLiAgbWF4X2NvdW50ID09IDAgbGVhdmVzIHRoZSBjb25zdW1lciBjdXJzb3IgdW5ib3VuZGVkIGhlcmU6IGl0XFxuK1xcdCAqIGluZGV4ZXMgdGhlIHBlZXIncyBSTUIgKGJvdW5kZWQgYnkgcGVlcl9ybWJlX3NpemUsIG5vdCBvdXJcXG4rXFx0ICogcm1iX2Rlc2MtXFx1MDAzZWxlbiksIHNvIGNsYW1waW5nIGl0IHRvIHJtYl9kZXNjLVxcdTAwM2VsZW4gd291bGQgdW5kZXItY3JlZGl0XFxuK1xcdCAqIHBlZXJfcm1iZV9zcGFjZSBhbmQgc3RhbGwgdHJhbnNtaXQgdG8gcGVlcnMgd2l0aCBhIGxhcmdlciBSTUIuXFxuK1xcdCAqL1xcbitcXHRpZiAobWF4X2NvdW50IFxcdTAwMjZcXHUwMDI2IHRlbXAuY291bnQgXFx1MDAzZSBtYXhfY291bnQpXFxuK1xcdFxcdHRlbXAuY291bnQgPSBtYXhfY291bnQ7XFxuIFxcdHNtY19jdXJzX2NvcHkobG9jYWwsIFxcdTAwMjZ0ZW1wLCBjb25uKTtcXG4gfVxcbiBcXG5AQCAtMjQ2LDggKzI1NiwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc21jcl9jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLFxcbiBcXHRsb2NhbC1cXHUwMDNlbGVuID0gcGVlci1cXHUwMDNlbGVuO1xcbiBcXHRsb2NhbC1cXHUwMDNlc2Vxbm8gPSBudG9ocyhwZWVyLVxcdTAwM2VzZXFubyk7XFxuIFxcdGxvY2FsLVxcdTAwM2V0b2tlbiA9IG50b2hsKHBlZXItXFx1MDAzZXRva2VuKTtcXG4tXFx0c21jX2NkY19jdXJzb3JfdG9faG9zdChcXHUwMDI2bG9jYWwtXFx1MDAzZXByb2QsIFxcdTAwMjZwZWVyLVxcdTAwM2Vwcm9kLCBjb25uKTtcXG4tXFx0c21jX2NkY19jdXJzb3JfdG9faG9zdChcXHUwMDI2bG9jYWwtXFx1MDAzZWNvbnMsIFxcdTAwMjZwZWVyLVxcdTAwM2Vjb25zLCBjb25uKTtcXG4rXFx0LyogYm91bmQgdGhlIHdpcmUtY29udHJvbGxlZCBwcm9kdWNlciBjdXJzb3IgdG8gb3VyIFJNQiAodXNlZCBhcyBhIHJhd1xcbitcXHQgKiBpbmRleCBieSB0aGUgdXJnZW50IHBhdGgpOyBsZWF2ZSB0aGUgY29uc3VtZXIgY3Vyc29yIHVuYm91bmRlZCAtLSBpdFxcbitcXHQgKiBpbmRleGVzIHRoZSBwZWVyJ3MgUk1CIGFuZCBpcyBib3VuZGVkIGJ5IHBlZXJfcm1iZV9zaXplLlxcbitcXHQgKi9cXG4rXFx0c21jX2NkY19jdXJzb3JfdG9faG9zdChcXHUwMDI2bG9jYWwtXFx1MDAzZXByb2QsIFxcdTAwMjZwZWVyLVxcdTAwM2Vwcm9kLCBjb25uLFxcbitcXHRcXHRcXHQgICAgICAgY29ubi1cXHUwMDNlcm1iX2Rlc2MtXFx1MDAzZWxlbik7XFxuK1xcdHNtY19jZGNfY3Vyc29yX3RvX2hvc3QoXFx1MDAyNmxvY2FsLVxcdTAwM2Vjb25zLCBcXHUwMDI2cGVlci1cXHUwMDNlY29ucywgY29ubiwgMCk7XFxuIFxcdGxvY2FsLVxcdTAwM2Vwcm9kX2ZsYWdzID0gcGVlci1cXHUwMDNlcHJvZF9mbGFncztcXG4gXFx0bG9jYWwtXFx1MDAzZWNvbm5fc3RhdGVfZmxhZ3MgPSBwZWVyLVxcdTAwM2Vjb25uX3N0YXRlX2ZsYWdzO1xcbiB9XFxuQEAgLTI2MCw2ICsyNzUsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIHNtY2RfY2RjX21zZ190b19ob3N0KHN0cnVjdCBzbWNfaG9zdF9jZGNfbXNnICpsb2NhbCxcXG4gXFxuIFxcdHRlbXAud3JhcCA9IHBlZXItXFx1MDAzZXByb2Qud3JhcDtcXG4gXFx0dGVtcC5jb3VudCA9IHBlZXItXFx1MDAzZXByb2QuY291bnQ7XFxuK1xcdC8qIHRoZSBwZWVyIHByb2R1Y2VyIGN1cnNvciBpcyB3aXJlLWNvbnRyb2xsZWQgYW5kIGlzIHVzZWQgYXMgYSByYXdcXG4rXFx0ICogaW5kZXggaW50byBvdXIgUk1CIGJ5IHRoZSB1cmdlbnQgcGF0aDsgYm91bmQgaXQgdG8gdGhlIFJNQi4gIFRoZVxcbitcXHQgKiBjb25zdW1lciBjdXJzb3IgYmVsb3cgaW5kZXhlcyB0aGUgcGVlcidzIFJNQiBhbmQgaXMgbGVmdCB1bmJvdW5kZWQuXFxuK1xcdCAqL1xcbitcXHRpZiAodGVtcC5jb3VudCBcXHUwMDNlIGNvbm4tXFx1MDAzZXJtYl9kZXNjLVxcdTAwM2VsZW4pXFxuK1xcdFxcdHRlbXAuY291bnQgPSBjb25uLVxcdTAwM2VybWJfZGVzYy1cXHUwMDNlbGVuO1xcbiBcXHRzbWNfY3Vyc19jb3B5KFxcdTAwMjZsb2NhbC1cXHUwMDNlcHJvZCwgXFx1MDAyNnRlbXAsIGNvbm4pO1xcbiBcXG4gXFx0dGVtcC53cmFwID0gcGVlci1cXHUwMDNlY29ucy53cmFwO1xcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19yeC5jIGIvbmV0L3NtYy9zbWNfcnguY1xcbmluZGV4IGMxZDliOTIzOTM4ZGFkLi5mNDYxY2YxMGIwODU1YiAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL3NtY19yeC5jXFxuKysrIGIvbmV0L3NtYy9zbWNfcnguY1xcbkBAIC00NDIsNiArNDQyLDE4IEBAIGludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbiBcXHRcXHQvKiBpbml0aWFsaXplIHZhcmlhYmxlcyBmb3IgMXN0IGl0ZXJhdGlvbiBvZiBzdWJzZXF1ZW50IGxvb3AgKi9cXG4gXFx0XFx0LyogY291bGQgYmUganVzdCAxIGJ5dGUsIGV2ZW4gYWZ0ZXIgd2FpdGluZyBvbiBkYXRhIGFib3ZlICovXFxuIFxcdFxcdHJlYWRhYmxlID0gc21jX3J4X2RhdGFfYXZhaWxhYmxlKGNvbm4sIHBlZWtlZF9ieXRlcyk7XFxuK1xcdFxcdC8qIGJ5dGVzX3RvX3JjdiBpcyBhY2N1bXVsYXRlZCBmcm9tIHRoZSBwZWVyJ3Mgd2lyZS1jb250cm9sbGVkXFxuK1xcdFxcdCAqIHByb2R1Y2VyIGN1cnNvcjsgYSBmb3JnZWQgY3Vyc29yIGNhbiBkcml2ZSBpdCBwYXN0IHRoZSBSTUIsXFxuK1xcdFxcdCAqIG9yIG92ZXJmbG93IHRoZSBzaWduZWQgYWNjdW11bGF0b3IgdG8gYSBuZWdhdGl2ZSB2YWx1ZSBhY3Jvc3NcXG4rXFx0XFx0ICogbWFueSBDREMgbWVzc2FnZXMgKHdoaWNoIGEgcGxhaW4gXFxcIlxcdTAwM2UgbGVuXFxcIiBjaGVjayB3b3VsZCBtaXNzXFxuK1xcdFxcdCAqIGJlZm9yZSB0aGUgc2l6ZV90IGNhc3QgYmVsb3cgdHVybnMgaXQgaHVnZSkuICBCb3VuZCBpdCB0byB0aGVcXG4rXFx0XFx0ICogUk1CIGluIGVpdGhlciBjYXNlIHNvIHRoZSB3cmFwLWFyb3VuZCBjb3B5IGNhbm5vdCBydW4gcGFzdFxcbitcXHRcXHQgKiBybWJfZGVzYy1cXHUwMDNlbGVuLiAgVGhpcyBlbmZvcmNlcyB0aGUgZG9jdW1lbnRlZFxcbitcXHRcXHQgKiAwIFxcdTAwM2M9IGJ5dGVzX3RvX3JjdiBcXHUwMDNjPSBybWJfZGVzYy1cXHUwMDNlbGVuIGludmFyaWFudCBhdCB0aGUgY29uc3VtZXIsXFxuK1xcdFxcdCAqIHJhY2UtZnJlZSBhZ2FpbnN0IHRoZSBwcm9kdWNlciB1cGRhdGUgaW4gdGhlIHJlY2VpdmUgdGFza2xldC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChyZWFkYWJsZSBcXHUwMDNjIDAgfHwgcmVhZGFibGUgXFx1MDAzZSBjb25uLVxcdTAwM2VybWJfZGVzYy1cXHUwMDNlbGVuKVxcbitcXHRcXHRcXHRyZWFkYWJsZSA9IGNvbm4tXFx1MDAzZXJtYl9kZXNjLVxcdTAwM2VsZW47XFxuIFxcdFxcdHNwbGJ5dGVzID0gYXRvbWljX3JlYWQoXFx1MDAyNmNvbm4tXFx1MDAzZXNwbGljZV9wZW5kaW5nKTtcXG4gXFx0XFx0aWYgKCFyZWFkYWJsZSB8fCAobXNnIFxcdTAwMjZcXHUwMDI2IHNwbGJ5dGVzKSkge1xcbiBcXHRcXHRcXHRpZiAoc3BsYnl0ZXMpXFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3R4LmMgYi9uZXQvc21jL3NtY190eC5jXFxuaW5kZXggMzE0NGI0YjFmZTI5MDEuLjU5MTZmMDIwNjBmYjkwIDEwMDY0NFxcbi0tLSBhL25ldC9zbWMvc21jX3R4LmNcXG4rKysgYi9uZXQvc21jL3NtY190eC5jXFxuQEAgLTIzMyw2ICsyMzMsMTkgQEAgaW50IHNtY190eF9zZW5kbXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXFxuIFxcdFxcdC8qIGluaXRpYWxpemUgdmFyaWFibGVzIGZvciAxc3QgaXRlcmF0aW9uIG9mIHN1YnNlcXVlbnQgbG9vcCAqL1xcbiBcXHRcXHQvKiBjb3VsZCBiZSBqdXN0IDEgYnl0ZSwgZXZlbiBhZnRlciBzbWNfdHhfd2FpdCBhYm92ZSAqL1xcbiBcXHRcXHR3cml0ZXNwYWNlID0gYXRvbWljX3JlYWQoXFx1MDAyNmNvbm4tXFx1MDAzZXNuZGJ1Zl9zcGFjZSk7XFxuK1xcdFxcdC8qIHNuZGJ1Zl9zcGFjZSBpcyBhZHZhbmNlZCBmcm9tIHRoZSBwZWVyJ3Mgd2lyZS1jb250cm9sbGVkXFxuK1xcdFxcdCAqIGNvbnN1bWVyIGN1cnNvciBvbiB0aGUgU01DLUQgRE1CLW1lcmdlIHBhdGg7IGEgZm9yZ2VkIGN1cnNvclxcbitcXHRcXHQgKiBjYW4gaW5mbGF0ZSBpdCBwYXN0IHRoZSBzZW5kIGJ1ZmZlciwgb3Igb3ZlcmZsb3cgdGhlIHNpZ25lZFxcbitcXHRcXHQgKiBhY2N1bXVsYXRvciB0byBhIG5lZ2F0aXZlIHZhbHVlIGFjcm9zcyBtYW55IENEQyBtZXNzYWdlc1xcbitcXHRcXHQgKiAod2hpY2ggYSBwbGFpbiBcXFwiXFx1MDAzZSBsZW5cXFwiIGNoZWNrIHdvdWxkIG1pc3MgYmVmb3JlIHRoZSBzaXplX3RcXG4rXFx0XFx0ICogY2FzdCBiZWxvdyB0dXJucyBpdCBodWdlKS4gIEJvdW5kIGl0IHRvIHRoZSBzZW5kIGJ1ZmZlciBpblxcbitcXHRcXHQgKiBlaXRoZXIgY2FzZSBzbyB0aGUgd3JhcC1hcm91bmQgd3JpdGUgY2Fubm90IHJ1biBwYXN0XFxuK1xcdFxcdCAqIHNuZGJ1Zl9kZXNjLVxcdTAwM2VsZW4uICBUaGlzIGVuZm9yY2VzIHRoZSBkb2N1bWVudGVkXFxuK1xcdFxcdCAqIDAgXFx1MDAzYz0gc25kYnVmX3NwYWNlIFxcdTAwM2M9IHNuZGJ1Zl9kZXNjLVxcdTAwM2VsZW4gaW52YXJpYW50IGF0IHRoZVxcbitcXHRcXHQgKiBwcm9kdWNlciwgcmFjZS1mcmVlIGFnYWluc3QgdGhlIENEQyB0YXNrbGV0LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKHdyaXRlc3BhY2UgXFx1MDAzYyAwIHx8IHdyaXRlc3BhY2UgXFx1MDAzZSBjb25uLVxcdTAwM2VzbmRidWZfZGVzYy1cXHUwMDNlbGVuKVxcbitcXHRcXHRcXHR3cml0ZXNwYWNlID0gY29ubi1cXHUwMDNlc25kYnVmX2Rlc2MtXFx1MDAzZWxlbjtcXG4gXFx0XFx0Lyogbm90IG1vcmUgdGhhbiB3aGF0IHVzZXIgc3BhY2UgYXNrZWQgZm9yICovXFxuIFxcdFxcdGNvcHlsZW4gPSBtaW5fdChzaXplX3QsIHNlbmRfcmVtYWluaW5nLCB3cml0ZXNwYWNlKTtcXG4gXFx0XFx0LyogZGV0ZXJtaW5lIHN0YXJ0IG9mIHNuZGJ1ZiAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDoyOS42NDc5NDY1NjJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5MDc3OTM0MTE1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfcnhfcmVjdm1zZ1wiLFxuICAgIFwic21jX3R4X3NlbmRtc2dcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBTTUMgQ0RDIG1lc3NhZ2UgcHJvY2Vzc2luZyBhbmQgc29ja2V0IHJlY2VpdmUvdHJhbnNtaXQgcGF0aHMgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGhhbmRsaW5nIGZvcmdlZCBvciBtYWxmb3JtZWQgQ0RDIG1lc3NhZ2VzIGZyb20gYSBwZWVyLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgU01DIHByb3RvY29sIHN1YnN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTc0NjZkODI2MWIxMzAwNzQyOGM0NjU2ODc2MjY4MjIzZWFiY2Y4YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDA1OjEwOjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY2RjLmggYi9uZXQvc21jL3NtY19jZGMuaFxuaW5kZXggNjk2Y2MxMWYyMzAzYjkuLmNhNzZlZjYzMDM1NjZjIDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfY2RjLmhcbisrKyBiL25ldC9zbWMvc21jX2NkYy5oXG5AQCAtMjIxLDcgKzIyMSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfaG9zdF9tc2dfdG9fY2RjKHN0cnVjdCBzbWNfY2RjX21zZyAqcGVlcixcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgc21jX2NkY19jdXJzb3JfdG9faG9zdCh1bmlvbiBzbWNfaG9zdF9jdXJzb3IgKmxvY2FsLFxuIFx0XHRcdFx0XHQgIHVuaW9uIHNtY19jZGNfY3Vyc29yICpwZWVyLFxuLVx0XHRcdFx0XHQgIHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbitcdFx0XHRcdFx0ICBzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXG4rXHRcdFx0XHRcdCAgaW50IG1heF9jb3VudClcbiB7XG4gXHR1bmlvbiBzbWNfaG9zdF9jdXJzb3IgdGVtcCwgb2xkO1xuIFx0dW5pb24gc21jX2NkY19jdXJzb3IgbmV0O1xuQEAgLTIzNSw2ICsyMzYsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfY3Vyc29yX3RvX2hvc3QodW5pb24gc21jX2hvc3RfY3Vyc29yICpsb2NhbCxcbiBcdGlmICgob2xkLndyYXAgPT0gdGVtcC53cmFwKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAob2xkLmNvdW50IFx1MDAzZSB0ZW1wLmNvdW50KSlcbiBcdFx0cmV0dXJuO1xuK1x0LyogVGhlIHBlZXIgcHJvZHVjZXIgY3Vyc29yIGlzIHdpcmUtY29udHJvbGxlZCBhbmQgaXMgbGF0ZXIgdXNlZCBhcyBhXG4rXHQgKiByYXcgaW5kZXggaW50byBvdXIgUk1CIGJ5IHRoZSB1cmdlbnQgcGF0aDsgYm91bmQgaXRzIGNvdW50IHRvIHRoZVxuK1x0ICogUk1CLiAgbWF4X2NvdW50ID09IDAgbGVhdmVzIHRoZSBjb25zdW1lciBjdXJzb3IgdW5ib3VuZGVkIGhlcmU6IGl0XG4rXHQgKiBpbmRleGVzIHRoZSBwZWVyJ3MgUk1CIChib3VuZGVkIGJ5IHBlZXJfcm1iZV9zaXplLCBub3Qgb3VyXG4rXHQgKiBybWJfZGVzYy1cdTAwM2VsZW4pLCBzbyBjbGFtcGluZyBpdCB0byBybWJfZGVzYy1cdTAwM2VsZW4gd291bGQgdW5kZXItY3JlZGl0XG4rXHQgKiBwZWVyX3JtYmVfc3BhY2UgYW5kIHN0YWxsIHRyYW5zbWl0IHRvIHBlZXJzIHdpdGggYSBsYXJnZXIgUk1CLlxuK1x0ICovXG4rXHRpZiAobWF4X2NvdW50IFx1MDAyNlx1MDAyNiB0ZW1wLmNvdW50IFx1MDAzZSBtYXhfY291bnQpXG4rXHRcdHRlbXAuY291bnQgPSBtYXhfY291bnQ7XG4gXHRzbWNfY3Vyc19jb3B5KGxvY2FsLCBcdTAwMjZ0ZW1wLCBjb25uKTtcbiB9XG4gXG5AQCAtMjQ2LDggKzI1NiwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc21jcl9jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLFxuIFx0bG9jYWwtXHUwMDNlbGVuID0gcGVlci1cdTAwM2VsZW47XG4gXHRsb2NhbC1cdTAwM2VzZXFubyA9IG50b2hzKHBlZXItXHUwMDNlc2Vxbm8pO1xuIFx0bG9jYWwtXHUwMDNldG9rZW4gPSBudG9obChwZWVyLVx1MDAzZXRva2VuKTtcbi1cdHNtY19jZGNfY3Vyc29yX3RvX2hvc3QoXHUwMDI2bG9jYWwtXHUwMDNlcHJvZCwgXHUwMDI2cGVlci1cdTAwM2Vwcm9kLCBjb25uKTtcbi1cdHNtY19jZGNfY3Vyc29yX3RvX2hvc3QoXHUwMDI2bG9jYWwtXHUwMDNlY29ucywgXHUwMDI2cGVlci1cdTAwM2Vjb25zLCBjb25uKTtcbitcdC8qIGJvdW5kIHRoZSB3aXJlLWNvbnRyb2xsZWQgcHJvZHVjZXIgY3Vyc29yIHRvIG91ciBSTUIgKHVzZWQgYXMgYSByYXdcbitcdCAqIGluZGV4IGJ5IHRoZSB1cmdlbnQgcGF0aCk7IGxlYXZlIHRoZSBjb25zdW1lciBjdXJzb3IgdW5ib3VuZGVkIC0tIGl0XG4rXHQgKiBpbmRleGVzIHRoZSBwZWVyJ3MgUk1CIGFuZCBpcyBib3VuZGVkIGJ5IHBlZXJfcm1iZV9zaXplLlxuK1x0ICovXG4rXHRzbWNfY2RjX2N1cnNvcl90b19ob3N0KFx1MDAyNmxvY2FsLVx1MDAzZXByb2QsIFx1MDAyNnBlZXItXHUwMDNlcHJvZCwgY29ubixcbitcdFx0XHQgICAgICAgY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW4pO1xuK1x0c21jX2NkY19jdXJzb3JfdG9faG9zdChcdTAwMjZsb2NhbC1cdTAwM2Vjb25zLCBcdTAwMjZwZWVyLVx1MDAzZWNvbnMsIGNvbm4sIDApO1xuIFx0bG9jYWwtXHUwMDNlcHJvZF9mbGFncyA9IHBlZXItXHUwMDNlcHJvZF9mbGFncztcbiBcdGxvY2FsLVx1MDAzZWNvbm5fc3RhdGVfZmxhZ3MgPSBwZWVyLVx1MDAzZWNvbm5fc3RhdGVfZmxhZ3M7XG4gfVxuQEAgLTI2MCw2ICsyNzUsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIHNtY2RfY2RjX21zZ190b19ob3N0KHN0cnVjdCBzbWNfaG9zdF9jZGNfbXNnICpsb2NhbCxcbiBcbiBcdHRlbXAud3JhcCA9IHBlZXItXHUwMDNlcHJvZC53cmFwO1xuIFx0dGVtcC5jb3VudCA9IHBlZXItXHUwMDNlcHJvZC5jb3VudDtcbitcdC8qIHRoZSBwZWVyIHByb2R1Y2VyIGN1cnNvciBpcyB3aXJlLWNvbnRyb2xsZWQgYW5kIGlzIHVzZWQgYXMgYSByYXdcbitcdCAqIGluZGV4IGludG8gb3VyIFJNQiBieSB0aGUgdXJnZW50IHBhdGg7IGJvdW5kIGl0IHRvIHRoZSBSTUIuICBUaGVcbitcdCAqIGNvbnN1bWVyIGN1cnNvciBiZWxvdyBpbmRleGVzIHRoZSBwZWVyJ3MgUk1CIGFuZCBpcyBsZWZ0IHVuYm91bmRlZC5cbitcdCAqL1xuK1x0aWYgKHRlbXAuY291bnQgXHUwMDNlIGNvbm4tXHUwMDNlcm1iX2Rlc2MtXHUwMDNlbGVuKVxuK1x0XHR0ZW1wLmNvdW50ID0gY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW47XG4gXHRzbWNfY3Vyc19jb3B5KFx1MDAyNmxvY2FsLVx1MDAzZXByb2QsIFx1MDAyNnRlbXAsIGNvbm4pO1xuIFxuIFx0dGVtcC53cmFwID0gcGVlci1cdTAwM2Vjb25zLndyYXA7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfcnguYyBiL25ldC9zbWMvc21jX3J4LmNcbmluZGV4IGMxZDliOTIzOTM4ZGFkLi5mNDYxY2YxMGIwODU1YiAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX3J4LmNcbisrKyBiL25ldC9zbWMvc21jX3J4LmNcbkBAIC00NDIsNiArNDQyLDE4IEBAIGludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0XHQvKiBpbml0aWFsaXplIHZhcmlhYmxlcyBmb3IgMXN0IGl0ZXJhdGlvbiBvZiBzdWJzZXF1ZW50IGxvb3AgKi9cbiBcdFx0LyogY291bGQgYmUganVzdCAxIGJ5dGUsIGV2ZW4gYWZ0ZXIgd2FpdGluZyBvbiBkYXRhIGFib3ZlICovXG4gXHRcdHJlYWRhYmxlID0gc21jX3J4X2RhdGFfYXZhaWxhYmxlKGNvbm4sIHBlZWtlZF9ieXRlcyk7XG4rXHRcdC8qIGJ5dGVzX3RvX3JjdiBpcyBhY2N1bXVsYXRlZCBmcm9tIHRoZSBwZWVyJ3Mgd2lyZS1jb250cm9sbGVkXG4rXHRcdCAqIHByb2R1Y2VyIGN1cnNvcjsgYSBmb3JnZWQgY3Vyc29yIGNhbiBkcml2ZSBpdCBwYXN0IHRoZSBSTUIsXG4rXHRcdCAqIG9yIG92ZXJmbG93IHRoZSBzaWduZWQgYWNjdW11bGF0b3IgdG8gYSBuZWdhdGl2ZSB2YWx1ZSBhY3Jvc3NcbitcdFx0ICogbWFueSBDREMgbWVzc2FnZXMgKHdoaWNoIGEgcGxhaW4gXCJcdTAwM2UgbGVuXCIgY2hlY2sgd291bGQgbWlzc1xuK1x0XHQgKiBiZWZvcmUgdGhlIHNpemVfdCBjYXN0IGJlbG93IHR1cm5zIGl0IGh1Z2UpLiAgQm91bmQgaXQgdG8gdGhlXG4rXHRcdCAqIFJNQiBpbiBlaXRoZXIgY2FzZSBzbyB0aGUgd3JhcC1hcm91bmQgY29weSBjYW5ub3QgcnVuIHBhc3RcbitcdFx0ICogcm1iX2Rlc2MtXHUwMDNlbGVuLiAgVGhpcyBlbmZvcmNlcyB0aGUgZG9jdW1lbnRlZFxuK1x0XHQgKiAwIFx1MDAzYz0gYnl0ZXNfdG9fcmN2IFx1MDAzYz0gcm1iX2Rlc2MtXHUwMDNlbGVuIGludmFyaWFudCBhdCB0aGUgY29uc3VtZXIsXG4rXHRcdCAqIHJhY2UtZnJlZSBhZ2FpbnN0IHRoZSBwcm9kdWNlciB1cGRhdGUgaW4gdGhlIHJlY2VpdmUgdGFza2xldC5cbitcdFx0ICovXG4rXHRcdGlmIChyZWFkYWJsZSBcdTAwM2MgMCB8fCByZWFkYWJsZSBcdTAwM2UgY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW4pXG4rXHRcdFx0cmVhZGFibGUgPSBjb25uLVx1MDAzZXJtYl9kZXNjLVx1MDAzZWxlbjtcbiBcdFx0c3BsYnl0ZXMgPSBhdG9taWNfcmVhZChcdTAwMjZjb25uLVx1MDAzZXNwbGljZV9wZW5kaW5nKTtcbiBcdFx0aWYgKCFyZWFkYWJsZSB8fCAobXNnIFx1MDAyNlx1MDAyNiBzcGxieXRlcykpIHtcbiBcdFx0XHRpZiAoc3BsYnl0ZXMpXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfdHguYyBiL25ldC9zbWMvc21jX3R4LmNcbmluZGV4IDMxNDRiNGIxZmUyOTAxLi41OTE2ZjAyMDYwZmI5MCAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX3R4LmNcbisrKyBiL25ldC9zbWMvc21jX3R4LmNcbkBAIC0yMzMsNiArMjMzLDE5IEBAIGludCBzbWNfdHhfc2VuZG1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuIFx0XHQvKiBpbml0aWFsaXplIHZhcmlhYmxlcyBmb3IgMXN0IGl0ZXJhdGlvbiBvZiBzdWJzZXF1ZW50IGxvb3AgKi9cbiBcdFx0LyogY291bGQgYmUganVzdCAxIGJ5dGUsIGV2ZW4gYWZ0ZXIgc21jX3R4X3dhaXQgYWJvdmUgKi9cbiBcdFx0d3JpdGVzcGFjZSA9IGF0b21pY19yZWFkKFx1MDAyNmNvbm4tXHUwMDNlc25kYnVmX3NwYWNlKTtcbitcdFx0Lyogc25kYnVmX3NwYWNlIGlzIGFkdmFuY2VkIGZyb20gdGhlIHBlZXIncyB3aXJlLWNvbnRyb2xsZWRcbitcdFx0ICogY29uc3VtZXIgY3Vyc29yIG9uIHRoZSBTTUMtRCBETUItbWVyZ2UgcGF0aDsgYSBmb3JnZWQgY3Vyc29yXG4rXHRcdCAqIGNhbiBpbmZsYXRlIGl0IHBhc3QgdGhlIHNlbmQgYnVmZmVyLCBvciBvdmVyZmxvdyB0aGUgc2lnbmVkXG4rXHRcdCAqIGFjY3VtdWxhdG9yIHRvIGEgbmVnYXRpdmUgdmFsdWUgYWNyb3NzIG1hbnkgQ0RDIG1lc3NhZ2VzXG4rXHRcdCAqICh3aGljaCBhIHBsYWluIFwiXHUwMDNlIGxlblwiIGNoZWNrIHdvdWxkIG1pc3MgYmVmb3JlIHRoZSBzaXplX3RcbitcdFx0ICogY2FzdCBiZWxvdyB0dXJucyBpdCBodWdlKS4gIEJvdW5kIGl0IHRvIHRoZSBzZW5kIGJ1ZmZlciBpblxuK1x0XHQgKiBlaXRoZXIgY2FzZSBzbyB0aGUgd3JhcC1hcm91bmQgd3JpdGUgY2Fubm90IHJ1biBwYXN0XG4rXHRcdCAqIHNuZGJ1Zl9kZXNjLVx1MDAzZWxlbi4gIFRoaXMgZW5mb3JjZXMgdGhlIGRvY3VtZW50ZWRcbitcdFx0ICogMCBcdTAwM2M9IHNuZGJ1Zl9zcGFjZSBcdTAwM2M9IHNuZGJ1Zl9kZXNjLVx1MDAzZWxlbiBpbnZhcmlhbnQgYXQgdGhlXG4rXHRcdCAqIHByb2R1Y2VyLCByYWNlLWZyZWUgYWdhaW5zdCB0aGUgQ0RDIHRhc2tsZXQuXG4rXHRcdCAqL1xuK1x0XHRpZiAod3JpdGVzcGFjZSBcdTAwM2MgMCB8fCB3cml0ZXNwYWNlIFx1MDAzZSBjb25uLVx1MDAzZXNuZGJ1Zl9kZXNjLVx1MDAzZWxlbilcbitcdFx0XHR3cml0ZXNwYWNlID0gY29ubi1cdTAwM2VzbmRidWZfZGVzYy1cdTAwM2VsZW47XG4gXHRcdC8qIG5vdCBtb3JlIHRoYW4gd2hhdCB1c2VyIHNwYWNlIGFza2VkIGZvciAqL1xuIFx0XHRjb3B5bGVuID0gbWluX3Qoc2l6ZV90LCBzZW5kX3JlbWFpbmluZywgd3JpdGVzcGFjZSk7XG4gXHRcdC8qIGRldGVybWluZSBzdGFydCBvZiBzbmRidWYgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjEwOjI5LjY0Nzk0ODY5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMzU4ODgzMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU01DIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCBoZXJlIHRoYXQncyB0b3VjaGluZyB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBjb2RlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIENEQyBtZXNzYWdlcy4gSSBzZWUgaXQncyBtb2RpZnlpbmcgYHNtY19jZGMuaGAsIGBzbWNfcnguY2AsIGFuZCBgc21jX3R4LmNgLiBUaGF0IHRlbGxzIG1lIHdlJ3JlIGxvb2tpbmcgYXQgY29yZSBmdW5jdGlvbmFsaXR5IOKAkyB0aGUgaGVhZGVyIGZpbGUsIHJlY2VpdmVyLCBhbmQgdHJhbnNtaXR0ZXIgc2lkZXMuIFRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhleSdyZSBhZGRpbmcgYm91bmRzIGNoZWNraW5nLCBzcGVjaWZpY2FsbHkgaW4gZnVuY3Rpb25zIGxpa2UgYHNtY19jZGNfY3Vyc29yX3RvX2hvc3RgLCBgc21jcl9jZGNfbXNnX3RvX2hvc3RgLCBgc21jZF9jZGNfbXNnX3RvX2hvc3RgLCBgc21jX3J4X3JlY3Ztc2dgLCBhbmQgYHNtY190eF9zZW5kbXNnYC5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZSwgYW5kIGl0J3MgYWltZWQgYXQgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5OiB0aGUgcG9zc2liaWxpdHkgb2Ygb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzIG9yIGludGVnZXIgb3ZlcmZsb3cuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGdvb2QuIE1hbGZvcm1lZCBvciBmb3JnZWQgQ0RDIG1lc3NhZ2VzIGNvdWxkIGJlIHVzZWQgdG8gZXhwbG9pdCB0aGUgc3lzdGVtLCBzbyBhZGRpbmcgY2hlY2tzIGlzIGVzc2VudGlhbCwgcGFydGljdWxhcmx5IGdpdmVuIHRoZSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucyBvZiBTTUMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoaXMgYm91bmRzIGNoZWNraW5nIGlzIGltcGxlbWVudGVkLCBidXQgdGhlIGdlbmVyYWwgcHJpbmNpcGxlIGlzIHNvdW5kLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQgbWUganVzdCBjaGVjayB0aGUgS2NvbmZpZyB0byBzZWUgaG93IFNNQyBpcyBjb25maWd1cmVkLiBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgYWZmZWN0cyBhbGwgYnVpbGRzIG9yIG9ubHkgY2VydGFpbiBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwNiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjEwOjMzLjk4Mzg0MDU2OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ0NzE1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNNQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0xMy1cXG5uZXQvc21jL0tjb25maWc6MTQ6Y29uZmlnIFNNQ19ESUFHXFxubmV0L3NtYy9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0yMi1cXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbm5ldC9zbWMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDozNC4xMDgzMTc4NzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDk1Mzg1OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01DIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBpcyBgU01DYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gcGlucG9pbnQgdGhlIGZvY3VzIHN5bWJvbHMg4oCTIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZWl0aGVyIGRpcmVjdGx5IG1vZGlmaWVkIG9yIGFyZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY2hhbmdlcy4gTG9va2luZyBhdCB0aGUgZGlmZiwgaXQgc2VlbXMgdGhlc2UgYXJlIHRoZSBtb2RpZmllZCBmdW5jdGlvbnM6IGBzbWNfY2RjX2N1cnNvcl90b19ob3N0YCwgYHNtY3JfY2RjX21zZ190b19ob3N0YCwgYHNtY2RfY2RjX21zZ190b19ob3N0YCwgYHNtY19yeF9yZWN2bXNnYCwgYW5kIGBzbWNfdHhfc2VuZG1zZ2AuXG5cblNpbmNlIHRoZSBmaXJzdCB0aHJlZSwgYHNtY19jZGNfY3Vyc29yX3RvX2hvc3RgLCBgc21jcl9jZGNfbXNnX3RvX2hvc3RgIGFuZCBgc21jZF9jZGNfbXNnX3RvX2hvc3RgLCBhcmUgZGVjbGFyZWQgYXMgYHN0YXRpYyBpbmxpbmVgLCB0aGV5IGFyZSBsaWtlbHkgaW5saW5lZCBhdCB0aGUgY2FsbCBzaXRlLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBmb2N1cyBvbiB3aGVyZSAqdGhleSogYXJlIGNhbGxlZCBvciB3aGV0aGVyIHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcyBoYXZlIGRpcmVjdCBtb2RpZmljYXRpb25zLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBpZGVudGlmeSB0aGUgY2FsbCBzaXRlcyBvZiBgc21jcl9jZGNfbXNnX3RvX2hvc3RgIGFuZCBgc21jZF9jZGNfbXNnX3RvX2hvc3RgIOKAkyB0aGVzZSBhcmUgbGlrZWx5IHRoZSBjcml0aWNhbCBwaWVjZXMgdG8gYW5hbHl6ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM3NSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDozOC4yMDM3MDY0NzZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0NDI5OTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY3JfY2RjX21zZ190b19ob3N0fHNtY2RfY2RjX21zZ190b19ob3N0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2NkYy5oPTIyMj1zdGF0aWMgaW5saW5lIHZvaWQgc21jX2NkY19jdXJzb3JfdG9faG9zdCh1bmlvbiBzbWNfaG9zdF9jdXJzb3IgKmxvY2FsLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmgtMjUwLVxcbm5ldC9zbWMvc21jX2NkYy5oOjI1MTpzdGF0aWMgaW5saW5lIHZvaWQgc21jcl9jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLFxcbm5ldC9zbWMvc21jX2NkYy5oLTI1Mi1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc21jX2NkY19tc2cgKnBlZXIsXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuaC0yNjktXFxubmV0L3NtYy9zbWNfY2RjLmg6MjcwOnN0YXRpYyBpbmxpbmUgdm9pZCBzbWNkX2NkY19tc2dfdG9faG9zdChzdHJ1Y3Qgc21jX2hvc3RfY2RjX21zZyAqbG9jYWwsXFxubmV0L3NtYy9zbWNfY2RjLmgtMjcxLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzbWNkX2NkY19tc2cgKnBlZXIsXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuaD0yOTM9c3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfbXNnX3RvX2hvc3Qoc3RydWN0IHNtY19ob3N0X2NkY19tc2cgKmxvY2FsLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmgtMjk3LVxcdGlmIChjb25uLVxcdTAwM2VsZ3ItXFx1MDAzZWlzX3NtY2QpXFxubmV0L3NtYy9zbWNfY2RjLmg6Mjk4OlxcdFxcdHNtY2RfY2RjX21zZ190b19ob3N0KGxvY2FsLCAoc3RydWN0IHNtY2RfY2RjX21zZyAqKXBlZXIsIGNvbm4pO1xcbm5ldC9zbWMvc21jX2NkYy5oLTI5OS1cXHRlbHNlXFxubmV0L3NtYy9zbWNfY2RjLmg6MzAwOlxcdFxcdHNtY3JfY2RjX21zZ190b19ob3N0KGxvY2FsLCBwZWVyLCBjb25uKTtcXG5uZXQvc21jL3NtY19jZGMuaC0zMDEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDozOC4zMDgxNDA5MTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjcxNjYzNDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipUcmFjaW5nIHRoZSBTTUNfQ0RDIE1lc3NhZ2UgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBzbWNfY2RjX21zZ190b19ob3N0YCBmdW5jdGlvbi4gVGhlIGNvZGUgY2FsbHMgaXQsIGFuZCBpdCdzIGFsc28gc3RhdGljIGlubGluZSwgd2hpY2ggaXMgYSBrZXkgZGV0YWlsLiBUaGF0IG1lYW5zIHRoZSBjb21waWxlciBsaWtlbHkgc3Vic3RpdHV0ZXMgdGhlIGZ1bmN0aW9uJ3MgY29kZSBkaXJlY3RseSB3aGVyZXZlciBpdCdzIHVzZWQuIFRoaXMgc3VnZ2VzdHMgaXQncyBhIGNyaXRpY2FsLCBwb3RlbnRpYWxseSBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgcGllY2Ugb2YgdGhlIGNvbW11bmljYXRpb24gbG9naWMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZCB0byBmaWd1cmUgb3V0IHRoZSBsYXJnZXIgY29udGV4dC4gVGltZSB0byB0cmFjayBkb3duIGFsbCB0aGUgY2FsbCBzaXRlcyBvZiBgc21jX2NkY19tc2dfdG9faG9zdGAuIExldCdzIHNlZSBob3cgdGhpcyBkYXRhIGZsb3dzIGFuZCB3aGF0IHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBsb29rcyBsaWtlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjQzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTA6NDEuNTc5ODA3Mzg2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDAwMzA3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfY2RjX21zZ190b19ob3N0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jPTMzMD1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTMzOC1cXHRzbWNfY3Vyc19jb3B5KFxcdTAwMjZjb25zX29sZCwgXFx1MDAyNmNvbm4tXFx1MDAzZWxvY2FsX3J4X2N0cmwuY29ucywgY29ubik7XFxubmV0L3NtYy9zbWNfY2RjLmM6MzM5OlxcdHNtY19jZGNfbXNnX3RvX2hvc3QoXFx1MDAyNmNvbm4tXFx1MDAzZWxvY2FsX3J4X2N0cmwsIGNkYywgY29ubik7XFxubmV0L3NtYy9zbWNfY2RjLmMtMzQwLVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmg9MjcwPXN0YXRpYyBpbmxpbmUgdm9pZCBzbWNkX2NkY19tc2dfdG9faG9zdChzdHJ1Y3Qgc21jX2hvc3RfY2RjX21zZyAqbG9jYWwsXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuaC0yOTItXFxubmV0L3NtYy9zbWNfY2RjLmg6MjkzOnN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfY2RjX21zZ190b19ob3N0KHN0cnVjdCBzbWNfaG9zdF9jZGNfbXNnICpsb2NhbCxcXG5uZXQvc21jL3NtY19jZGMuaC0yOTQtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzbWNfY2RjX21zZyAqcGVlcixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTA6NDEuNzIzODE1NzUzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5ODE1NjU2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBPcmlnaW4gb2YgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBmdW5jdGlvbiwgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYC4gVGhlIGNvZGViYXNlIHRlbGxzIG1lIGl0J3MgY2FsbGVkIGZyb20gYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCB3aXRoaW4gYG5ldC9zbWMvc21jX2NkYy5jYC4gVGhlIGZpcnN0IHRoaW5nIEkgYWx3YXlzIGRvIGluIHRoZXNlIHNpdHVhdGlvbnMgaXMgZXN0YWJsaXNoIHNjb3BlLiBJIGp1c3QgdmVyaWZpZWQgdGhhdCBpdCdzIGEgYHN0YXRpY2AgZnVuY3Rpb24sIHdoaWNoIHNpZ25pZmljYW50bHkgbmFycm93cyBkb3duIHdoZXJlIEkgbmVlZCB0byBsb29rIGZvciBjYWxscy4gTm93LCB0aGUgbmV4dCBzdGVwIGlzIHN0cmFpZ2h0Zm9yd2FyZDogSSBuZWVkIHRvIHBpbnBvaW50IGV2ZXJ5d2hlcmUgdGhpcyBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGlzIGFjdHVhbGx5ICpjYWxsZWQqIHdpdGhpbiB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1bml0LiBUaGlzIHNob3VsZCBiZSBhIHByZXR0eSBxdWljayB0YXNrIHdpdGggYSBnb29kIGNyb3NzLXJlZmVyZW5jaW5nIHRvb2wuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NjQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDo0NS4yMjE5NzQ0NTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTc2NzMxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfY2RjX21zZ19yZWN2X2FjdGlvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19jZGMuYz0zMDg9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfdmFsaWRhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMzI5LVxcbm5ldC9zbWMvc21jX2NkYy5jOjMzMDpzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG5uZXQvc21jL3NtY19jZGMuYy0zMzEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9NDI3PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3Yoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNDMwLVxcdGJoX2xvY2tfc29jayhcXHUwMDI2c21jLVxcdTAwM2Vzayk7XFxubmV0L3NtYy9zbWNfY2RjLmM6NDMxOlxcdHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHNtYywgY2RjKTtcXG5uZXQvc21jL3NtY19jZGMuYy00MzItXFx0YmhfdW5sb2NrX3NvY2soXFx1MDAyNnNtYy1cXHUwMDNlc2spO1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0yOS0vKiBjYWxsYmFjayBpbXBsZW1lbnRhdGlvbiB0byB3YWtldXAgY29uc3VtZXJzIGJsb2NrZWQgd2l0aCBzbWNfcnhfd2FpdCgpLlxcbm5ldC9zbWMvc21jX3J4LmM6MzA6ICogaW5kaXJlY3RseSBjYWxsZWQgYnkgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKS5cXG5uZXQvc21jL3NtY19yeC5jLTMxLSAqL1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYz0zNTI9aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTM5OC1cXHRcXHRpZiAoc2stXFx1MDAzZXNrX3NodXRkb3duIFxcdTAwMjYgUkNWX1NIVVRET1dOKSB7XFxubmV0L3NtYy9zbWNfcnguYzozOTk6XFx0XFx0XFx0Lyogc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKSBjb3VsZCBoYXZlIHJ1biBhZnRlclxcbm5ldC9zbWMvc21jX3J4LmMtNDAwLVxcdFxcdFxcdCAqIGFib3ZlIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTA6NDUuMzIzNzQ2NTM0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODA1NzYzODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlRyYWNpbmcgdGhlIE1lc3NhZ2UgUmVjZXB0aW9uIFBhdGgqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGBzbWNfY2RjX21zZ19yZWN2YC4gVGhhdCdzIHdoZXJlIHRoZSBtZXNzYWdlIGhhbmRsaW5nIHN0YXJ0cywgYnV0IHdoZXJlIGRvZXMgaXQgKmJlZ2luKj8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGxpbmcgY29udGV4dC4gTGV0J3MgdHJhY2UgYmFjayBmcm9tIGBzbWNfY2RjX21zZ19yZWN2YCBhbmQgc2VlIHdoZXJlIGl0J3MgYmVpbmcgaW52b2tlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVyIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIG1lc3NhZ2UgcHJvY2Vzc2luZyBmbG93IGFuZCBwb3RlbnRpYWwgaXNzdWVzLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0J3Mgc2VlLi4uIGEgcXVpY2sgY3Jvc3MtcmVmZXJlbmNlIHNob3VsZCBkbyB0aGUgdHJpY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NzEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDo0OC4zMDQzMjU1OThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MzM1NjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY19jZGNfbXNnX3JlY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9MzA4PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3ZhbGlkYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYyxcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTMyOS1cXG5uZXQvc21jL3NtY19jZGMuYzozMzA6c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsXFxubmV0L3NtYy9zbWNfY2RjLmMtMzMxLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTQyNi0vKiBjYWxsZWQgdW5kZXIgdGFza2xldCBjb250ZXh0ICovXFxubmV0L3NtYy9zbWNfY2RjLmM6NDI3OnN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3Yoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxcbm5ldC9zbWMvc21jX2NkYy5jLTQyOC17XFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy00MzAtXFx0YmhfbG9ja19zb2NrKFxcdTAwMjZzbWMtXFx1MDAzZXNrKTtcXG5uZXQvc21jL3NtY19jZGMuYzo0MzE6XFx0c21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc21jLCBjZGMpO1xcbm5ldC9zbWMvc21jX2NkYy5jLTQzMi1cXHRiaF91bmxvY2tfc29jayhcXHUwMDI2c21jLVxcdTAwM2Vzayk7XFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYz00NDI9c3RhdGljIHZvaWQgc21jZF9jZGNfcnhfdHNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTQ1NS1cXHRzbWMgPSBjb250YWluZXJfb2YoY29ubiwgc3RydWN0IHNtY19zb2NrLCBjb25uKTtcXG5uZXQvc21jL3NtY19jZGMuYzo0NTY6XFx0c21jX2NkY19tc2dfcmVjdihzbWMsIChzdHJ1Y3Qgc21jX2NkY19tc2cgKilcXHUwMDI2Y2RjKTtcXG5uZXQvc21jL3NtY19jZGMuYy00NTctfVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9NDY5PXN0YXRpYyB2b2lkIHNtY19jZGNfcnhfaGFuZGxlcihzdHJ1Y3QgaWJfd2MgKndjLCB2b2lkICpidWYpXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy01MDItXFxubmV0L3NtYy9zbWNfY2RjLmM6NTAzOlxcdHNtY19jZGNfbXNnX3JlY3Yoc21jLCBjZGMpO1xcbm5ldC9zbWMvc21jX2NkYy5jLTUwNC1vdXQ6XFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTI5LS8qIGNhbGxiYWNrIGltcGxlbWVudGF0aW9uIHRvIHdha2V1cCBjb25zdW1lcnMgYmxvY2tlZCB3aXRoIHNtY19yeF93YWl0KCkuXFxubmV0L3NtYy9zbWNfcnguYzozMDogKiBpbmRpcmVjdGx5IGNhbGxlZCBieSBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpLlxcbm5ldC9zbWMvc21jX3J4LmMtMzEtICovXFxuLS1cXG5uZXQvc21jL3NtY19yeC5jPTM1Mj1pbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcXG4tLVxcbm5ldC9zbWMvc21jX3J4LmMtMzk4LVxcdFxcdGlmIChzay1cXHUwMDNlc2tfc2h1dGRvd24gXFx1MDAyNiBSQ1ZfU0hVVERPV04pIHtcXG5uZXQvc21jL3NtY19yeC5jOjM5OTpcXHRcXHRcXHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXFxubmV0L3NtYy9zbWNfcnguYy00MDAtXFx0XFx0XFx0ICogYWJvdmUgc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDo0OC4zNzk2NzAxODFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2MTkyODQ1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBDREMgTWVzc2FnZSBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIENEQyBtZXNzYWdlIHJlY2VwdGlvbiBsb2dpYy4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYHNtY2RfY2RjX3J4X3Rza2xldGAgYW5kIGBzbWNfY2RjX3J4X2hhbmRsZXJgIGFyZSB0aGUgZW50cnkgcG9pbnRzLiBHb3QgaXQuIEFsc28sIEkgc2VlIGBzbWNfcnhfcmVjdm1zZ2AgYW5kIGBzbWNfdHhfc2VuZG1zZ2AgYXJlIGJlaW5nIGRpcmVjdGx5IG1vZGlmaWVkLCB3aGljaCBhcmUgaW1wb3J0YW50LlxuXG5UaGVyZWZvcmUsIHRoZSBrZXkgc3ltYm9scyB0aGF0IHdhcnJhbnQgbXkgaW1tZWRpYXRlIGF0dGVudGlvbiBhcmU6XG5cbiogICBgc21jX3J4X3JlY3Ztc2dgXG4qICAgYHNtY190eF9zZW5kbXNnYFxuKiAgIGBzbWNkX2NkY19yeF90c2tsZXRgXG4qICAgYHNtY19jZGNfcnhfaGFuZGxlcmBcblxuSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoLiBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlIGFib3V0IGhvdyBgc21jZF9jZGNfcnhfdHNrbGV0YCBhbmQgYHNtY19jZGNfcnhfaGFuZGxlcmAgYXJlIHV0aWxpemVkLiBTaW5jZSB0aGV5J3JlIHN0YXRpYywgYXJlIHRoZXkgYWN0dWFsbHkgZXhwb3J0ZWQgc29tZWhvdywgb3IgYXJlIHRoZXkgcGFzc2VkIGFzIGNhbGxiYWNrcyBpbnRlcm5hbGx5PyBUaGF0J3MgYSBjcnVjaWFsIGRpc3RpbmN0aW9uLiBJIG5lZWQgdG8gdHJhY2UgdGhlaXIgdXNhZ2UgdG8gZnVsbHkgZ3Jhc3AgdGhlaXIgcm9sZS4gT2theSwgdGltZSB0byBzZWUgd2hlcmUgdGhlc2UgYXJlIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1ODcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTA6NTIuMDQxNjAxNTM2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY0MTU1ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jZF9jZGNfcnhfdHNrbGV0fHNtY19jZGNfcnhfaGFuZGxlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19jZGMuYz00Mjc9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMpXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy00NDEtICovXFxubmV0L3NtYy9zbWNfY2RjLmM6NDQyOnN0YXRpYyB2b2lkIHNtY2RfY2RjX3J4X3Rza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxubmV0L3NtYy9zbWNfY2RjLmMtNDQzLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTQ2Mj12b2lkIHNtY2RfY2RjX3J4X2luaXQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxcbm5ldC9zbWMvc21jX2NkYy5jLTQ2My17XFxubmV0L3NtYy9zbWNfY2RjLmM6NDY0OlxcdHRhc2tsZXRfc2V0dXAoXFx1MDAyNmNvbm4tXFx1MDAzZXJ4X3Rza2xldCwgc21jZF9jZGNfcnhfdHNrbGV0KTtcXG5uZXQvc21jL3NtY19jZGMuYy00NjUtfVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNDY4LVxcbm5ldC9zbWMvc21jX2NkYy5jOjQ2OTpzdGF0aWMgdm9pZCBzbWNfY2RjX3J4X2hhbmRsZXIoc3RydWN0IGliX3djICp3Yywgdm9pZCAqYnVmKVxcbm5ldC9zbWMvc21jX2NkYy5jLTQ3MC17XFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy01MDctXFxubmV0L3NtYy9zbWNfY2RjLmM6NTA4OnN0YXRpYyBzdHJ1Y3Qgc21jX3dyX3J4X2hhbmRsZXIgc21jX2NkY19yeF9oYW5kbGVyc1tdID0ge1xcbm5ldC9zbWMvc21jX2NkYy5jLTUwOS1cXHR7XFxubmV0L3NtYy9zbWNfY2RjLmM6NTEwOlxcdFxcdC5oYW5kbGVyXFx0PSBzbWNfY2RjX3J4X2hhbmRsZXIsXFxubmV0L3NtYy9zbWNfY2RjLmMtNTExLVxcdFxcdC50eXBlXFx0XFx0PSBTTUNfQ0RDX01TR19UWVBFXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYz01MTg9aW50IF9faW5pdCBzbWNfY2RjX2luaXQodm9pZClcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTUyMi1cXG5uZXQvc21jL3NtY19jZGMuYzo1MjM6XFx0Zm9yIChoYW5kbGVyID0gc21jX2NkY19yeF9oYW5kbGVyczsgaGFuZGxlci1cXHUwMDNlaGFuZGxlcjsgaGFuZGxlcisrKSB7XFxubmV0L3NtYy9zbWNfY2RjLmMtNTI0LVxcdFxcdElOSVRfSExJU1RfTk9ERShcXHUwMDI2aGFuZGxlci1cXHUwMDNlbGlzdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjEwOjUyLjE0ODAyMzQ0N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjgxNDExNzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgVGhlc2UgQ2FsbGJhY2tzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGVzZSBjYWxsYmFja3MgYW5kIGltbWVkaWF0ZWx5IG5vdGljaW5nIHNvbWV0aGluZyDigJMgdGhleSdyZSBzdGF0aWNhbGx5IGRlZmluZWQsIHdoaWNoIGlzIGEgY29tbW9uIHBhdHRlcm4uIFRoaXMgbWFrZXMgdGhlbSBpbnRlcm5hbCBhbmQgbGltaXRzIHRoZWlyIHZpc2liaWxpdHksIHdoaWNoIEkgbmVlZCB0byB1bmRlcnN0YW5kIGluIHRoaXMgY29udGV4dC4gSSBzZWUgYHNtY2RfY2RjX3J4X2luaXRgIGlzIGNhbGxlZCwgYW5kIHRoYXTigJlzICpub3QqIHN0YXRpYywgd2hpY2ggZ2l2ZXMgbWUgcGF1c2UuIFRoYXQncyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi5cblxuQnV0IGhvbGQgb24sIHRoZSByZWFsIGVudHJ5IHBvaW50cyBmb3IgcmVjZWl2aW5nIGFuZCBzZW5kaW5nIGRhdGEgc2VlbSB0byBiZSBgc21jX3J4X3JlY3Ztc2dgIGFuZCBgc21jX3R4X3NlbmRtc2dgLiBOb3csIGFyZSAqdGhvc2UqIHN0YXRpYyB0b28/IFRoYXQncyB0aGUgY3JpdGljYWwgcXVlc3Rpb24uIElmIHRoZXkncmUgbm90IHN0YXRpYywgdGhhdCBjaGFuZ2VzIHRoZSB3aG9sZSBnYW1lLiBUaGV5IGNvdWxkIGJlIHBhcnQgb2YgdGhlIHNvY2tldCBvcGVyYXRpb25zLCBvciB0aGV5IG1heSBiZSBleHBvcnRlZC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgdGhvc2UgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBvciBhcmUgdGhleSBwYXJ0IG9mIHRoZSBkZWZpbmVkIHNvY2tldCBvcGVyYXRpb25zLiBMZXQncyBnZXQgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byBjb25maXJtIHdoZXJlIHRoZXkgYmVsb25nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjA1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTA6NTUuODI5NDM3NDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0Nzc0NDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY19yeF9yZWN2bXNnfHNtY190eF9zZW5kbXNnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvYWZfc21jLmM9Mjc5Nj1pbnQgc21jX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yODI1LVxcdH0gZWxzZSB7XFxubmV0L3NtYy9hZl9zbWMuYzoyODI2OlxcdFxcdHJjID0gc21jX3R4X3NlbmRtc2coc21jLCBtc2csIGxlbik7XFxubmV0L3NtYy9hZl9zbWMuYy0yODI3LVxcdFxcdFNNQ19TVEFUX1RYX1BBWUxPQUQoc21jLCBsZW4sIHJjKTtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MjgzND1pbnQgc21jX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yODYxLVxcdFxcdG1zZy1cXHUwMDNlbXNnX25hbWVsZW4gPSAwO1xcbm5ldC9zbWMvYWZfc21jLmM6Mjg2MjpcXHRcXHRyYyA9IHNtY19yeF9yZWN2bXNnKHNtYywgbXNnLCBOVUxMLCBsZW4sIGZsYWdzKTtcXG5uZXQvc21jL2FmX3NtYy5jLTI4NjMtXFx0XFx0U01DX1NUQVRfUlhfUEFZTE9BRChzbWMsIHJjLCByYyk7XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jPTMyODM9c3NpemVfdCBzbWNfc3BsaWNlX3JlYWQoc3RydWN0IHNvY2tldCAqc29jaywgbG9mZl90ICpwcG9zLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0zMzIwLVxcdFxcdFNNQ19TVEFUX0lOQyhzbWMsIHNwbGljZV9jbnQpO1xcbm5ldC9zbWMvYWZfc21jLmM6MzMyMTpcXHRcXHRyYyA9IHNtY19yeF9yZWN2bXNnKHNtYywgTlVMTCwgcGlwZSwgbGVuLCBmbGFncyk7XFxubmV0L3NtYy9hZl9zbWMuYy0zMzIyLVxcdH1cXG4tLVxcbm5ldC9zbWMvc21jX3J4LmM9Mjg5PXN0YXRpYyBpbnQgc21jX3J4X3JlY3ZfdXJnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4sXFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTMzMi1cXG5uZXQvc21jL3NtY19yeC5jOjMzMzpzdGF0aWMgYm9vbCBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc2l6ZV90IHBlZWtlZClcXG5uZXQvc21jL3NtY19yeC5jLTMzNC17XFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTM0NC1cXG5uZXQvc21jL3NtY19yeC5jOjM0NTovKiBzbWNfcnhfcmVjdm1zZyAtIHJlY2VpdmUgZGF0YSBmcm9tIFJNQkVcXG5uZXQvc21jL3NtY19yeC5jLTM0Ni0gKiBAbXNnOlxcdGNvcHkgZGF0YSB0byByZWNlaXZlIGJ1ZmZlclxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zNTEtICovXFxubmV0L3NtYy9zbWNfcnguYzozNTI6aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxubmV0L3NtYy9zbWNfcnguYy0zNTMtXFx0XFx0ICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKVxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zOTQtXFxubmV0L3NtYy9zbWNfcnguYzozOTU6XFx0XFx0aWYgKHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHNtYywgcGVla2VkX2J5dGVzKSlcXG5uZXQvc21jL3NtY19yeC5jLTM5Ni1cXHRcXHRcXHRnb3RvIGNvcHk7XFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTM5OS1cXHRcXHRcXHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXFxubmV0L3NtYy9zbWNfcnguYzo0MDA6XFx0XFx0XFx0ICogYWJvdmUgc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoKVxcbm5ldC9zbWMvc21jX3J4LmMtNDAxLVxcdFxcdFxcdCAqL1xcbm5ldC9zbWMvc21jX3J4LmM6NDAyOlxcdFxcdFxcdGlmIChzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzbWMsIHBlZWtlZF9ieXRlcykpXFxubmV0L3NtYy9zbWNfcnguYy00MDMtXFx0XFx0XFx0XFx0Z290byBjb3B5O1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYy01MjYtXFxubmV0L3NtYy9zbWNfcnguYzo1Mjc6XFx0XFx0dHJhY2Vfc21jX3J4X3JlY3Ztc2coc21jLCBjb3B5bGVuKTtcXG5uZXQvc21jL3NtY19yeC5jLTUyOC1cXHR9IHdoaWxlIChyZWFkX3JlbWFpbmluZyk7XFxuLS1cXG5uZXQvc21jL3NtY19yeC5oPTIwPXZvaWQgc21jX3J4X2luaXQoc3RydWN0IHNtY19zb2NrICpzbWMpO1xcbm5ldC9zbWMvc21jX3J4LmgtMjEtXFxubmV0L3NtYy9zbWNfcnguaDoyMjppbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcXG5uZXQvc21jL3NtY19yeC5oLTIzLVxcdFxcdCAgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsIHNpemVfdCBsZW4sIGludCBmbGFncyk7XFxuLS1cXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmM9Nj1FWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0woc21jX3N3aXRjaF90b19mYWxsYmFjayk7XFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5jOjc6RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKHNtY190eF9zZW5kbXNnKTtcXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmM6ODpFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0woc21jX3J4X3JlY3Ztc2cpO1xcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuYy05LUVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChzbWNyX2xpbmtfZG93bik7XFxuLS1cXG5uZXQvc21jL3NtY190cmFjZXBvaW50Lmg9NDQ9REVDTEFSRV9FVkVOVF9DTEFTUyhzbWNfbXNnX2V2ZW50LFxcbi0tXFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oLTcwLVxcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuaDo3MTpERUZJTkVfRVZFTlQoc21jX21zZ19ldmVudCwgc21jX3R4X3NlbmRtc2csXFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oLTcyLVxcbi0tXFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oLTc3LVxcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuaDo3ODpERUZJTkVfRVZFTlQoc21jX21zZ19ldmVudCwgc21jX3J4X3JlY3Ztc2csXFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oLTc5LVxcbi0tXFxubmV0L3NtYy9zbWNfdHguYz0xNTk9c3RhdGljIGJvb2wgc21jX3R4X3Nob3VsZF9jb3JrKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxuLS1cXG5uZXQvc21jL3NtY190eC5jLTE4MC0gKi9cXG5uZXQvc21jL3NtY190eC5jOjE4MTppbnQgc21jX3R4X3NlbmRtc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG5uZXQvc21jL3NtY190eC5jLTE4Mi17XFxuLS1cXG5uZXQvc21jL3NtY190eC5jLTI5OS1cXG5uZXQvc21jL3NtY190eC5jOjMwMDpcXHRcXHR0cmFjZV9zbWNfdHhfc2VuZG1zZyhzbWMsIGNvcHlsZW4pO1xcbm5ldC9zbWMvc21jX3R4LmMtMzAxLVxcdH0gLyogd2hpbGUgKG1zZ19kYXRhX2xlZnQobXNnKSkgKi9cXG4tLVxcbm5ldC9zbWMvc21jX3R4Lmg9MzI9dm9pZCBzbWNfdHhfaW5pdChzdHJ1Y3Qgc21jX3NvY2sgKnNtYyk7XFxubmV0L3NtYy9zbWNfdHguaDozMzppbnQgc21jX3R4X3NlbmRtc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbik7XFxubmV0L3NtYy9zbWNfdHguaC0zNC1pbnQgc21jX3R4X3NuZGJ1Zl9ub25lbXB0eShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMDo1NS45MjQyMTcxNTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkwNDQwMDUxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNNQyBDREMgUmVjZWl2ZXIgUGF0aCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIFNNQyBDREMgcmVjZWl2ZXIgcGF0aC4gVGhlIGNvcmUgc29ja2V0IG9wZXJhdGlvbnMgZm9yIGBBRl9TTUNgLCBgc21jX3JlY3Ztc2dgIGFuZCBgc21jX3NlbmRtc2dgLCBhcmUgdGhlIG9uZXMgSSBzaG91bGQgYmUgZm9jdXNpbmcgb24uIFRoZXkgY2FsbCBgc21jX3J4X3JlY3Ztc2dgIGFuZCBgc21jX3R4X3NlbmRtc2dgLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBhbmFseXNpcy5cblxuTm93LCBJJ20gdHJ5aW5nIHRvIHRyYWNlIHRoZSBtZXNzYWdlIGhhbmRsaW5nLiBIZXJlLCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGxvb2tzIGxpa2UgdGhlIGZ1bmN0aW9uIHRoYXQncyBjYWxsaW5nIGBzbWNfY2RjX21zZ190b19ob3N0YCwgd2hpY2ggaXMgY3J1Y2lhbCBiZWNhdXNlIGl0IHRoZW4gdXRpbGl6ZXMgdGhvc2UgbW9kaWZpZWQgaW5saW5lIGZ1bmN0aW9ucy4gVGhlIHByb2JsZW0gaXMsIGl0J3Mgc3RhdGljISBBbmQgc28gaXMgYHNtY19jZGNfbXNnX3JlY3ZgLCBhbmQgdGhlIHJlY2VpdmVyIHRhc2tsZXQgZnVuY3Rpb24sIGBzbWNkX2NkY19yeF90c2tsZXRgLCBhbmQgdGhlIGhhbmRsZXIsIGBzbWNfY2RjX3J4X2hhbmRsZXJgLiBUaGlzIGlzIGEgaHVyZGxlLCBhcmUgdGhlcmUgYW55IG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIGhlcmU/IEkgbmVlZCB0byBmaW5kIHRoZSBub24tc3RhdGljIHBvaW50IG9mIGVudHJ5IGluIHRoaXMgQ0RDIHBhdGggdGhhdCBoYW5kbGVzIHJlY2VwdGlvbi4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gY2hlY2sgYG5ldC9zbWMvc21jX2NkYy5jYCBhbmQgaHVudCBmb3IgdGhhdCBlbnRyeSBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3NjYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MDAuODI4NjIwNDQxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIzODEwNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnZvaWQgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jPTIwOT1pbnQgc21jX2NkY19nZXRfc2xvdF9hbmRfbXNnX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMjI3LVxcbm5ldC9zbWMvc21jX2NkYy5jOjIyODp2b2lkIHNtY19jZGNfd2FpdF9wZW5kX3R4X3dyKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG5uZXQvc21jL3NtY19jZGMuYy0yMjkte1xcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9NDQyPXN0YXRpYyB2b2lkIHNtY2RfY2RjX3J4X3Rza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy00NjEtICovXFxubmV0L3NtYy9zbWNfY2RjLmM6NDYyOnZvaWQgc21jZF9jZGNfcnhfaW5pdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY2RjLmMtNDYzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MDAuOTMxMDA2NzAyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MTA0ODk1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDREMgTWVzc2FnZSBIYW5kbGluZyBGbG93KipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCBvZmYsIGBzbWNfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZGAgaXMgKm5vdCogc3RhdGljLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIE5vdywgd2hhdCBhYm91dCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gPyBBaCwgdGhhdCBvbmUgKmlzKiBzdGF0aWMuIEhtbSwgSSBuZWVkIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IEkgY2FuIHplcm8gaW4gb24gZm9yIHRoZSBSWCBwYXRoIG9mIHRoZXNlIENEQyBtZXNzYWdlcywgYSBnb29kIGZvY3VzIHN5bWJvbC4gTWF5YmUsIGp1c3QgbWF5YmUsIGBzbWNfY2RjX3J4X2hhbmRsZXJgIGlzIHJlZ2lzdGVyZWQgYXMgdGhlIGFjdHVhbCBoYW5kbGVyIGZvciBpbmNvbWluZyBtZXNzYWdlcy4gVGhhdCdzIGEgc3Ryb25nIHBvc3NpYmlsaXR5LiBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSBgc21jX2NkY19yeF9oYW5kbGVyc2AgaXMgdXNlZC4gQWgsIGl0IGxvb2tzIGxpa2UgYHNtY19jZGNfaW5pdGAgaGFuZGxlcyB0aGUgcmVnaXN0cmF0aW9uLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSBleHBlY3RlZC4gTm93IEknbSB0aGlua2luZyB0aGUgYWN0dWFsIGVudHJ5IHBvaW50IGlzIGxpa2VseSBpbiBgc21jX3dyLmNgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB3aGVyZSB0aGUgaGFyZHdhcmUgaW50ZXJydXB0cyB3b3VsZCBiZSBoYW5kbGVkLiBMZXQncyBzdGFydCB3aXRoIGBzbWNfd3JfcnhfcHJvY2Vzc19jcWVzYCwgdGhhdCBzZWVtcyBsaWtlIHRoZSBuZXh0IGxvZ2ljYWwgcGxhY2UgdG8gbG9vay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1MjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MDcuODQxNTAxNzE3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDY2NDE4OTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY193cl9yeF9wcm9jZXNzX2NxZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfd3IuYz00MzA9c3RhdGljIGlubGluZSB2b2lkIHNtY193cl9yeF9kZW11bHRpcGxleChzdHJ1Y3QgaWJfd2MgKndjKVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy00NDgtXFxubmV0L3NtYy9zbWNfd3IuYzo0NDk6c3RhdGljIGlubGluZSB2b2lkIHNtY193cl9yeF9wcm9jZXNzX2NxZXMoc3RydWN0IGliX3djIHdjW10sIGludCBudW0pXFxubmV0L3NtYy9zbWNfd3IuYy00NTAte1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYz00Nzk9c3RhdGljIHZvaWQgc21jX3dyX3J4X3Rhc2tsZXRfZm4oc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy00OTctXFx0XFx0XFx0YnJlYWs7XFxubmV0L3NtYy9zbWNfd3IuYzo0OTg6XFx0XFx0c21jX3dyX3J4X3Byb2Nlc3NfY3FlcyhcXHUwMDI2d2NbMF0sIHJjKTtcXG5uZXQvc21jL3NtY193ci5jLTQ5OS1cXHR9IHdoaWxlIChyYyBcXHUwMDNlIDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMTowOS45MDc5MjUzN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDYwNjMxNzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ0RDIFJlY2VpdmUgUGF0aCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIENEQyByZWNlaXZlIHBhdGguIGBzbWNfd3JfcnhfdGFza2xldF9mbmAsIHRoYXQncyB0aGUgY29yZSB0YXNrbGV0IGZ1bmN0aW9uLCByaWdodD8gTGV0J3MgcXVpY2tseSB2ZXJpZnkgaWYgaXQncyBnb3Qgc3RhdGljIGxpbmthZ2UuLi4gWWVwLCBzdGF0aWMuIEdvb2QuIE5vdywgd2hhdCBhYm91dCBgc21jX3dyX3J4X2RlbXVsdGlwbGV4YD8gQWgsIHRoYXQncyBzdGF0aWMgaW5saW5lLiBJbnRlcmVzdGluZy4gU28sIHRoZSBwaWN0dXJlIEknbSBnZXR0aW5nIGlzIHRoYXQgdGhlIENEQyByZWNlaXZlIHBhdGggaXMgKmxhcmdlbHkqIGNvbXBvc2VkIG9mIHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMsIGNhbGxlZCBmcm9tIHdpdGhpbiBlaXRoZXIgdGFza2xldHMgb3IgaW50ZXJydXB0IGhhbmRsZXJzLiBUaGF0IHJlaW5mb3JjZXMgbXkgaW5pdGlhbCBodW5jaCBhYm91dCBob3cgdGhlIGhhcmR3YXJlIGludGVyYWN0cyB3aXRoIHRoZSBzb2Z0d2FyZS5cblxuTm93LCB3aGVyZSBhcmUgdGhlIGtleSBwb2ludHMgb2YgaW50ZXJhY3Rpb24sIHdoZXJlIHRoZSBkYXRhIGZsb3cgaXMgbGVzcyBlbmNhcHN1bGF0ZWQ/IGBzbWNfcnhfcmVjdm1zZ2AgYW5kIGBzbWNfdHhfc2VuZG1zZ2AsIHNpbmNlIHRoZXkncmUgKm5vbiotc3RhdGljIGFuZCBkaXJlY3RseSBleHBvc2VkLCB0aG9zZSBzZWVtIGxpa2UgcHJpbWUgY2FuZGlkYXRlcyBmb3IgZGVlcGVyIGluc3BlY3Rpb24uIFRoZXkncmUgbGlrZWx5IGVudHJ5IHBvaW50cyBvciBjcnVjaWFsIGRhdGEgbWFuaXB1bGF0aW9uIHBvaW50cy4gQXJlIHRoZXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIENEQyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBMZXQncyB0YWtlIGEgbG9vayBhdCBgc21jX2NkY19nZXRfZnJlZV9zbG90YCAtIHByb2JhYmx5IHBsYXlzIGEgcm9sZSBpbiBidWZmZXIgbWFuYWdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIyMTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MTMuOTY4NTYwNTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MTkzMTcxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfY2RjX2dldF9mcmVlX3Nsb3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9MjY9c3RhdGljIHZvaWQgc21jX2NkY190eF9oYW5kbGVyKHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICpwbmRfc25kLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNzItXFxubmV0L3NtYy9zbWNfY2RjLmM6NzM6aW50IHNtY19jZGNfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXFxubmV0L3NtYy9zbWNfY2RjLmMtNzQtXFx0XFx0XFx0ICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYz0xNzQ9c3RhdGljIGludCBzbWNyX2NkY19nZXRfc2xvdF9hbmRfbXNnX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMTg1LVxcdFxcdHJldHVybiAtRU5PTElOSztcXG5uZXQvc21jL3NtY19jZGMuYzoxODY6XFx0cmMgPSBzbWNfY2RjX2dldF9mcmVlX3Nsb3QoY29ubiwgbGluaywgXFx1MDAyNndyX2J1ZiwgTlVMTCwgXFx1MDAyNnBlbmQpO1xcbm5ldC9zbWMvc21jX2NkYy5jLTE4Ny1cXHRpZiAocmMpXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuaD0zMDM9c3RydWN0IHNtY19jZGNfdHhfcGVuZCB7XFxuLS1cXG5uZXQvc21jL3NtY19jZGMuaC0zMDktXFxubmV0L3NtYy9zbWNfY2RjLmg6MzEwOmludCBzbWNfY2RjX2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxcbm5ldC9zbWMvc21jX2NkYy5oLTMxMS1cXHRcXHRcXHQgIHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYz0xMDk1PXN0cnVjdCBzbWNfbGluayAqc21jX3N3aXRjaF9jb25ucyhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMTQ5LVxcdFxcdC8qIHByZS1mZXRjaCBidWZmZXIgb3V0c2lkZSBvZiBzZW5kX2xvY2ssIG1pZ2h0IHNsZWVwICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjExNTA6XFx0XFx0cmMgPSBzbWNfY2RjX2dldF9mcmVlX3Nsb3QoY29ubiwgdG9fbG5rLCBcXHUwMDI2d3JfYnVmLCBOVUxMLCBcXHUwMDI2cGVuZCk7XFxubmV0L3NtYy9zbWNfY29yZS5jLTExNTEtXFx0XFx0aWYgKHJjKVxcbi0tXFxubmV0L3NtYy9zbWNfdHguYz01NjM9c3RhdGljIGludCBzbWNyX3R4X3NuZGJ1Zl9ub25lbXB0eShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxuLS1cXG5uZXQvc21jL3NtY190eC5jLTU3My1cXHRcXHRyZXR1cm4gLUVOT0xJTks7XFxubmV0L3NtYy9zbWNfdHguYzo1NzQ6XFx0cmMgPSBzbWNfY2RjX2dldF9mcmVlX3Nsb3QoY29ubiwgbGluaywgXFx1MDAyNndyX2J1ZiwgXFx1MDAyNndyX3JkbWFfYnVmLCBcXHUwMDI2cGVuZCk7XFxubmV0L3NtYy9zbWNfdHguYy01NzUtXFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMToxNC41MjA1MDMwNDNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzNzc1NjA3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENEQyBNZXNzYWdlIEhhbmRsaW5nIGluIGBuZXQvc21jL3NtY19jZGMuY2AqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGZvY3VzZWQgb24gQ0RDIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIGN1cnNvciBib3VuZHMgY2hlY2tpbmcg4oCTIGdvdCBpdC4gVGhhdCBtZWFucyBgc21jX3J4X3JlY3Ztc2dgIGFuZCBgc21jX3R4X3NlbmRtc2dgIGFyZSB0aGUga2V5IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRvIHNjcnV0aW5pemUuIExldCBtZSBzZWUuLi5haCwgeWVzLCBgc21jX3R4X3NlbmRtc2dgIGlzIHVwZGF0ZWQgdG8gaW5jb3Jwb3JhdGUgYSBjaGVjayBvbiBgd3JpdGVzcGFjZWAuIFRoYXQncyBpbXBvcnRhbnQ7IGl0J3MgdXNpbmcgdGhlIHBlZXIncyB3aXJlLWNvbnRyb2xsZWQgY29uc3VtZXIgY3Vyc29yIHRvIGRldGVybWluZSBhdmFpbGFibGUgc3BhY2UuIEFuZCBgc21jX3J4X3JlY3Ztc2dgIGlzIHNpbWlsYXJseSB1cGRhdGVkIHRvIGNoZWNrIGByZWFkYWJsZWAsIHdoaWNoIGlzIGRlcml2ZWQgZnJvbSB0aGUgcGVlcidzIHdpcmUtY29udHJvbGxlZCBwcm9kdWNlciBjdXJzb3IuIFNvIGJvdGggb2YgdGhvc2UgZnVuY3Rpb25zIGhhdmUgYmVlbiBkaXJlY3RseSBtb2RpZmllZCB0byBlbmZvcmNlIHRoZXNlIGJvdW5kcy5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBgbmV0L3NtYy9zbWNfY2RjLmNgIHRoYXQgYXJlIGFsc28gaW52b2x2ZWQgaW4gaGFuZGxpbmcgQ0RDIG1lc3NhZ2VzLiBJdCdzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoIGFuZCB2ZXJpZnkgdGhhdCB3ZSd2ZSBjb3ZlcmVkIGFsbCB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzLiBJIG5lZWQgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgY2hhbmdlcyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzMyNCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMToxOC42NTgyNjIyMTdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTY4NDEzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWjAtOV9dKyBzbWNfY2RjX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL3NtY19jZGMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19jZGMuYz0yNj1zdGF0aWMgdm9pZCBzbWNfY2RjX3R4X2hhbmRsZXIoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKnBuZF9zbmQsXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy03Mi1cXG5uZXQvc21jL3NtY19jZGMuYzo3MzppbnQgc21jX2NkY19nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcXG5uZXQvc21jL3NtY19jZGMuYy03NC1cXHRcXHRcXHQgIHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTk0PXN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfY2RjX2FkZF9wZW5kaW5nX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMTExLVxcbm5ldC9zbWMvc21jX2NkYy5jOjExMjppbnQgc21jX2NkY19tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXFxubmV0L3NtYy9zbWNfY2RjLmMtMTEzLVxcdFxcdCAgICAgc3RydWN0IHNtY193cl9idWYgKndyX2J1ZixcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTE3ND1zdGF0aWMgaW50IHNtY3JfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy0yMDgtXFxubmV0L3NtYy9zbWNfY2RjLmM6MjA5OmludCBzbWNfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY2RjLmMtMjEwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTIyNy1cXG5uZXQvc21jL3NtY19jZGMuYzoyMjg6dm9pZCBzbWNfY2RjX3dhaXRfcGVuZF90eF93cihzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY2RjLmMtMjI5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MTguODE3OTUyNjMzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzY2ODM4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTTUMgQ0RDIE1lc3NhZ2UgRmxvdyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgdGhhdCBgc21jX2NkY19tc2dfc2VuZGAgYW5kIGBzbWNfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZGAgYXJlIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCB3aGljaCBpcyB1c2VmdWwgaW5mb3JtYXRpb24gdG8ga25vdyBpbW1lZGlhdGVseS4gSG93ZXZlciwgdGhlIHBhdGNoIGlzIG1ha2luZyBjaGFuZ2VzIHRvIGBzbWNfY2RjX2N1cnNvcl90b19ob3N0YCwgYHNtY3JfY2RjX21zZ190b19ob3N0YCwgYW5kIGBzbWNkX2NkY19tc2dfdG9faG9zdGAsIGFuZCB0aG9zZSBhcmUgYWxsIGNhbGxlZCBkdXJpbmcgdGhlIFJYIHBhdGgg4oCTIHRoYXQncyB3aGVuIHdlJ3JlIHJlY2VpdmluZyBDREMgbWVzc2FnZXMgZnJvbSB0aGUgb3RoZXIgc2lkZS4gTm93LCB0aG9zZSBSWCBwYXRoIGZ1bmN0aW9ucz8gTW9zdGx5IHN0YXRpYy4gVGhhdCBtYWtlcyB0aGluZ3MgYSBiaXQgbW9yZSBpbnRlcmVzdGluZywgcmlnaHQ/XG5cbkdpdmVuIHRoaXMsIGl0IGxvb2tzIGxpa2UgYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYCBhcmUgZ29pbmcgdG8gYmUgdGhlIHByaW1lIHN1c3BlY3RzLCB0aGUgc3ltYm9scyB0aGF0IGRlc2VydmUgdGhlIGNsb3Nlc3QgaW5zcGVjdGlvbi4gVGhleSdyZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIGhlcmUuXG5cbkJlZm9yZSBkaWdnaW5nIGRlZXBlciwgSSBzaG91bGQgbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgZWxzZS4gTGV0IG1lIGNoZWNrIGZvciBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zLiBPa2F5LCB3ZSd2ZSBnb3QgYFNNQ2AgaXRzZWxmLCB3aGljaCBpcyBhIGtleSBzdGFydGluZyBwb2ludC4gQXJlIHRoZXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHJlbGF0ZWQgdG8gdGhlIFNNQyBjb25maWd1cmF0aW9uPyBJJ2xsIG5lZWQgdG8gY2hhc2UgdGhhdCBkb3duLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDIyNiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMToyMi44NTQ2NDAyNjZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NzMzMjU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU01DJFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MjMuNDMxOTc3Nzc2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTk1ODg2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgU01DKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYFNNQ2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIG1hcCBvdXQgaXRzIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBjb21wb25lbnRzLCBtb2R1bGVzLCBvciBsaWJyYXJpZXMgYFNNQ2AgcmVsaWVzIG9uIHRvIGZ1bmN0aW9uLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjb25zaWRlciwgYXQgYSBoaWdoIGxldmVsLCB0aGUgdHlwZXMgb2YgZGVwZW5kZW5jaWVzIEkgZXhwZWN0IHRvIHNlZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgY29yZSBsaWJyYXJpZXMsIHBlcmhhcHMgc29tZSBkb21haW4tc3BlY2lmaWMgdXRpbGl0aWVzLCBtYXliZSBldmVuIGV4dGVybmFsIHNlcnZpY2VzIGl0IGludGVyZmFjZXMgd2l0aD9cblxuTGV0J3Mgc3RhcnQgZnJvbSB0aGUgdG9wLCBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBhcmUgZXNzZW50aWFsLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgKnJlcXVpcmVkKiBmb3IgYFNNQ2AgdG8gZXZlbiBib290LCBhbmQgd2hhdCBpcyAqbmljZS10by1oYXZlKi4gVW5kZXJzdGFuZGluZyB0aGUgY29yZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbC4gVGhlIG5vbi1lc3NlbnRpYWwsIG9yIHBvdGVudGlhbGx5IG9wdGlvbmFsIGRlcGVuZGVuY2llcyB3aWxsIGJlIGludGVyZXN0aW5nIC0ga25vd2luZyB0aG9zZSBtaWdodCB1bmxvY2sgbmV3IHBvc3NpYmlsaXRpZXMgZm9yIG9wdGltaXphdGlvbi5cblxuSSdtIHRoaW5raW5nIGFib3V0IHRoZSBsYXllcnMgaGVyZS4gSXMgdGhpcyBhIGRlZXAgZGVwZW5kZW5jeSBncmFwaCwgb3IgcmVsYXRpdmVseSBzaGFsbG93PyBUaGUgbW9yZSBsYXllcnMsIHRoZSBtb3JlIGNvbXBsZXggdGhlIHN5c3RlbSBiZWNvbWVzLlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gbG9vayBwYXN0IGp1c3QgdGhlIGRpcmVjdCBkZXBlbmRlbmNpZXMuIFdoYXQgYXJlIHRoZSBpbmRpcmVjdCBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgZGVwZW5kZW5jaWVzPyBIb3cgZG9lcyBgU01DYCBpbmZsdWVuY2UgKm90aGVyKiBjb21wb25lbnRzPyBXaGF0IHJpc2tzIG9yIHBvdGVudGlhbCBib3R0bGVuZWNrcyBkb2VzIGBTTUNgIGludHJvZHVjZT8gSSBuZWVkIHRoZSBmdWxsIHBpY3R1cmUgaGVyZSB0byBtYWtlIGFueSByZWFsIGFzc2Vzc21lbnQgb2YgaXRzIGRlc2lnbiBvciBwb3RlbnRpYWwgaW1wcm92ZW1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDc1NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjExOjI3LjA1MTU3MTQyNVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc21jL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTTUNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EIFxcdTAwMjZcXHUwMDI2IERJQlNcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgU01DLVIgcHJvdmlkZXMgYSBcXFwic29ja2V0cyBvdmVyIFJETUFcXFwiIHNvbHV0aW9uIG1ha2luZyB1c2Ugb2ZcXG4gICA3OlxcdFxcdCAgUkRNQSBvdmVyIENvbnZlcmdlZCBFdGhlcm5ldCAoUm9DRSkgdGVjaG5vbG9neSB0byB1cGdyYWRlXFxuICAgODpcXHRcXHQgIEFGX0lORVQgVENQIGNvbm5lY3Rpb25zIHRyYW5zcGFyZW50bHkuXFxuICAgOTpcXHRcXHQgIFRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU01DLVIgc29sdXRpb24gaXMgZGVzaWduZWQgYXNcXG4gIDEwOlxcdFxcdCAgYSBzZXBhcmF0ZSBzb2NrZXQgZmFtaWx5IFNNQy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBTTUNfRElBR1xcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBTTUNcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcXG4gIDE5OlxcdFxcdCAgc21jc3MuXFxuICAyMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MjcuMDUxNjcwOTY1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDIzMTc1MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBUcmFpbiBvZiBUaG91Z2h0KipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZXNlIGRlcGVuZGVuY2llcy4gSW5pdGlhbGx5LCBJIHRob3VnaHQgaXQgd2FzIGRlcGVuZGVudCBvbiBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kIGBESUJTYCwgYnV0IHNvbWV0aGluZyBmZWx0IG9mZi4gTGV0IG1lIHJlLWV2YWx1YXRlLi4uIFJpZ2h0LCBob2xkIG9uLCBpdCdzIGp1c3QgYElORVRgIGFuZCBgSU5GSU5JQkFORGAuIEdvb2QsIGdvdCBpdC4gQmV0dGVyIGRvdWJsZSBjaGVjaywgdGhvdWdoLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBJJ20gZ29pbmcgdG8gdGFrZSBhbm90aGVyIGxvb2sgYXQgdGhhdCBgbmV0L3NtYy9LY29uZmlnYCBmaWxlLiBOZWVkIHRvIGVuc3VyZSBJIGhhdmVuJ3QgbWlzcmVhZCB0aGUgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM1OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MzAuMTkzOTkxNjQ1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4MjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNNQ1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgRElCU1xcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBTTUMtUiBwcm92aWRlcyBhIFxcXCJzb2NrZXRzIG92ZXIgUkRNQVxcXCIgc29sdXRpb24gbWFraW5nIHVzZSBvZlxcbiAgIDc6XFx0XFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcXG4gICA4OlxcdFxcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cXG4gICA5OlxcdFxcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xcbiAgMTA6XFx0XFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMTozMC4xOTQwOTIyNDVaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4Nzg3NDkzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIENvbmZ1c2lvbiBhbmQgQ2xhcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYW5kIEkgc2VlIGBESUJTYC4gV2FpdCBhIG1pbnV0ZSwgaXMgdGhhdCByaWdodD8gRGlkIEkgbWlzcmVhZCBzb21ldGhpbmc/IE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gaW1tZWRpYXRlbHkgY2hlY2ssIHRvIHNlZSBpZiBpdCdzIGEgdHlwbyBvciBzb21ldGhpbmcuIE9rYXksIGxldCBtZSBxdWlja2x5IGdvIGJhY2sgYW5kIHZlcmlmeS4gQWgsIHllcywgdGhlcmUgaXQgaXM6IGBkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IERJQlNgLiBSaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgRElCU2AgaXMgaW4gdGhpcyBjb250ZXh0LiBMZXQgbWUgbWFrZSBzdXJlIEknbSBzZWVpbmcgdGhpcyBjb3JyZWN0bHkuIE9rLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgYWN0dWFsIGZpbGUgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBSaWdodCwgc28gaXQncyBgZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYCBhbHJpZ2h0LCBsZXQgbWUgY2hlY2sgdGhlIGZpbGUgcHJvcGVybHkgYWdhaW4uIExldCBtZSBqdXN0IGdyZXAgZm9yIGBESUJTYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3NjAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMTozNC4wODE5NzE5MjFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTg2NjMxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJESUJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL0tjb25maWc9Mj1jb25maWcgU01DXFxubmV0L3NtYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbm5ldC9zbWMvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EIFxcdTAwMjZcXHUwMDI2IERJQlNcXG5uZXQvc21jL0tjb25maWctNS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjExOjM0LjIwMzg0NTJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkwNTE5NjI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbml0aWFsIEltcHJlc3Npb24gYW5kIFRlcm1pbm9sb2d5IFZlcmlmaWNhdGlvbioqXG5cblwiV2FpdCwgZGlkIEkganVzdCBzZWUgYERJQlNgPyBSZWFsbHk/IEh1aC4gSW50ZXJlc3RpbmcuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcywgdGhhdCdzIG5vdCBzb21ldGhpbmcgSSBzZWUgZXZlcnkgZGF5LCBlc3BlY2lhbGx5IGluIHRoaXMgY29udGV4dC4gQWxyaWdodCwgaG9sZCBvbi4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHdoYXQgd2UncmUgZGVhbGluZyB3aXRoLiBJdCdzIGNydWNpYWwgdG8gZW5zdXJlIHRoZXJlJ3Mgbm8gbWlzaW50ZXJwcmV0YXRpb24sIGVzcGVjaWFsbHkgd2l0aCBhY3JvbnltcyB0aGF0IGNhbiBoYXZlIG11bHRpcGxlIG1lYW5pbmdzIGRlcGVuZGluZyBvbiB0aGUgZG9tYWluLiBJIG5lZWQgdG8gZXN0YWJsaXNoIGEgYmFzZSBkZWZpbml0aW9uIGZvciBgRElCU2AgYmVmb3JlIEkgY2FuIHByb3Blcmx5IGFzc2VzcyBpdC5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjE0NCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjExOjM3LjEwOTA0NDE1WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODA0MzcyNzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBESUJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXFxuZHJpdmVycy9kaWJzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE1LVxcdGJvb2wgXFxcIkludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6MzkuOTEzNDI2MTg5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NTAyOTEzNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6XG5cbioqQ2hlY2tpbmcgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nKipcblxuQWxyaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBgRElCU2AsIHRoYXQncyBEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcuIEdvdCBpdC4gTm93LCBnaXZlbiB0aGUgY29udGV4dCwgSSdtIGdvaW5nIHRvIGFzc3VtZSB0aGlzIGlzIHJlbGF0ZWQgdG8gaGlnaC1wZXJmb3JtYW5jZSBuZXR3b3JraW5nIG9yIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiB3aXRoaW4gYSBzZXJ2ZXIgb3IgY2x1c3Rlci4gU28sIHRoZSBtYWluIGludGVyZmFjZXMgdGhhdCBjb21lIHRvIG1pbmQgYXJlIGBJTkVUYCAodHlwaWNhbCBUQ1AvSVApLCBgSU5GSU5JQkFORGAgKGhpZ2gtc3BlZWQgaW50ZXJjb25uZWN0KSwgYERJQlNgLCBhbmQgYFNNQ2AgKFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMpLiBJdCdzIGEgcXVpY2sgbWVudGFsIGNoZWNrbGlzdCBvZiB0aGUga2V5IGNvbnRlbmRlcnMgZm9yIHRoaXMga2luZCBvZiB3b3JrLlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIHdlJ3JlIGNvdmVyaW5nIGFsbCBvdXIgYmFzZXMuIGBJTkZJTklCQU5EYCBpcyBvZnRlbiBpbnRlZ3JhdGVkIHdpdGggYSBsb3Qgb2YgbGlicmFyaWVzLiBTbyBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGVuc3VyZSBpdCdzIGRlcGVuZGVuY2llcyBhcmUgaW4gY2hlY2suIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYElORklOSUJBTkRgLCBhcyBpdCBmcmVxdWVudGx5IHJlbGllcyBvbiBvdGhlciB1bmRlcmx5aW5nIGRyaXZlcnMgb3IgcHJvdG9jb2xzLiBJJ2xsIHNlZSBpZiBJIG5lZWQgdG8gYWRqdXN0IG9yIGFkZCBhbnl0aGluZyBiYXNlZCBvbiB3aGF0IGl0IGRlcGVuZHMgb24uIFRoaXMgaXMgdG8gZW5zdXJlIHdlIGhhdmUgYSBnb29kIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQ1NiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjExOjQzLjU2MzcyMTYxNVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAzMDY3Nzc3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU5GSU5JQkFORCRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MjptZW51Y29uZmlnIElORklOSUJBTkRcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbmZpbmlCYW5kIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjExOjQ2LjU5NDQwNDkxNFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTEyMTk3MDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqRXhhbWluaW5nIEluZmluaWJhbmQgRGVwZW5kZW5jaWVzIGluIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aGUgSW5maW5pYmFuZCBzdWJzeXN0ZW0gd2l0aGluIHRoZSBrZXJuZWwuIE15IGZpcnN0IGluc3RpbmN0LCBhbmQgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2gsIGlzIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhhdCBtZWFucyBJIHNob3VsZCBuYXZpZ2F0ZSB0byB0aGUgYGRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnYCBmaWxlLiBJIGtub3cgdGhhdCdzIHdoZXJlIHRoZSByZWxldmFudCBgQ09ORklHX0lORklOSUJBTkRgIHNldHRpbmcsIGFuZCBpdHMgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZmVhdHVyZXMgb3IgaGFyZHdhcmUsIGlzIGRlZmluZWQuIEJ5IGV4YW1pbmluZyB0aGlzIGZpbGUsIEknbGwgYmUgYWJsZSB0byBxdWlja2x5IGRldGVybWluZSBhbGwgdGhlIHVuZGVybHlpbmcgcmVxdWlyZW1lbnRzIGFuZCBjb25zdHJhaW50cyBmb3IgZW5hYmxpbmcgSW5maW5pYmFuZCBzdXBwb3J0IGluIHRoaXMga2VybmVsIGJ1aWxkLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSBuZWVkIHRvIGRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjg1OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjExOjQ5LjUwNjYwNDI4NFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0bWVudWNvbmZpZyBJTkZJTklCQU5EXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiSW5maW5pQmFuZCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiAhQUxQSEFcXG4gICA4OlxcdFxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbiAgIDk6XFx0XFx0c2VsZWN0IElSUV9QT0xMXFxuICAxMDpcXHRcXHRzZWxlY3QgRElNTElCXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjExOjQ5LjUwNjY2NjkzNFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzA3NjM4MzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEtlcm5lbCBDb25maWd1cmF0aW9uIENoZWNrbGlzdCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBzZXR0aW5nIHVwIGBJTkZJTklCQU5EYCBpcyBnb2luZyB0byBsZWFuIG9uIGEgZmV3IGtleSBidWlsZGluZyBibG9ja3M6IGBIQVNfSU9NRU1gLCBgSEFTX0RNQWAsIGBORVRgLCBhbmQgYElORVRgLCBidXQgbm90IGlmIHdlIGFyZSBvbiBhbiBgQUxQSEFgIHN5c3RlbSwgd2hpY2ggSSB3b3VsZG4ndCBleHBlY3QgYW55d2F5LiBJJ2xsIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kLiBTbywgaWYgSSB3YW50IGBJTkZJTklCQU5EYCB3b3JraW5nIGFzIGV4cGVjdGVkLCBJJ2xsIG5lZWQgdG8gZW5zdXJlIHRob3NlIGFyZSBhbHNvIGNvbmZpZ3VyZWQgcHJvcGVybHkuIFxuXG5TcGVjaWZpY2FsbHksIGBJTkVUYCwgYElORklOSUJBTkRgLCBgRElCU2AsIGFuZCBgU01DYCBzZWVtIHRvIGJlIHRoZSBwcmltYXJ5IGNvbmZpZ3MgaW52b2x2ZWQgaGVyZS4gTm93LCBJIHNob3VsZCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZXF1aXJlbWVudHMgb2YgYERJQlNgIHNpbmNlIGl0J3Mgb25lIG9mIHRoZSBvcHRpb25zLiBMZXQncyBzZWUgd2hhdCB0aGF0IGRlcGVuZHMgb24uLi4gSXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBkZXBlbmRlbmN5IHRyZWUsIGFuZCBJJ2xsIG5lZWQgdG8gZGVsdmUgaW50byBgRElCU2AgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gb3JkZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MjA3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNToxMTo1Mi44MTQzMDczOFoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdGNvbmZpZyBESUJTXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZWZhdWx0IG5cXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcXG4gICA3OlxcdFxcdCAgdXNlcyBjb21tb24gcGh5c2ljYWwgKGludGVybmFsKSBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIGRpcmVjdCBhY2Nlc3NcXG4gICA4OlxcdFxcdCAgaW50byBhIHJlbW90ZSBidWZmZXIuXFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIHByb3ZpZGUgdGhlIGFic3RyYWN0aW9uIGxheWVyIGJldHdlZW5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDU6MTE6NTIuODE0MzY1OTZaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ3MDM0MjE5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBUaGlzIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZvciBhIHRhcmdldGVkIGZ1enppbmcgYXBwcm9hY2guIEl0IGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGNydWNpYWwgYm91bmRzIGNoZWNraW5nIHdpdGhpbiB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBwcm90b2NvbCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBDREMgKENvbm5lY3Rpb24gRGF0YSBDaGFubmVsKSBtZXNzYWdlIHByb2Nlc3NpbmcuIFRoZSBnb2FsIGlzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBoYW5kbGluZyBwb3RlbnRpYWxseSBtYWxpY2lvdXMgb3IgY29ycnVwdGVkIENEQyBtZXNzYWdlcy4gVGhlIGtleSB0YWtlYXdheSBpcyB0aGF0IHRoaXMgdG91Y2hlcyBjb3JlIGtlcm5lbCBsb2dpYyBkaXJlY3RseSBleHBvc2VkIHZpYSB0aGUgU01DIHByb3RvY29sLlxuXG5GaXJzdCwgdGhlIGRlcGVuZGVuY2llcyBhcmUgc3RyYWlnaHRmb3J3YXJkOyB3ZSBvbmx5IG5lZWQgdG8gZW5hYmxlIGBTTUNgLCBgSU5GSU5JQkFORGAsIGFuZCBgRElCU2AgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGUgYW5hbHlzaXMgaW5kaWNhdGVzIHRoaXMgaXMgYSBwcm9taXNpbmcgYXJlYSBmb3IgZnV6emluZyAoV29ydGhGdXp6aW5nOiB0cnVlKS4gVGhlIGlkZW50aWZpZWQgZm9jdXMgc3ltYm9scyBhcmUgYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYC5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCB0aGVzZSBhcmUgdGhlIG9ubHkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgZGlyZWN0bHkgbW9kaWZpZWQuIFRoZSBvdGhlciBjaGFuZ2VzIGFyZSBpbmxpbmVkIG9yIHN0YXRpYyBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIENEQyBtZXNzYWdlIGNvbnZlcnNpb246IGBzbWNfY2RjX2N1cnNvcl90b19ob3N0YCwgYHNtY3JfY2RjX21zZ190b19ob3N0YCwgYHNtY2RfY2RjX21zZ190b19ob3N0YCwgYHNtY19jZGNfbXNnX3RvX2hvc3RgLCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gLCBgc21jX2NkY19tc2dfcmVjdmAsIGBzbWNkX2NkY19yeF90c2tsZXRgLCBhbmQgYHNtY19jZGNfcnhfaGFuZGxlcmAuICBIb3dldmVyLCBiZWNhdXNlIG9mIHRoZSBjYWxsIGNoYWluOiAgYHNtY19yeF9yZWN2bXNnYCBhbmQgYHNtY190eF9zZW5kbXNnYCBhcmUgdGhlIGVudHJ5IHBvaW50cy4gVGhlcmVmb3JlLCBmb2N1c2luZyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlc2UgdHdvIGZ1bmN0aW9ucyBpcyBhIGNvcnJlY3QgYW5kIHN1ZmZpY2llbnQgc3RyYXRlZ3kuXG5cbkZpbmFsbHksIEkgdmVyaWZpZWQgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGVzZSBrZXkgZnVuY3Rpb25zOiB0aGV5IGFyZSBwYXJ0IG9mIHRoZSBzb2NrZXQgb3BlcmF0aW9ucyAoYHNtY19yZWN2bXNnYCBhbmQgYHNtY19zZW5kbXNnYCkgZm9yIHRoZSBgQUZfU01DYCBhZGRyZXNzIGZhbWlseS4gVGhpcyBtZWFucyBhbnkgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIGNhbiB0cmlnZ2VyIHRoZW0gYnkgY3JlYXRpbmcgYW4gYEFGX1NNQ2Agc29ja2V0IGFuZCBjYWxsaW5nIGByZWN2bXNnYCBvciBgc2VuZG1zZ2AuIFBlcmZlY3QhIFRoaXMgbWFrZXMgY3JhZnRpbmcgdGVzdCBjYXNlcyByZWxhdGl2ZWx5IGVhc3kuXG5cbk9rYXksIEknbSBjb25maWRlbnQgaW4gdGhpcyBzdHJhdGVneS4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NjQ1LCJPdXRwdXRUb2tlbnMiOjExNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA1OjEyOjAwLjI4NDcxMjcwN1oiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjU3MjQ1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jX3J4X3JlY3Ztc2dcIixcbiAgICBcInNtY190eF9zZW5kbXNnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gU01DIENEQyBtZXNzYWdlIHByb2Nlc3NpbmcgYW5kIHNvY2tldCByZWNlaXZlL3RyYW5zbWl0IHBhdGhzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBoYW5kbGluZyBmb3JnZWQgb3IgbWFsZm9ybWVkIENEQyBtZXNzYWdlcyBmcm9tIGEgcGVlci4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgaW4gdGhlIFNNQyBwcm90b2NvbCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jX3J4X3JlY3Ztc2dcIixcbiAgICBcInNtY190eF9zZW5kbXNnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gU01DIENEQyBtZXNzYWdlIHByb2Nlc3NpbmcgYW5kIHNvY2tldCByZWNlaXZlL3RyYW5zbWl0IHBhdGhzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBoYW5kbGluZyBmb3JnZWQgb3IgbWFsZm9ybWVkIENEQyBtZXNzYWdlcyBmcm9tIGEgcGVlci4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgaW4gdGhlIFNNQyBwcm90b2NvbCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbx2rt[1] Phase: Succeeded StartedAt: 2026-07-25 05:12:12 +0000 UTC FinishedAt: 2026-07-25 05:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 05:12:12 +0000 UTC FinishedAt: 2026-07-25 05:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2] Phase: Succeeded StartedAt: 2026-07-25 05:12:12 +0000 UTC FinishedAt: 2026-07-25 09:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-25 05:12:12 +0000 UTC FinishedAt: 2026-07-25 09:39:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 05:12:12 +0000 UTC FinishedAt: 2026-07-25 05:12:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 05:12:12 +0000 UTC FinishedAt: 2026-07-25 05:12:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbx2rt/series-workflowbx2rt-convert-artifact-249677367/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 05:12:32 +0000 UTC FinishedAt: 2026-07-25 05:46:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 05:12:32 +0000 UTC FinishedAt: 2026-07-25 05:46:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*7b9147e4-e001-453f-b814-135dfed35094,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-workflowbx2rt/series-workflowbx2rt-convert-artifact-249677367/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": "aae72929-ef42-495c-8618-8fdae785e6c4", "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-workflowbx2rt/series-workflowbx2rt-build-action-939992461/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 05:12:32 +0000 UTC FinishedAt: 2026-07-25 05:46:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*7b9147e4-e001-453f-b814-135dfed35094,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-workflowbx2rt/series-workflowbx2rt-convert-artifact-249677367/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": "aae72929-ef42-495c-8618-8fdae785e6c4", "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-workflowbx2rt/series-workflowbx2rt-build-action-939992461/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 05:46:50 +0000 UTC FinishedAt: 2026-07-25 05:46:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 05:46:50 +0000 UTC FinishedAt: 2026-07-25 05:46:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 05:46:50 +0000 UTC FinishedAt: 2026-07-25 05:47:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 05:46:50 +0000 UTC FinishedAt: 2026-07-25 05:46:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbx2rt/series-workflowbx2rt-convert-artifact-1724700774/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 05:47:01 +0000 UTC FinishedAt: 2026-07-25 05:48:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 05:47:01 +0000 UTC FinishedAt: 2026-07-25 05:48:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aae72929-ef42-495c-8618-8fdae785e6c4,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-workflowbx2rt/series-workflowbx2rt-build-action-939992461/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-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 05:48:55 +0000 UTC FinishedAt: 2026-07-25 05:48:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 05:48:55 +0000 UTC FinishedAt: 2026-07-25 05:48:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 05:48:55 +0000 UTC FinishedAt: 2026-07-25 06:35:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 05:48:55 +0000 UTC FinishedAt: 2026-07-25 06:35: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:*7b9147e4-e001-453f-b814-135dfed35094,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-workflowbx2rt/series-workflowbx2rt-convert-artifact-1724700774/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": "9b834a39-701e-4435-a990-d7a2ab3fb5fe", "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-workflowbx2rt/series-workflowbx2rt-build-action-1470467626/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 05:48:55 +0000 UTC FinishedAt: 2026-07-25 06:35:07 +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:*7b9147e4-e001-453f-b814-135dfed35094,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-workflowbx2rt/series-workflowbx2rt-convert-artifact-1724700774/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": "9b834a39-701e-4435-a990-d7a2ab3fb5fe", "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-workflowbx2rt/series-workflowbx2rt-build-action-1470467626/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-25 06:35:17 +0000 UTC FinishedAt: 2026-07-25 06:35:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-25 06:35:17 +0000 UTC FinishedAt: 2026-07-25 06:35:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-25 06:35:17 +0000 UTC FinishedAt: 2026-07-25 06:37:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-25 06:35:17 +0000 UTC FinishedAt: 2026-07-25 06:37:01 +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:*9b834a39-701e-4435-a990-d7a2ab3fb5fe,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-workflowbx2rt/series-workflowbx2rt-build-action-1470467626/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-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-25 06:37:11 +0000 UTC FinishedAt: 2026-07-25 09:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-25 06:37:11 +0000 UTC FinishedAt: 2026-07-25 09:39:39 +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":["smc_rx_recvmsg","smc_tx_sendmsg"],"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:*aae72929-ef42-495c-8618-8fdae785e6c4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9b834a39-701e-4435-a990-d7a2ab3fb5fe,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-workflowbx2rt/series-workflowbx2rt-build-action-939992461/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-workflowbx2rt/series-workflowbx2rt-build-action-1470467626/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-25 06:37:11 +0000 UTC FinishedAt: 2026-07-25 06:37:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-25 06:37:11 +0000 UTC FinishedAt: 2026-07-25 06:37:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"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-workflowbx2rt/series-workflowbx2rt-convert-artifact-3176275627/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-25 06:37:11 +0000 UTC FinishedAt: 2026-07-25 06:37:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-25 06:37:11 +0000 UTC FinishedAt: 2026-07-25 06:37:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-25 06:37:11 +0000 UTC FinishedAt: 2026-07-25 06:37:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-25 06:37:21 +0000 UTC FinishedAt: 2026-07-25 09:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx2rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_tx_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4539944e515183668109bdf4d0c3d7d228383d88","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"8767ef1c-4c0f-472f-b8a1-c02ca36a55f6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-25 06:37:21 +0000 UTC FinishedAt: 2026-07-25 09:39:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aae72929-ef42-495c-8618-8fdae785e6c4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9b834a39-701e-4435-a990-d7a2ab3fb5fe,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-workflowbx2rt/series-workflowbx2rt-build-action-939992461/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-workflowbx2rt/series-workflowbx2rt-build-action-1470467626/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-workflowbx2rt/series-workflowbx2rt-convert-artifact-3176275627/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,}