Name: series-workflow4cchc Phase: Succeeded StartedAt: 2026-08-09 04:45:25 +0000 UTC FinishedAt: 2026-08-09 08:42:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[0] Phase: Succeeded StartedAt: 2026-08-09 04:45:25 +0000 UTC FinishedAt: 2026-08-09 05:01:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[0].run-triage Phase: Succeeded StartedAt: 2026-08-09 04:45:25 +0000 UTC FinishedAt: 2026-08-09 05:01:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "97a9eca7-41e9-48ee-b8fd-34e378ad1442" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_sf_t4_timer_expire", "sctp_asconf_queue_teardown" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZSYjMzQ7LAogICAgJiMzNDtzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93biYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHNldHRpbmcgYGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmZgIHRvIE5VTEwgYWZ0ZXIgZnJlZWluZyBpdCwgYW5kIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1ZyBieSBhZGRpbmcgYSBOVUxMIGNoZWNrIGZvciBgY2h1bmtgIGJlZm9yZSBkZXJlZmVyZW5jaW5nIGl0LiBVc2UtYWZ0ZXItZnJlZSBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1Z3MgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFNDVFAgcHJvdG9jb2wgc3RhY2sgcmVsYXRlZCB0byBBU0NPTkYgY2h1bmsgaGFuZGxpbmcuIFRoZSBjaGFuZ2VzIG1vZGlmeSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBsb2dpYyBhbmQgYXNzb2NpYXRpb24gdGVhcmRvd24sIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwNTowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGYwNTBlMzFkYjM3ZDFmYTVkODRkYjIxNDY5ODRkZTY4M2UwNmRkYzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyA5IDA1OjAwOjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbmluZGV4IDViMGFlNjE2ZTFmZjkuLjczN2Y4ZWE5ZDQ4MmYgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9hc3NvY2lvbGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbkBAIC0xNzEzLDYgJiM0MzsxNzEzLDggQEAgdm9pZCBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bihzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbiBcdHNjdHBfYXNzb2NfZnJlZV9hc2NvbmZfcXVldWUoYXNvYyk7XG4gXG4gXHQvKiBGcmVlIGFueSBjYWNoZWQgQVNDT05GIGNodW5rLiAqL1xuLVx0aWYgKGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmYpXG4mIzQzO1x0aWYgKGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmYpIHtcbiBcdFx0c2N0cF9jaHVua19mcmVlKGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmYpO1xuJiM0MztcdFx0YXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZiA9IE5VTEw7XG4mIzQzO1x0fVxuIH1cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5pbmRleCA3MDhmYTA3ZDVmZmZjLi4zYThlMTZiMjk2NjBjIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5AQCAtNjE0NSw4ICYjNDM7NjE0NSwxMiBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl90NF90aW1lcl9leHBpcmUoXG4gXHRcdFx0XHRcdHN0cnVjdCBzY3RwX2NtZF9zZXEgKmNvbW1hbmRzKVxuIHtcbiBcdHN0cnVjdCBzY3RwX2NodW5rICpjaHVuayA9IGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmY7XG4tXHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCA9IGNodW5rLVx1MDAzZXRyYW5zcG9ydDtcbiYjNDM7XHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFjaHVuaylcbiYjNDM7XHRcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0NPTlNVTUU7XG4gXG4mIzQzO1x0dHJhbnNwb3J0ID0gY2h1bmstXHUwMDNldHJhbnNwb3J0O1xuIFx0U0NUUF9JTkNfU1RBVFMobmV0LCBTQ1RQX01JQl9UNF9SVE9fRVhQSVJFRFMpO1xuIFxuIFx0LyogQURESVAgNC4xIEIxKSBJbmNyZW1lbnQgdGhlIGVycm9yIGNvdW50ZXJzIGFuZCBwZXJmb3JtIHBhdGggZmFpbHVyZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF9zZl90NF90aW1lcl9leHBpcmUmIzM0OywKICAgICYjMzQ7c2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBTQ1RQIHByb3RvY29sIHN0YWNrIHJlbGF0ZWQgdG8gQVNDT05GIGNodW5rIGhhbmRsaW5nLiBUaGUgY2hhbmdlcyBtb2RpZnkgY29yZSBTQ1RQIHN0YXRlIG1hY2hpbmUgbG9naWMgYW5kIGFzc29jaWF0aW9uIHRlYXJkb3duLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMDUwZTMxZGIzN2QxZmE1ZDg0ZGIyMTQ2OTg0ZGU2ODNlMDZkZGM4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgOSAwNTowMDo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmMKaW5kZXggNWIwYWU2MTZlMWZmOS4uNzM3ZjhlYTlkNDgyZiAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvYXNzb2Npb2xhLmMKQEAgLTE3MTMsNiAmIzQzOzE3MTMsOCBAQCB2b2lkIHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKQogCXNjdHBfYXNzb2NfZnJlZV9hc2NvbmZfcXVldWUoYXNvYyk7CiAKIAkvKiBGcmVlIGFueSBjYWNoZWQgQVNDT05GIGNodW5rLiAqLwotCWlmIChhc29jLSZndDthZGRpcF9sYXN0X2FzY29uZikKJiM0MzsJaWYgKGFzb2MtJmd0O2FkZGlwX2xhc3RfYXNjb25mKSB7CiAJCXNjdHBfY2h1bmtfZnJlZShhc29jLSZndDthZGRpcF9sYXN0X2FzY29uZik7CiYjNDM7CQlhc29jLSZndDthZGRpcF9sYXN0X2FzY29uZiA9IE5VTEw7CiYjNDM7CX0KIH0KZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKaW5kZXggNzA4ZmEwN2Q1ZmZmYy4uM2E4ZTE2YjI5NjYwYyAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKQEAgLTYxNDUsOCAmIzQzOzYxNDUsMTIgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlKAogCQkJCQlzdHJ1Y3Qgc2N0cF9jbWRfc2VxICpjb21tYW5kcykKIHsKIAlzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmsgPSBhc29jLSZndDthZGRpcF9sYXN0X2FzY29uZjsKLQlzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCA9IGNodW5rLSZndDt0cmFuc3BvcnQ7CiYjNDM7CXN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqdHJhbnNwb3J0OwomIzQzOwomIzQzOwlpZiAoIWNodW5rKQomIzQzOwkJcmV0dXJuIFNDVFBfRElTUE9TSVRJT05fQ09OU1VNRTsKIAomIzQzOwl0cmFuc3BvcnQgPSBjaHVuay0mZ3Q7dHJhbnNwb3J0OwogCVNDVFBfSU5DX1NUQVRTKG5ldCwgU0NUUF9NSUJfVDRfUlRPX0VYUElSRURTKTsKIAogCS8qIEFERElQIDQuMSBCMSkgSW5jcmVtZW50IHRoZSBlcnJvciBjb3VudGVycyBhbmQgcGVyZm9ybSBwYXRoIGZhaWx1cmUKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDU6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMwOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipTQ1RQIEJ1ZyBGaXggQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AgYW5kIGBuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY2AuIFRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBTQ1RQIGFzc29jaWF0aW9uIGhhbmRsaW5nIGFuZCBzdGF0ZSBtYWNoaW5lIGZ1bmN0aW9ucywgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZS4gRnJvbSB0aGUgY29udGV4dCwgaXQgbG9va3MgbGlrZSB0aGVyZSYjMzk7cyBhIG1pc3NpbmcgY2hlY2sgZm9yIGBhc29jLSZndDthZGRpcF9sYXN0X2FzY29uZmAgYmVpbmcgTlVMTCB3aXRoaW4gYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYC4gVGhlIHBhdGNoIGFkZHMgdGhhdCBjaGVjaywgYW5kIGFsc28gc2V0cyBgYXNvYy0mZ3Q7YWRkaXBfbGFzdF9hc2NvbmYgPSBOVUxMYCBpbiBgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25gLgoKQmFzaWNhbGx5LCB3ZSYjMzk7cmUgbWFraW5nIHN1cmUgdGhhdCBgYWRkaXBfbGFzdF9hc2NvbmZgIGlzIGhhbmRsZWQgY29ycmVjdGx5IGR1cmluZyBhIHRlYXJkb3duLiBLbm93aW5nIHRoaXMsIGl0IGlzIGxpa2VseSB0aGUgZ29hbCBvZiB0aGUgcGF0Y2ggaXMgdG8gcHJldmVudCB0aGUgdGltZXIgZnJvbSBhdHRlbXB0aW5nIHRvIGRlcmVmZXJlbmNlIGEgZnJlZWQgcG9pbnRlci4gSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgbXkgYXR0ZW50aW9uIGhlcmUgb24gdGhhdCB0aW1lci4KCk5vdywgbGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25gIGFuZCBgc2N0cF9zZl90NF90aW1lcl9leHBpcmVgLiBUaGVzZSBhcmUgY29yZSBTQ1RQIGZ1bmN0aW9ucywgYW5kIGJlY2F1c2UgU0NUUCBpcyBhIGZhaXJseSBjb21wbGljYXRlZCBwcm90b2NvbCBhbmQgdGhpcyBpbnZvbHZlcyB0aGUgc3RhdGUgbWFjaGluZSwgSSYjMzk7ZCBzYXkgdGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3b3J0aCBmdXJ0aGVyIGludmVzdGlnYXRpb24gYW5kLCBsaWtlbHksIGZ1enppbmcuIEdpdmVuIHRoZSBjb3JlIG5ldHdvcmtpbmcgbmF0dXJlIG9mIFNDVFAsIGZpbmRpbmcgY29uZmlnIG9wdGlvbnMgaXMgdXN1YWxseSBhIG1hdHRlciBvZiBjaGVja2luZyBmb3IgYElQX1NDVFBgIGluIHRoZSBrZXJuZWwgY29uZmlncywgYnV0IEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gdGhhdCB3aXRoIGEgcXVpY2sgc2VhcmNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnLTUtXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5ODcKCQkJCQkJCW91dHB1dDogNzYKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgU0NUUCBDb25maWd1cmF0aW9uIFBhcmFtZXRlcnMqKgoKQWxyaWdodCwgc28gdGhlIGZvY3VzIGlzIGRlZmluaXRlbHkgb24gYElQX1NDVFBgIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBlbGVtZW50LiBUaGF0JiMzOTtzIG15IHN0YXJ0aW5nIHBvaW50LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoZXNlIGZ1bmN0aW9uczogYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYCBhbmQgYHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duYC4gVGhlIHJlYWwgcXVlc3Rpb24gaGVyZSBpcyBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24uCgpXaGF0IEkmIzM5O20gdHJ5aW5nIHRvIGRldGVybWluZSBpcyB3aGV0aGVyIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgc3RhdGljYWxseSBkZWZpbmVkIHdpdGhpbiBhIG1vZHVsZSBvciBpZiB0aGV5IGFyZSBleHBvcnRlZC9nbG9iYWwuIElmIHRoZXkmIzM5O3JlIGdsb2JhbCwgSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlaXIgcG90ZW50aWFsIG1vZGlmaWNhdGlvbiBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZSwgd2hpY2ggY291bGQgaGF2ZSBhIHN5c3RlbS13aWRlIGVmZmVjdC4gQ29udmVyc2VseSwgaWYgdGhleSBhcmUgaW50ZXJuYWwsIHRoZWlyIGltcGFjdCBpcyBsaWtlbHkgbG9jYWxpemVkLCBhbmQgdGhhdCYjMzk7cyBhIGRpZmZlcmVudCBhbmFseXRpY2FsIGFwcHJvYWNoLiBUaGlzIGFsbCBib2lscyBkb3duIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgcmUtZW50cmFuY3kgaXNzdWVzIG9mIHRoZSBzeXN0ZW0gYWZ0ZXIgYSBjb25maWd1cmF0aW9uIGNoYW5nZS4gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgaW5mb3JtIGhvdyB0byBmdXJ0aGVyIGFuYWx5emUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gdnVsbmVyYWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjdHBfc2ZfdDRfdGltZXJfZXhwaXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTYwNjg9ZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfdDJfdGltZXJfZXhwaXJlKFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTYxMzgtICovXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo2MTM5OmVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZShcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTYxNDAtXHRcdFx0XHRcdHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM9NzU2PW90aGVyX2V2ZW50X3RhYmxlW1NDVFBfTlVNX09USEVSX1RZUEVTXVtTQ1RQX1NUQVRFX05VTV9TVEFURVNdID0ge1xuLS1cbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy04NjMtXHQvKiBTQ1RQX1NUQVRFX0VTVEFCTElTSEVEICovIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6ODY0Olx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl90NF90aW1lcl9leHBpcmUpLCBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTg2NS1cdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyAqLyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL2Fzc29jaW9sYS5jPTMxND12b2lkIHNjdHBfYXNzb2NpYXRpb25fZnJlZShzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbi0tXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0zODQtXG5uZXQvc2N0cC9hc3NvY2lvbGEuYzozODU6XHRzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bihhc29jKTtcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTM4Ni1cbi0tXG5uZXQvc2N0cC9hc3NvY2lvbGEuYz0xNjg2PXN0cnVjdCBzY3RwX2NodW5rICpzY3RwX2Fzc29jX2xvb2t1cF9hc2NvbmZfYWNrKFxuLS1cbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTE3MDYtXG5uZXQvc2N0cC9hc3NvY2lvbGEuYzoxNzA3OnZvaWQgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd24oc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0xNzA4LXtcbi0tXG5uZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmM9MTI3NT1zdGF0aWMgaW50IHNjdHBfY21kX2ludGVycHJldGVyKGVudW0gc2N0cF9ldmVudF90eXBlIGV2ZW50X3R5cGUsXG4tLVxubmV0L3NjdHAvc21fc2lkZWVmZmVjdC5jLTE3ODctXHRcdGNhc2UgU0NUUF9DTURfUFVSR0VfQVNDT05GX1FVRVVFOlxubmV0L3NjdHAvc21fc2lkZWVmZmVjdC5jOjE3ODg6XHRcdFx0c2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd24oYXNvYyk7XG5uZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmMtMTc4OS1cdFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDExCgkJCQkJCQlvdXRwdXQ6IDgwCgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBTQ1RQIEZ1bmN0aW9uIERlY2xhcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgdHdvIGZ1bmN0aW9ucywgYHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duYCBhbmQgYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYC4gVGhlIGluaXRpYWwgcG9pbnQgaXMgdGhleSYjMzk7cmUgYm90aCBub24tc3RhdGljLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgc3RhcnRpbmcgcG9pbnQuIFRoaXMgbWVhbnMgdGhleSBhcmUgbGlrZWx5IG1lYW50IHRvIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGVpciByZXNwZWN0aXZlIGNvbXBpbGF0aW9uIHVuaXRzLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4KCkxldCYjMzk7cyBxdWlja2x5IHZlcmlmeSB3aGVyZSB0aGV5IGFyZSBkZWZpbmVkLCBzdGFydGluZyB3aXRoIGBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bmAgaW4gYG5ldC9zY3RwL2Fzc29jaW9sYS5jYCBhbmQgdGhlbiBgc2N0cF9zZl90NF90aW1lcl9leHBpcmVgIGluIGBuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY2AuIFRoZSBxdWVzdGlvbiBpcywgYXJlIHRoZXkgYWN0dWFsbHkgZXhwb3J0ZWQgZ2xvYmFsbHksIG9yIGp1c3QgdXNlZCB3aXRoaW4gdGhvc2Ugc3BlY2lmaWMgZmlsZXM/IAoKVGhlIGJlc3QgbmV4dCBzdGVwIHRvIGNvbmZpcm0gdGhlaXIgZXh0ZXJuYWwgYXZhaWxhYmlsaXR5IGlzIHRvIGNoZWNrIGZvciB0aGVpciBkZWNsYXJhdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBpbiBgaW5jbHVkZS9uZXQvc2N0cC9zY3RwLmhgLCBvciBhIHNpbWlsYXIgaGVhZGVyIGZpbGUgd2l0aGluIHRoYXQgZGlyZWN0b3J5LCB0byBzZWUgaWYgdGhleSYjMzk7dmUgYmVlbiBleHBsaWNpdGx5IGRlY2xhcmVkIGZvciBleHRlcm5hbCB1c2UuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBpbmRpY2F0aW9uIG9mIHRoZWlyIGludGVuZGVkIHNjb3BlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjdHBfc2ZfdDRfdGltZXJfZXhwaXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvc2N0cC9zbS5oPTk1PXNjdHBfc3RhdGVfZm5fdCBzY3RwX3NmX3QyX3RpbWVyX2V4cGlyZTtcbmluY2x1ZGUvbmV0L3NjdHAvc20uaDo5NjpzY3RwX3N0YXRlX2ZuX3Qgc2N0cF9zZl90NF90aW1lcl9leHBpcmU7XG5pbmNsdWRlL25ldC9zY3RwL3NtLmgtOTctc2N0cF9zdGF0ZV9mbl90IHNjdHBfc2ZfdDVfdGltZXJfZXhwaXJlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3NjdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oPTIxNTc9c3RydWN0IHNjdHBfY2h1bmsgKnNjdHBfYXNzb2NfbG9va3VwX2FzY29uZl9hY2soXG4tLVxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmgtMjE1OS1cdFx0XHRcdFx0X19iZTMyIHNlcmlhbCk7XG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaDoyMTYwOnZvaWQgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd24oc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpO1xuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmgtMjE2MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDU6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNDVFAgQ29kZWJhc2UqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIFNDVFAgY29kZS4gQmFzZWQgb24gdGhlIGZpbGUgcGF0aHMsIG15IGluaXRpYWwgdGFyZ2V0cyBhcmUgZGVmaW5pdGVseSBgaW5jbHVkZS9uZXQvc2N0cC9zbS5oYCBhbmQgYGluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oYC4gVGhlc2UgaGVhZGVycyBhcmUgZ29pbmcgdG8gYmUga2V5IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSBtYWNoaW5lIGFuZCBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCBJIGNhbiBiZSBmYWlybHkgY29uZmlkZW50IHRoYXQgZnVuY3Rpb25zIGxpa2UgYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYCBhbmQgYHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duYCBhcmUgZ29pbmcgdG8gcHJvdmlkZSB1c2VmdWwgZW50cnkgcG9pbnRzIGZvciBpbnZlc3RpZ2F0aW9uLiBUaGV5IGFwcGVhciBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcHJvYmxlbS4KCk5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIGNvbmZpZ3VyYXRpb24uIEkga25vdyBTQ1RQIG92ZXJhbGwgaXMgZ292ZXJuZWQgYnkgYElQX1NDVFBgLCBidXQgbXkgY29uY2VybiBoZXJlIGlzIG1vcmUgc3BlY2lmaWMgdG8gQVNDT05GIGZ1bmN0aW9uYWxpdHkuIEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciwgbW9yZSBncmFudWxhciBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgaXRzIGJlaGF2aW9yLiBUaGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgbmV0L3NjdHAvS2NvbmZpZ2AuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBzeW1ib2xzIHJlbGF0ZWQgdG8gJiMzNDtBU0NPTkYmIzM0OyBvciAmIzM0O0FERElQJiMzNDsgdGhhdCBtaWdodCBiZSByZWxldmFudC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhYmlsaXR5IHN1cnJvdW5kaW5nIHRoaXMgZmVhdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDU6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBU0NPTkZ8QURESVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDU6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE0NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkV4YW1pbmluZyBTQ1RQIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpSaWdodCwgc28gdGhlcmUmIzM5O3Mgbm8gZGVkaWNhdGVkLCBzdGFuZC1hbG9uZSBjb25maWd1cmF0aW9uIG9wdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHRoZSBBU0NPTkYgKEFkZHJlc3MgU3BlY2lmaWMgQ29uZmlndXJhdGlvbikgZmVhdHVyZSB3aXRoaW4gdGhlIEtjb25maWcgZm9yIHRoZSBTQ1RQIGltcGxlbWVudGF0aW9uLiBUaGF0JiMzOTtzIGEgYml0IHVudXN1YWwuIEl0IGltcGxpZXMgQVNDT05GIGlzIGxpa2VseSBidW5kbGVkIGRpcmVjdGx5IHdpdGhpbiB0aGUgbGFyZ2VyIFNDVFAgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aGF0IC0gc29tZXRpbWVzIHRoZXNlIHRoaW5ncyBnZXQgbWlzc2VkLCBhbmQgYSBkZWRpY2F0ZWQgY29uZmlnIGNhbiBtYWtlIHRoaW5ncyBtdWNoIGNsZWFyZXIsIGVzcGVjaWFsbHkgZm9yIHNwZWNpYWxpemVkIHVzZS1jYXNlcy4KCk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IHNjYW4gdGhyb3VnaCB0aGUgS2NvbmZpZyBoaWVyYXJjaHksIG9yIHBlcmhhcHMgbGV2ZXJhZ2UgbXkgSURFJiMzOTtzIHNlYXJjaCwgdG8gaWRlbnRpZnkgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIHRoYXQgU0NUUCAqZG9lcyogZGVwZW5kIG9uLiBVbmRlcnN0YW5kaW5nIHRob3NlIGRlcGVuZGVuY2llcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgcGljdHVyZSBvZiBob3cgQVNDT05GIGlzIGNvbnRyb2xsZWQsIGluZGlyZWN0bHksIHRocm91Z2ggZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRob3NlIGRlcGVuZGVudCBjb21wb25lbnRzLiBJdCYjMzk7cyBvZnRlbiB0aHJvdWdoIHRoZSBpbnRlcnBsYXkgb2YgYSBmZXcgYmFzZSBjb25maWd1cmF0aW9ucyB0aGF0IHlvdSBnZXQgdGhlIGZ1bmN0aW9uYWxpdHkgeW91IG5lZWQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBrbm9icyBhbmQgZGlhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24uKiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZz02PW1lbnVjb25maWcgSVBfU0NUUFxubmV0L3NjdHAvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7VGhlIFNDVFAgUHJvdG9jb2xcJiMzNDtcbm5ldC9zY3RwL0tjb25maWc6ODpcdGRlcGVuZHMgb24gSU5FVFxubmV0L3NjdHAvS2NvbmZpZy05LVx0c2VsZWN0IENSWVBUT19MSUJfU0hBMVxuLS1cbm5ldC9zY3RwL0tjb25maWc9NDE9Y29uZmlnIFNDVFBfREJHX09CSkNOVFxubmV0L3NjdHAvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7U0NUUDogRGVidWcgb2JqZWN0IGNvdW50c1wmIzM0O1xubmV0L3NjdHAvS2NvbmZpZzo0MzpcdGRlcGVuZHMgb24gUFJPQ19GU1xubmV0L3NjdHAvS2NvbmZpZy00NC1cdGhlbHBcbi0tXG5uZXQvc2N0cC9LY29uZmlnPTcwPWNvbmZpZyBJTkVUX1NDVFBfRElBR1xubmV0L3NjdHAvS2NvbmZpZzo3MTpcdGRlcGVuZHMgb24gSU5FVF9ESUFHXG5uZXQvc2N0cC9LY29uZmlnLTcyLVx0ZGVmX3RyaXN0YXRlIElORVRfRElBR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwNTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjcxCgkJCQkJCQlvdXRwdXQ6IDEyMAoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU0NUUCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBTQ1RQLCB3aGljaCwgb2YgY291cnNlLCByZWxpZXMgb24gYElORVRgIGJlaW5nIGVuYWJsZWQg4oCTIHRoYXQmIzM5O3MgYSBnaXZlbiBmb3IgYW55IG5ldHdvcmtpbmctcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBUaGVyZWZvcmUsIHdlJiMzOTtyZSByZWFsbHkgb25seSBkZWFsaW5nIHdpdGggY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBgSVBfU0NUUGAgaW4gdGhpcyBjYXNlLgoKVGhlIGNvcmUgb2YgdGhlIG1hdHRlciBzZWVtcyB0byBiZSB0aGVzZSB0d28gZm9jdXMgc3ltYm9sczogYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYCBhbmQgYHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duYC4gTG9va2luZyBpbnRvIHRoZW0sIHRoZSBmb3JtZXIgaXMgYW4gZXZlbnQgaGFuZGxlciwgd2hpY2ggbWFrZXMgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgYW5hbHlzaXMuIGBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bmAsIHNlZW1zIHRvIGFsc28gYmUgYSBzb2xpZCBmb2NhbCBwb2ludC4KCkVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWUgd2l0aGluIHRoZSBTQ1RQIHByb3RvY29sIHN0YWNrLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBBU0NPTkYgY2h1bmsgaGFuZGxpbmcgbG9naWMuIFRoZSBjb2RlIHRvdWNoZXMgdGhlIGNvcmUgU0NUUCBzdGF0ZSBtYWNoaW5lIGxvZ2ljIGFuZCBhc3NvY2lhdGlvbiB0ZWFyZG93biBwcm9jZXNzZXMuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRob3NlIGFyZWFzLCBhcyB0aGV5JiMzOTtyZSBhbHdheXMgY29tcGxleCBhbmQgcHJvbmUgdG8gc3VidGxlIGJ1Z3MuIFRoZSBnb29kIG5ld3MgaXMsIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiwgdGhlc2UgY2hhbmdlcyBhcmUgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gdmFsaWRhdGUgdGhlIGZpeCBhbmQgdmVyaWZ5IHRoYXQgdGhlIGZpeCBpcyBzdGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF9zZl90NF90aW1lcl9leHBpcmUmIzM0OywKICAgICYjMzQ7c2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBTQ1RQIHByb3RvY29sIHN0YWNrIHJlbGF0ZWQgdG8gQVNDT05GIGNodW5rIGhhbmRsaW5nLiBUaGUgY2hhbmdlcyBtb2RpZnkgY29yZSBTQ1RQIHN0YXRlIG1hY2hpbmUgbG9naWMgYW5kIGFzc29jaWF0aW9uIHRlYXJkb3duLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZSYjMzQ7LAogICAgJiMzNDtzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93biYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFNDVFAgcHJvdG9jb2wgc3RhY2sgcmVsYXRlZCB0byBBU0NPTkYgY2h1bmsgaGFuZGxpbmcuIFRoZSBjaGFuZ2VzIG1vZGlmeSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBsb2dpYyBhbmQgYXNzb2NpYXRpb24gdGVhcmRvd24sIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDU6MDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwNTowMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBieSBzZXR0aW5nIGBhc29jLVx1MDAzZWFkZGlwX2xhc3RfYXNjb25mYCB0byBOVUxMIGFmdGVyIGZyZWVpbmcgaXQsIGFuZCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcgYnkgYWRkaW5nIGEgTlVMTCBjaGVjayBmb3IgYGNodW5rYCBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdC4gVXNlLWFmdGVyLWZyZWUgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWdzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0b3JzLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjA1MGUzMWRiMzdkMWZhNWQ4NGRiMjE0Njk4NGRlNjgzZTA2ZGRjOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDkgMDU6MDA6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hc3NvY2lvbGEuYyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jCmluZGV4IDViMGFlNjE2ZTFmZjkuLjczN2Y4ZWE5ZDQ4MmYgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2Fzc29jaW9sYS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jCkBAIC0xNzEzLDYgJiM0MzsxNzEzLDggQEAgdm9pZCBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bihzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYykKIAlzY3RwX2Fzc29jX2ZyZWVfYXNjb25mX3F1ZXVlKGFzb2MpOwogCiAJLyogRnJlZSBhbnkgY2FjaGVkIEFTQ09ORiBjaHVuay4gKi8KLQlpZiAoYXNvYy0mZ3Q7YWRkaXBfbGFzdF9hc2NvbmYpCiYjNDM7CWlmIChhc29jLSZndDthZGRpcF9sYXN0X2FzY29uZikgewogCQlzY3RwX2NodW5rX2ZyZWUoYXNvYy0mZ3Q7YWRkaXBfbGFzdF9hc2NvbmYpOwomIzQzOwkJYXNvYy0mZ3Q7YWRkaXBfbGFzdF9hc2NvbmYgPSBOVUxMOwomIzQzOwl9CiB9CmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCmluZGV4IDcwOGZhMDdkNWZmZmMuLjNhOGUxNmIyOTY2MGMgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCkBAIC02MTQ1LDggJiM0Mzs2MTQ1LDEyIEBAIGVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZSgKIAkJCQkJc3RydWN0IHNjdHBfY21kX3NlcSAqY29tbWFuZHMpCiB7CiAJc3RydWN0IHNjdHBfY2h1bmsgKmNodW5rID0gYXNvYy0mZ3Q7YWRkaXBfbGFzdF9hc2NvbmY7Ci0Jc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQgPSBjaHVuay0mZ3Q7dHJhbnNwb3J0OwomIzQzOwlzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydDsKJiM0MzsKJiM0MzsJaWYgKCFjaHVuaykKJiM0MzsJCXJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0NPTlNVTUU7CiAKJiM0MzsJdHJhbnNwb3J0ID0gY2h1bmstJmd0O3RyYW5zcG9ydDsKIAlTQ1RQX0lOQ19TVEFUUyhuZXQsIFNDVFBfTUlCX1Q0X1JUT19FWFBJUkVEUyk7CiAKIAkvKiBBRERJUCA0LjEgQjEpIEluY3JlbWVudCB0aGUgZXJyb3IgY291bnRlcnMgYW5kIHBlcmZvcm0gcGF0aCBmYWlsdXJlCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwNTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA2CgkJCQkJCQlvdXRwdXQ6IDEzMgoJCQkJCQkJdGhvdWdodHM6IDQyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTQ1RQIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9zY3RwL2Fzc29jaW9sYS5jYCBhbmQgYG5ldC9zY3RwL3NtX3N0YXRlZnVucy5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIHRoZSBjb2RlIHNuaXBwZXRzLCBhbmQgSSB1bmRlcnN0YW5kIHRoZSBpbnRlbnQuIEluIGBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bmAsIHRoZXkmIzM5O3JlIGNsZWFuaW5nIHVwIHRoZSBgYWRkaXBfbGFzdF9hc2NvbmZgIHBvaW50ZXIuIFRoZSBvcmlnaW5hbCBjb2RlIGZyZWVzIHRoZSBjaHVuaywgYnV0IGNyaXRpY2FsbHksIGl0ICpkb2VzbiYjMzk7dCogbnVsbGlmeSB0aGUgcG9pbnRlci4gVGhhdCYjMzk7cyBhIHRleHRib29rIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLCBhbmQgYSBLQVNBTiBkZXRlY3RvciB3b3VsZCBmbGFnIHRoYXQgcXVpY2tseSwgd2hpY2ggaXMgd2h5IHRoZXkmIzM5O3JlIGZpeGluZyBpdCB3aXRoIHRoZSBhZGRlZCBudWxsIGFzc2lnbm1lbnQuIFBlcmZlY3QuCgpOb3csIGxvb2tpbmcgYXQgYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYCwgdGhlIHNhbWUgYGFkZGlwX2xhc3RfYXNjb25mYCBjaHVuayBpcyBiZWluZyBhY2Nlc3NlZCwgYnV0ICp3aXRob3V0KiB0aGUgbnVsbCBjaGVjay4gVGhhdCBjb3VsZCBsZWFkIHRvIGRlcmVmZXJlbmNpbmcgYSBkYW5nbGluZyBwb2ludGVyLCB3aGljaCBpcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcuIEFub3RoZXIgZWFzeSB3aW4gZm9yIEtBU0FOLCBvciBhIHN0YW5kYXJkIGtlcm5lbCBvb3BzLiBCdXQgaXQgaXMgc3RpbGwgY3JpdGljYWwgdG8gZml4LiBUaGUgcGF0Y2ggY29ycmVjdGx5IGFkZHMgYSBOVUxMIGNoZWNrIGJlZm9yZSB0cnlpbmcgdG8gYWNjZXNzIHRoZSBjaHVuayYjMzk7cyB0cmFuc3BvcnQuCgpTbywgaW4gZXNzZW5jZSwgdGhleSYjMzk7cmUgcGx1Z2dpbmcgdXAgdHdvIHByZXR0eSBzdHJhaWdodGZvcndhcmQgdnVsbmVyYWJpbGl0aWVzOiBhIHVzZS1hZnRlci1mcmVlIGFuZCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIGZpeCBpcyBjbGVhbjsgc2V0IHBvaW50ZXIgdG8gTlVMTCBhZnRlciBmcmVlIGFuZCBhZGQgTlVMTCBjaGVjayBiZWZvcmUgZGVyZWZlcmVuY2luZy4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaW4gcGxheSBoZXJlLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBuZWNlc3NhcnksIGFzIGNvbmZpcm1lZCBieSBteSBpbml0aWFsIGFzc2Vzc21lbnQuIFRoaXMgaXMgYSBzb2xpZCwgY2xlYW4gZml4LCBhZGRyZXNzaW5nIGEgY291cGxlIG9mIHdlbGwtdW5kZXJzdG9vZCBtZW1vcnkgc2FmZXR5IHByb2JsZW1zLiBHb29kIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHNldHRpbmcgYGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmZgIHRvIE5VTEwgYWZ0ZXIgZnJlZWluZyBpdCwgYW5kIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1ZyBieSBhZGRpbmcgYSBOVUxMIGNoZWNrIGZvciBgY2h1bmtgIGJlZm9yZSBkZXJlZmVyZW5jaW5nIGl0LiBVc2UtYWZ0ZXItZnJlZSBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1Z3MgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSBidWcgYnkgc2V0dGluZyBgYXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZmAgdG8gTlVMTCBhZnRlciBmcmVlaW5nIGl0LCBhbmQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnIGJ5IGFkZGluZyBhIE5VTEwgY2hlY2sgZm9yIGBjaHVua2AgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQuIFVzZS1hZnRlci1mcmVlIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVncyBhcmUgcmVsaWFibHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdG9ycy4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA1OjAwOjQyLjc2NTU1MjU4MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDMxMjY3MzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZVwiLFxuICAgIFwic2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25cIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHNldHRpbmcgYGFzb2MtXFx1MDAzZWFkZGlwX2xhc3RfYXNjb25mYCB0byBOVUxMIGFmdGVyIGZyZWVpbmcgaXQsIGFuZCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcgYnkgYWRkaW5nIGEgTlVMTCBjaGVjayBmb3IgYGNodW5rYCBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdC4gVXNlLWFmdGVyLWZyZWUgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWdzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0b3JzLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFNDVFAgcHJvdG9jb2wgc3RhY2sgcmVsYXRlZCB0byBBU0NPTkYgY2h1bmsgaGFuZGxpbmcuIFRoZSBjaGFuZ2VzIG1vZGlmeSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBsb2dpYyBhbmQgYXNzb2NpYXRpb24gdGVhcmRvd24sIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NDIuNzY1NTU3MzIyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDIwODY0NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmMDUwZTMxZGIzN2QxZmE1ZDg0ZGIyMTQ2OTg0ZGU2ODNlMDZkZGM4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDkgMDU6MDA6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMgYi9uZXQvc2N0cC9hc3NvY2lvbGEuY1xcbmluZGV4IDViMGFlNjE2ZTFmZjkuLjczN2Y4ZWE5ZDQ4MmYgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjdHAvYXNzb2Npb2xhLmNcXG4rKysgYi9uZXQvc2N0cC9hc3NvY2lvbGEuY1xcbkBAIC0xNzEzLDYgKzE3MTMsOCBAQCB2b2lkIHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxcbiBcXHRzY3RwX2Fzc29jX2ZyZWVfYXNjb25mX3F1ZXVlKGFzb2MpO1xcbiBcXG4gXFx0LyogRnJlZSBhbnkgY2FjaGVkIEFTQ09ORiBjaHVuay4gKi9cXG4tXFx0aWYgKGFzb2MtXFx1MDAzZWFkZGlwX2xhc3RfYXNjb25mKVxcbitcXHRpZiAoYXNvYy1cXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmYpIHtcXG4gXFx0XFx0c2N0cF9jaHVua19mcmVlKGFzb2MtXFx1MDAzZWFkZGlwX2xhc3RfYXNjb25mKTtcXG4rXFx0XFx0YXNvYy1cXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmYgPSBOVUxMO1xcbitcXHR9XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xcbmluZGV4IDcwOGZhMDdkNWZmZmMuLjNhOGUxNmIyOTY2MGMgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcXG4rKysgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xcbkBAIC02MTQ1LDggKzYxNDUsMTIgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlKFxcbiBcXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc2N0cF9jbWRfc2VxICpjb21tYW5kcylcXG4ge1xcbiBcXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmsgPSBhc29jLVxcdTAwM2VhZGRpcF9sYXN0X2FzY29uZjtcXG4tXFx0c3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQgPSBjaHVuay1cXHUwMDNldHJhbnNwb3J0O1xcbitcXHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydDtcXG4rXFxuK1xcdGlmICghY2h1bmspXFxuK1xcdFxcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0NPTlNVTUU7XFxuIFxcbitcXHR0cmFuc3BvcnQgPSBjaHVuay1cXHUwMDNldHJhbnNwb3J0O1xcbiBcXHRTQ1RQX0lOQ19TVEFUUyhuZXQsIFNDVFBfTUlCX1Q0X1JUT19FWFBJUkVEUyk7XFxuIFxcbiBcXHQvKiBBRERJUCA0LjEgQjEpIEluY3JlbWVudCB0aGUgZXJyb3IgY291bnRlcnMgYW5kIHBlcmZvcm0gcGF0aCBmYWlsdXJlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA1OjAwOjQzLjIwODUxMjk4NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI5OTQ3NTU1NTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZVwiLFxuICAgIFwic2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFNDVFAgcHJvdG9jb2wgc3RhY2sgcmVsYXRlZCB0byBBU0NPTkYgY2h1bmsgaGFuZGxpbmcuIFRoZSBjaGFuZ2VzIG1vZGlmeSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBsb2dpYyBhbmQgYXNzb2NpYXRpb24gdGVhcmRvd24sIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjA1MGUzMWRiMzdkMWZhNWQ4NGRiMjE0Njk4NGRlNjgzZTA2ZGRjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDkgMDU6MDA6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hc3NvY2lvbGEuYyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jXG5pbmRleCA1YjBhZTYxNmUxZmY5Li43MzdmOGVhOWQ0ODJmIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbisrKyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jXG5AQCAtMTcxMyw2ICsxNzEzLDggQEAgdm9pZCBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bihzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbiBcdHNjdHBfYXNzb2NfZnJlZV9hc2NvbmZfcXVldWUoYXNvYyk7XG4gXG4gXHQvKiBGcmVlIGFueSBjYWNoZWQgQVNDT05GIGNodW5rLiAqL1xuLVx0aWYgKGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmYpXG4rXHRpZiAoYXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZikge1xuIFx0XHRzY3RwX2NodW5rX2ZyZWUoYXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZik7XG4rXHRcdGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmYgPSBOVUxMO1xuK1x0fVxuIH1cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5pbmRleCA3MDhmYTA3ZDVmZmZjLi4zYThlMTZiMjk2NjBjIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbisrKyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5AQCAtNjE0NSw4ICs2MTQ1LDEyIEBAIGVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZShcbiBcdFx0XHRcdFx0c3RydWN0IHNjdHBfY21kX3NlcSAqY29tbWFuZHMpXG4ge1xuIFx0c3RydWN0IHNjdHBfY2h1bmsgKmNodW5rID0gYXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZjtcbi1cdHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqdHJhbnNwb3J0ID0gY2h1bmstXHUwMDNldHJhbnNwb3J0O1xuK1x0c3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQ7XG4rXG4rXHRpZiAoIWNodW5rKVxuK1x0XHRyZXR1cm4gU0NUUF9ESVNQT1NJVElPTl9DT05TVU1FO1xuIFxuK1x0dHJhbnNwb3J0ID0gY2h1bmstXHUwMDNldHJhbnNwb3J0O1xuIFx0U0NUUF9JTkNfU1RBVFMobmV0LCBTQ1RQX01JQl9UNF9SVE9fRVhQSVJFRFMpO1xuIFxuIFx0LyogQURESVAgNC4xIEIxKSBJbmNyZW1lbnQgdGhlIGVycm9yIGNvdW50ZXJzIGFuZCBwZXJmb3JtIHBhdGggZmFpbHVyZVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NDMuMjA4NTE0OTE2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA4NjQxMDgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipTQ1RQIEJ1ZyBGaXggQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AgYW5kIGBuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY2AuIFRoYXQgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIFNDVFAgYXNzb2NpYXRpb24gaGFuZGxpbmcgYW5kIHN0YXRlIG1hY2hpbmUgZnVuY3Rpb25zLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlLiBGcm9tIHRoZSBjb250ZXh0LCBpdCBsb29rcyBsaWtlIHRoZXJlJ3MgYSBtaXNzaW5nIGNoZWNrIGZvciBgYXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZmAgYmVpbmcgTlVMTCB3aXRoaW4gYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYC4gVGhlIHBhdGNoIGFkZHMgdGhhdCBjaGVjaywgYW5kIGFsc28gc2V0cyBgYXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZiA9IE5VTExgIGluIGBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bmAuXG5cbkJhc2ljYWxseSwgd2UncmUgbWFraW5nIHN1cmUgdGhhdCBgYWRkaXBfbGFzdF9hc2NvbmZgIGlzIGhhbmRsZWQgY29ycmVjdGx5IGR1cmluZyBhIHRlYXJkb3duLiBLbm93aW5nIHRoaXMsIGl0IGlzIGxpa2VseSB0aGUgZ29hbCBvZiB0aGUgcGF0Y2ggaXMgdG8gcHJldmVudCB0aGUgdGltZXIgZnJvbSBhdHRlbXB0aW5nIHRvIGRlcmVmZXJlbmNlIGEgZnJlZWQgcG9pbnRlci4gSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgbXkgYXR0ZW50aW9uIGhlcmUgb24gdGhhdCB0aW1lci5cblxuTm93LCBsZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duYCBhbmQgYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYC4gVGhlc2UgYXJlIGNvcmUgU0NUUCBmdW5jdGlvbnMsIGFuZCBiZWNhdXNlIFNDVFAgaXMgYSBmYWlybHkgY29tcGxpY2F0ZWQgcHJvdG9jb2wgYW5kIHRoaXMgaW52b2x2ZXMgdGhlIHN0YXRlIG1hY2hpbmUsIEknZCBzYXkgdGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3b3J0aCBmdXJ0aGVyIGludmVzdGlnYXRpb24gYW5kLCBsaWtlbHksIGZ1enppbmcuIEdpdmVuIHRoZSBjb3JlIG5ldHdvcmtpbmcgbmF0dXJlIG9mIFNDVFAsIGZpbmRpbmcgY29uZmlnIG9wdGlvbnMgaXMgdXN1YWxseSBhIG1hdHRlciBvZiBjaGVja2luZyBmb3IgYElQX1NDVFBgIGluIHRoZSBrZXJuZWwgY29uZmlncywgYnV0IEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gdGhhdCB3aXRoIGEgcXVpY2sgc2VhcmNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NDkuMjk0OTI4OTQ4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjgzODQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0NUUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWctNS1cXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXFxubmV0L3NjdHAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NDkuNDQxNzczNzQyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI1NjU3MzU1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIFNDVFAgQ29uZmlndXJhdGlvbiBQYXJhbWV0ZXJzKipcblxuQWxyaWdodCwgc28gdGhlIGZvY3VzIGlzIGRlZmluaXRlbHkgb24gYElQX1NDVFBgIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBlbGVtZW50LiBUaGF0J3MgbXkgc3RhcnRpbmcgcG9pbnQuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGUgY29uZmlndXJhdGlvbi4gTGV0J3MgZGVsdmUgaW50byB0aGVzZSBmdW5jdGlvbnM6IGBzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZWAgYW5kIGBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bmAuIFRoZSByZWFsIHF1ZXN0aW9uIGhlcmUgaXMgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIHRoZSBjb25maWd1cmF0aW9uLlxuXG5XaGF0IEknbSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGlzIHdoZXRoZXIgdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zIGFyZSBzdGF0aWNhbGx5IGRlZmluZWQgd2l0aGluIGEgbW9kdWxlIG9yIGlmIHRoZXkgYXJlIGV4cG9ydGVkL2dsb2JhbC4gSWYgdGhleSdyZSBnbG9iYWwsIEkgaGF2ZSB0byBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mIHRoZWlyIHBvdGVudGlhbCBtb2RpZmljYXRpb24gZnJvbSBvdXRzaWRlIHRoZSBtb2R1bGUsIHdoaWNoIGNvdWxkIGhhdmUgYSBzeXN0ZW0td2lkZSBlZmZlY3QuIENvbnZlcnNlbHksIGlmIHRoZXkgYXJlIGludGVybmFsLCB0aGVpciBpbXBhY3QgaXMgbGlrZWx5IGxvY2FsaXplZCwgYW5kIHRoYXQncyBhIGRpZmZlcmVudCBhbmFseXRpY2FsIGFwcHJvYWNoLiBUaGlzIGFsbCBib2lscyBkb3duIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgcmUtZW50cmFuY3kgaXNzdWVzIG9mIHRoZSBzeXN0ZW0gYWZ0ZXIgYSBjb25maWd1cmF0aW9uIGNoYW5nZS4gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgaW5mb3JtIGhvdyB0byBmdXJ0aGVyIGFuYWx5emUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gdnVsbmVyYWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg3LCJPdXRwdXRUb2tlbnMiOjc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NTMuNjk4MzUwMDYxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDAyNTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz02MDY4PWVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX3QyX3RpbWVyX2V4cGlyZShcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTYxMzgtICovXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM6NjEzOTplbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl90NF90aW1lcl9leHBpcmUoXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNjE0MC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM9NzU2PW90aGVyX2V2ZW50X3RhYmxlW1NDVFBfTlVNX09USEVSX1RZUEVTXVtTQ1RQX1NUQVRFX05VTV9TVEFURVNdID0ge1xcbi0tXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTg2My1cXHQvKiBTQ1RQX1NUQVRFX0VTVEFCTElTSEVEICovIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6ODY0OlxcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlKSwgXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy04NjUtXFx0LyogU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HICovIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NTMuNzQ1MzU1OTg2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODkzMjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9hc3NvY2lvbGEuYz0zMTQ9dm9pZCBzY3RwX2Fzc29jaWF0aW9uX2ZyZWUoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpXFxuLS1cXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0zODQtXFxubmV0L3NjdHAvYXNzb2Npb2xhLmM6Mzg1OlxcdHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duKGFzb2MpO1xcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTM4Ni1cXG4tLVxcbm5ldC9zY3RwL2Fzc29jaW9sYS5jPTE2ODY9c3RydWN0IHNjdHBfY2h1bmsgKnNjdHBfYXNzb2NfbG9va3VwX2FzY29uZl9hY2soXFxuLS1cXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0xNzA2LVxcbm5ldC9zY3RwL2Fzc29jaW9sYS5jOjE3MDc6dm9pZCBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bihzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0xNzA4LXtcXG4tLVxcbm5ldC9zY3RwL3NtX3NpZGVlZmZlY3QuYz0xMjc1PXN0YXRpYyBpbnQgc2N0cF9jbWRfaW50ZXJwcmV0ZXIoZW51bSBzY3RwX2V2ZW50X3R5cGUgZXZlbnRfdHlwZSxcXG4tLVxcbm5ldC9zY3RwL3NtX3NpZGVlZmZlY3QuYy0xNzg3LVxcdFxcdGNhc2UgU0NUUF9DTURfUFVSR0VfQVNDT05GX1FVRVVFOlxcbm5ldC9zY3RwL3NtX3NpZGVlZmZlY3QuYzoxNzg4OlxcdFxcdFxcdHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duKGFzb2MpO1xcbm5ldC9zY3RwL3NtX3NpZGVlZmZlY3QuYy0xNzg5LVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwNTowMDo1My43ODcyNTUzMzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzE0NDcyMzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBTQ1RQIEZ1bmN0aW9uIERlY2xhcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIHR3byBmdW5jdGlvbnMsIGBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bmAgYW5kIGBzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZWAuIFRoZSBpbml0aWFsIHBvaW50IGlzIHRoZXkncmUgYm90aCBub24tc3RhdGljLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgc3RhcnRpbmcgcG9pbnQuIFRoaXMgbWVhbnMgdGhleSBhcmUgbGlrZWx5IG1lYW50IHRvIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGVpciByZXNwZWN0aXZlIGNvbXBpbGF0aW9uIHVuaXRzLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgd2hlcmUgdGhleSBhcmUgZGVmaW5lZCwgc3RhcnRpbmcgd2l0aCBgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25gIGluIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AgYW5kIHRoZW4gYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYCBpbiBgbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNgLiBUaGUgcXVlc3Rpb24gaXMsIGFyZSB0aGV5IGFjdHVhbGx5IGV4cG9ydGVkIGdsb2JhbGx5LCBvciBqdXN0IHVzZWQgd2l0aGluIHRob3NlIHNwZWNpZmljIGZpbGVzPyBcblxuVGhlIGJlc3QgbmV4dCBzdGVwIHRvIGNvbmZpcm0gdGhlaXIgZXh0ZXJuYWwgYXZhaWxhYmlsaXR5IGlzIHRvIGNoZWNrIGZvciB0aGVpciBkZWNsYXJhdGlvbnMuIEknbGwgbmVlZCB0byBsb29rIGluIGBpbmNsdWRlL25ldC9zY3RwL3NjdHAuaGAsIG9yIGEgc2ltaWxhciBoZWFkZXIgZmlsZSB3aXRoaW4gdGhhdCBkaXJlY3RvcnksIHRvIHNlZSBpZiB0aGV5J3ZlIGJlZW4gZXhwbGljaXRseSBkZWNsYXJlZCBmb3IgZXh0ZXJuYWwgdXNlLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgY2xlYXJlc3QgaW5kaWNhdGlvbiBvZiB0aGVpciBpbnRlbmRlZCBzY29wZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAxMSwiT3V0cHV0VG9rZW5zIjo4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NTguNTAxNzI5NjI2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDA4NjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3NjdHAvc20uaD05NT1zY3RwX3N0YXRlX2ZuX3Qgc2N0cF9zZl90Ml90aW1lcl9leHBpcmU7XFxuaW5jbHVkZS9uZXQvc2N0cC9zbS5oOjk2OnNjdHBfc3RhdGVfZm5fdCBzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZTtcXG5pbmNsdWRlL25ldC9zY3RwL3NtLmgtOTctc2N0cF9zdGF0ZV9mbl90IHNjdHBfc2ZfdDVfdGltZXJfZXhwaXJlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwNTowMDo1OC41NDc3NDQzNzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDU5MjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oPTIxNTc9c3RydWN0IHNjdHBfY2h1bmsgKnNjdHBfYXNzb2NfbG9va3VwX2FzY29uZl9hY2soXFxuLS1cXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaC0yMTU5LVxcdFxcdFxcdFxcdFxcdF9fYmUzMiBzZXJpYWwpO1xcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oOjIxNjA6dm9pZCBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bihzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyk7XFxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmgtMjE2MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NTguNTg5MjA4ODY3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MDU0ODQyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBTQ1RQIENvZGViYXNlKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgU0NUUCBjb2RlLiBCYXNlZCBvbiB0aGUgZmlsZSBwYXRocywgbXkgaW5pdGlhbCB0YXJnZXRzIGFyZSBkZWZpbml0ZWx5IGBpbmNsdWRlL25ldC9zY3RwL3NtLmhgIGFuZCBgaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmhgLiBUaGVzZSBoZWFkZXJzIGFyZSBnb2luZyB0byBiZSBrZXkgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHN0YXRlIG1hY2hpbmUgYW5kIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgYW5kIEkgY2FuIGJlIGZhaXJseSBjb25maWRlbnQgdGhhdCBmdW5jdGlvbnMgbGlrZSBgc2N0cF9zZl90NF90aW1lcl9leHBpcmVgIGFuZCBgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25gIGFyZSBnb2luZyB0byBwcm92aWRlIHVzZWZ1bCBlbnRyeSBwb2ludHMgZm9yIGludmVzdGlnYXRpb24uIFRoZXkgYXBwZWFyIHBhcnRpY3VsYXJseSByZWxldmFudCB0byB0aGUgY3VycmVudCBwcm9ibGVtLlxuXG5Ob3csIEkgbmVlZCB0byBjb25zaWRlciBjb25maWd1cmF0aW9uLiBJIGtub3cgU0NUUCBvdmVyYWxsIGlzIGdvdmVybmVkIGJ5IGBJUF9TQ1RQYCwgYnV0IG15IGNvbmNlcm4gaGVyZSBpcyBtb3JlIHNwZWNpZmljIHRvIEFTQ09ORiBmdW5jdGlvbmFsaXR5LiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIsIG1vcmUgZ3JhbnVsYXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIGl0cyBiZWhhdmlvci4gVGhlIG9idmlvdXMgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgYG5ldC9zY3RwL0tjb25maWdgLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBzeW1ib2xzIHJlbGF0ZWQgdG8gXCJBU0NPTkZcIiBvciBcIkFERElQXCIgdGhhdCBtaWdodCBiZSByZWxldmFudC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhYmlsaXR5IHN1cnJvdW5kaW5nIHRoaXMgZmVhdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcyMywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDE6MDMuMTk0Njk2NjYxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTk3MDkwNiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQVNDT05GfEFERElQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA1OjAxOjAzLjI0MDY3MzE2N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQ0NjA2MTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgU0NUUCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5SaWdodCwgc28gdGhlcmUncyBubyBkZWRpY2F0ZWQsIHN0YW5kLWFsb25lIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHNwZWNpZmljYWxseSBmb3IgdGhlIEFTQ09ORiAoQWRkcmVzcyBTcGVjaWZpYyBDb25maWd1cmF0aW9uKSBmZWF0dXJlIHdpdGhpbiB0aGUgS2NvbmZpZyBmb3IgdGhlIFNDVFAgaW1wbGVtZW50YXRpb24uIFRoYXQncyBhIGJpdCB1bnVzdWFsLiBJdCBpbXBsaWVzIEFTQ09ORiBpcyBsaWtlbHkgYnVuZGxlZCBkaXJlY3RseSB3aXRoaW4gdGhlIGxhcmdlciBTQ1RQIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBtYWtlIGEgbWVudGFsIG5vdGUgb2YgdGhhdCAtIHNvbWV0aW1lcyB0aGVzZSB0aGluZ3MgZ2V0IG1pc3NlZCwgYW5kIGEgZGVkaWNhdGVkIGNvbmZpZyBjYW4gbWFrZSB0aGluZ3MgbXVjaCBjbGVhcmVyLCBlc3BlY2lhbGx5IGZvciBzcGVjaWFsaXplZCB1c2UtY2FzZXMuXG5cbk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IHNjYW4gdGhyb3VnaCB0aGUgS2NvbmZpZyBoaWVyYXJjaHksIG9yIHBlcmhhcHMgbGV2ZXJhZ2UgbXkgSURFJ3Mgc2VhcmNoLCB0byBpZGVudGlmeSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBTQ1RQICpkb2VzKiBkZXBlbmQgb24uIFVuZGVyc3RhbmRpbmcgdGhvc2UgZGVwZW5kZW5jaWVzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBwaWN0dXJlIG9mIGhvdyBBU0NPTkYgaXMgY29udHJvbGxlZCwgaW5kaXJlY3RseSwgdGhyb3VnaCBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhvc2UgZGVwZW5kZW50IGNvbXBvbmVudHMuIEl0J3Mgb2Z0ZW4gdGhyb3VnaCB0aGUgaW50ZXJwbGF5IG9mIGEgZmV3IGJhc2UgY29uZmlndXJhdGlvbnMgdGhhdCB5b3UgZ2V0IHRoZSBmdW5jdGlvbmFsaXR5IHlvdSBuZWVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXhhY3Qga25vYnMgYW5kIGRpYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTQ3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDE6MDcuMjg1MjgyNTI4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQxODI2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9LY29uZmlnPTY9bWVudWNvbmZpZyBJUF9TQ1RQXFxubmV0L3NjdHAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG5uZXQvc2N0cC9LY29uZmlnOjg6XFx0ZGVwZW5kcyBvbiBJTkVUXFxubmV0L3NjdHAvS2NvbmZpZy05LVxcdHNlbGVjdCBDUllQVE9fTElCX1NIQTFcXG4tLVxcbm5ldC9zY3RwL0tjb25maWc9NDE9Y29uZmlnIFNDVFBfREJHX09CSkNOVFxcbm5ldC9zY3RwL0tjb25maWctNDItXFx0Ym9vbCBcXFwiU0NUUDogRGVidWcgb2JqZWN0IGNvdW50c1xcXCJcXG5uZXQvc2N0cC9LY29uZmlnOjQzOlxcdGRlcGVuZHMgb24gUFJPQ19GU1xcbm5ldC9zY3RwL0tjb25maWctNDQtXFx0aGVscFxcbi0tXFxubmV0L3NjdHAvS2NvbmZpZz03MD1jb25maWcgSU5FVF9TQ1RQX0RJQUdcXG5uZXQvc2N0cC9LY29uZmlnOjcxOlxcdGRlcGVuZHMgb24gSU5FVF9ESUFHXFxubmV0L3NjdHAvS2NvbmZpZy03Mi1cXHRkZWZfdHJpc3RhdGUgSU5FVF9ESUFHXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA1OjAxOjA3LjMzMTcwNDA5M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzQzMzI2NjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBTQ1RQIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgU0NUUCwgd2hpY2gsIG9mIGNvdXJzZSwgcmVsaWVzIG9uIGBJTkVUYCBiZWluZyBlbmFibGVkIOKAkyB0aGF0J3MgYSBnaXZlbiBmb3IgYW55IG5ldHdvcmtpbmctcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBUaGVyZWZvcmUsIHdlJ3JlIHJlYWxseSBvbmx5IGRlYWxpbmcgd2l0aCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIGBJUF9TQ1RQYCBpbiB0aGlzIGNhc2UuXG5cblRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIgc2VlbXMgdG8gYmUgdGhlc2UgdHdvIGZvY3VzIHN5bWJvbHM6IGBzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZWAgYW5kIGBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bmAuIExvb2tpbmcgaW50byB0aGVtLCB0aGUgZm9ybWVyIGlzIGFuIGV2ZW50IGhhbmRsZXIsIHdoaWNoIG1ha2VzIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGFuYWx5c2lzLiBgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25gLCBzZWVtcyB0byBhbHNvIGJlIGEgc29saWQgZm9jYWwgcG9pbnQuXG5cbkVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWUgd2l0aGluIHRoZSBTQ1RQIHByb3RvY29sIHN0YWNrLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBBU0NPTkYgY2h1bmsgaGFuZGxpbmcgbG9naWMuIFRoZSBjb2RlIHRvdWNoZXMgdGhlIGNvcmUgU0NUUCBzdGF0ZSBtYWNoaW5lIGxvZ2ljIGFuZCBhc3NvY2lhdGlvbiB0ZWFyZG93biBwcm9jZXNzZXMuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhvc2UgYXJlYXMsIGFzIHRoZXkncmUgYWx3YXlzIGNvbXBsZXggYW5kIHByb25lIHRvIHN1YnRsZSBidWdzLiBUaGUgZ29vZCBuZXdzIGlzLCBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb24sIHRoZXNlIGNoYW5nZXMgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIHZhbGlkYXRlIHRoZSBmaXggYW5kIHZlcmlmeSB0aGF0IHRoZSBmaXggaXMgc3RhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjcxLCJPdXRwdXRUb2tlbnMiOjEyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwNTowMToxMy4wNzUwMzM4OTdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTAzMjIzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlXCIsXG4gICAgXCJzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93blwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciB1c2UtYWZ0ZXItZnJlZSBpbiB0aGUgU0NUUCBwcm90b2NvbCBzdGFjayByZWxhdGVkIHRvIEFTQ09ORiBjaHVuayBoYW5kbGluZy4gVGhlIGNoYW5nZXMgbW9kaWZ5IGNvcmUgU0NUUCBzdGF0ZSBtYWNoaW5lIGxvZ2ljIGFuZCBhc3NvY2lhdGlvbiB0ZWFyZG93biwgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZVwiLFxuICAgIFwic2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFNDVFAgcHJvdG9jb2wgc3RhY2sgcmVsYXRlZCB0byBBU0NPTkYgY2h1bmsgaGFuZGxpbmcuIFRoZSBjaGFuZ2VzIG1vZGlmeSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBsb2dpYyBhbmQgYXNzb2NpYXRpb24gdGVhcmRvd24sIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDE6MTMuMTU2MDcxNzg5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDQwNzM4MTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDE6MTMuMTU2NTk5MTI5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjgwNDAyMDc1MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHNldHRpbmcgYGFzb2MtXFx1MDAzZWFkZGlwX2xhc3RfYXNjb25mYCB0byBOVUxMIGFmdGVyIGZyZWVpbmcgaXQsIGFuZCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcgYnkgYWRkaW5nIGEgTlVMTCBjaGVjayBmb3IgYGNodW5rYCBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdC4gVXNlLWFmdGVyLWZyZWUgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWdzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0b3JzLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmMDUwZTMxZGIzN2QxZmE1ZDg0ZGIyMTQ2OTg0ZGU2ODNlMDZkZGM4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgOSAwNTowMDo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbmluZGV4IDViMGFlNjE2ZTFmZjkuLjczN2Y4ZWE5ZDQ4MmYgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9hc3NvY2lvbGEuY1xuKysrIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbkBAIC0xNzEzLDYgKzE3MTMsOCBAQCB2b2lkIHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxuIFx0c2N0cF9hc3NvY19mcmVlX2FzY29uZl9xdWV1ZShhc29jKTtcbiBcbiBcdC8qIEZyZWUgYW55IGNhY2hlZCBBU0NPTkYgY2h1bmsuICovXG4tXHRpZiAoYXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZilcbitcdGlmIChhc29jLVx1MDAzZWFkZGlwX2xhc3RfYXNjb25mKSB7XG4gXHRcdHNjdHBfY2h1bmtfZnJlZShhc29jLVx1MDAzZWFkZGlwX2xhc3RfYXNjb25mKTtcbitcdFx0YXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZiA9IE5VTEw7XG4rXHR9XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbmluZGV4IDcwOGZhMDdkNWZmZmMuLjNhOGUxNmIyOTY2MGMgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xuKysrIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbkBAIC02MTQ1LDggKzYxNDUsMTIgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlKFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc2N0cF9jbWRfc2VxICpjb21tYW5kcylcbiB7XG4gXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmsgPSBhc29jLVx1MDAzZWFkZGlwX2xhc3RfYXNjb25mO1xuLVx0c3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQgPSBjaHVuay1cdTAwM2V0cmFuc3BvcnQ7XG4rXHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydDtcbitcbitcdGlmICghY2h1bmspXG4rXHRcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0NPTlNVTUU7XG4gXG4rXHR0cmFuc3BvcnQgPSBjaHVuay1cdTAwM2V0cmFuc3BvcnQ7XG4gXHRTQ1RQX0lOQ19TVEFUUyhuZXQsIFNDVFBfTUlCX1Q0X1JUT19FWFBJUkVEUyk7XG4gXG4gXHQvKiBBRERJUCA0LjEgQjEpIEluY3JlbWVudCB0aGUgZXJyb3IgY291bnRlcnMgYW5kIHBlcmZvcm0gcGF0aCBmYWlsdXJlXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwNTowMToxMy4xNTY2MDAwMzhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA0MDE4ODU3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTQ1RQIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AgYW5kIGBuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY2AuIEltbWVkaWF0ZWx5LCBJIHNlZSB0aGUgY29kZSBzbmlwcGV0cywgYW5kIEkgdW5kZXJzdGFuZCB0aGUgaW50ZW50LiBJbiBgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25gLCB0aGV5J3JlIGNsZWFuaW5nIHVwIHRoZSBgYWRkaXBfbGFzdF9hc2NvbmZgIHBvaW50ZXIuIFRoZSBvcmlnaW5hbCBjb2RlIGZyZWVzIHRoZSBjaHVuaywgYnV0IGNyaXRpY2FsbHksIGl0ICpkb2Vzbid0KiBudWxsaWZ5IHRoZSBwb2ludGVyLiBUaGF0J3MgYSB0ZXh0Ym9vayB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbywgYW5kIGEgS0FTQU4gZGV0ZWN0b3Igd291bGQgZmxhZyB0aGF0IHF1aWNrbHksIHdoaWNoIGlzIHdoeSB0aGV5J3JlIGZpeGluZyBpdCB3aXRoIHRoZSBhZGRlZCBudWxsIGFzc2lnbm1lbnQuIFBlcmZlY3QuXG5cbk5vdywgbG9va2luZyBhdCBgc2N0cF9zZl90NF90aW1lcl9leHBpcmVgLCB0aGUgc2FtZSBgYWRkaXBfbGFzdF9hc2NvbmZgIGNodW5rIGlzIGJlaW5nIGFjY2Vzc2VkLCBidXQgKndpdGhvdXQqIHRoZSBudWxsIGNoZWNrLiBUaGF0IGNvdWxkIGxlYWQgdG8gZGVyZWZlcmVuY2luZyBhIGRhbmdsaW5nIHBvaW50ZXIsIHdoaWNoIGlzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1Zy4gQW5vdGhlciBlYXN5IHdpbiBmb3IgS0FTQU4sIG9yIGEgc3RhbmRhcmQga2VybmVsIG9vcHMuIEJ1dCBpdCBpcyBzdGlsbCBjcml0aWNhbCB0byBmaXguIFRoZSBwYXRjaCBjb3JyZWN0bHkgYWRkcyBhIE5VTEwgY2hlY2sgYmVmb3JlIHRyeWluZyB0byBhY2Nlc3MgdGhlIGNodW5rJ3MgdHJhbnNwb3J0LlxuXG5TbywgaW4gZXNzZW5jZSwgdGhleSdyZSBwbHVnZ2luZyB1cCB0d28gcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCB2dWxuZXJhYmlsaXRpZXM6IGEgdXNlLWFmdGVyLWZyZWUgYW5kIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLiBUaGUgZml4IGlzIGNsZWFuOyBzZXQgcG9pbnRlciB0byBOVUxMIGFmdGVyIGZyZWUgYW5kIGFkZCBOVUxMIGNoZWNrIGJlZm9yZSBkZXJlZmVyZW5jaW5nLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbiBwbGF5IGhlcmUuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IG5lY2Vzc2FyeSwgYXMgY29uZmlybWVkIGJ5IG15IGluaXRpYWwgYXNzZXNzbWVudC4gVGhpcyBpcyBhIHNvbGlkLCBjbGVhbiBmaXgsIGFkZHJlc3NpbmcgYSBjb3VwbGUgb2Ygd2VsbC11bmRlcnN0b29kIG1lbW9yeSBzYWZldHkgcHJvYmxlbXMuIEdvb2Qgd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwNiwiT3V0cHV0VG9rZW5zIjoxMzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwNTowMToyMS4xOTY3OTEzMjlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHNldHRpbmcgYGFzb2MtXFx1MDAzZWFkZGlwX2xhc3RfYXNjb25mYCB0byBOVUxMIGFmdGVyIGZyZWVpbmcgaXQsIGFuZCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcgYnkgYWRkaW5nIGEgTlVMTCBjaGVjayBmb3IgYGNodW5rYCBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdC4gVXNlLWFmdGVyLWZyZWUgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWdzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0b3JzLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBieSBzZXR0aW5nIGBhc29jLVxcdTAwM2VhZGRpcF9sYXN0X2FzY29uZmAgdG8gTlVMTCBhZnRlciBmcmVlaW5nIGl0LCBhbmQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnIGJ5IGFkZGluZyBhIE5VTEwgY2hlY2sgZm9yIGBjaHVua2AgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQuIFVzZS1hZnRlci1mcmVlIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVncyBhcmUgcmVsaWFibHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdG9ycy4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cchc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-09 04:45:25 +0000 UTC FinishedAt: 2026-08-09 05:01:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "97a9eca7-41e9-48ee-b8fd-34e378ad1442" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_sf_t4_timer_expire", "sctp_asconf_queue_teardown" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZSYjMzQ7LAogICAgJiMzNDtzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93biYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHNldHRpbmcgYGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmZgIHRvIE5VTEwgYWZ0ZXIgZnJlZWluZyBpdCwgYW5kIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1ZyBieSBhZGRpbmcgYSBOVUxMIGNoZWNrIGZvciBgY2h1bmtgIGJlZm9yZSBkZXJlZmVyZW5jaW5nIGl0LiBVc2UtYWZ0ZXItZnJlZSBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1Z3MgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFNDVFAgcHJvdG9jb2wgc3RhY2sgcmVsYXRlZCB0byBBU0NPTkYgY2h1bmsgaGFuZGxpbmcuIFRoZSBjaGFuZ2VzIG1vZGlmeSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBsb2dpYyBhbmQgYXNzb2NpYXRpb24gdGVhcmRvd24sIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwNTowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGYwNTBlMzFkYjM3ZDFmYTVkODRkYjIxNDY5ODRkZTY4M2UwNmRkYzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyA5IDA1OjAwOjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbmluZGV4IDViMGFlNjE2ZTFmZjkuLjczN2Y4ZWE5ZDQ4MmYgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9hc3NvY2lvbGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbkBAIC0xNzEzLDYgJiM0MzsxNzEzLDggQEAgdm9pZCBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bihzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbiBcdHNjdHBfYXNzb2NfZnJlZV9hc2NvbmZfcXVldWUoYXNvYyk7XG4gXG4gXHQvKiBGcmVlIGFueSBjYWNoZWQgQVNDT05GIGNodW5rLiAqL1xuLVx0aWYgKGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmYpXG4mIzQzO1x0aWYgKGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmYpIHtcbiBcdFx0c2N0cF9jaHVua19mcmVlKGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmYpO1xuJiM0MztcdFx0YXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZiA9IE5VTEw7XG4mIzQzO1x0fVxuIH1cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5pbmRleCA3MDhmYTA3ZDVmZmZjLi4zYThlMTZiMjk2NjBjIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5AQCAtNjE0NSw4ICYjNDM7NjE0NSwxMiBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl90NF90aW1lcl9leHBpcmUoXG4gXHRcdFx0XHRcdHN0cnVjdCBzY3RwX2NtZF9zZXEgKmNvbW1hbmRzKVxuIHtcbiBcdHN0cnVjdCBzY3RwX2NodW5rICpjaHVuayA9IGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmY7XG4tXHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCA9IGNodW5rLVx1MDAzZXRyYW5zcG9ydDtcbiYjNDM7XHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFjaHVuaylcbiYjNDM7XHRcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0NPTlNVTUU7XG4gXG4mIzQzO1x0dHJhbnNwb3J0ID0gY2h1bmstXHUwMDNldHJhbnNwb3J0O1xuIFx0U0NUUF9JTkNfU1RBVFMobmV0LCBTQ1RQX01JQl9UNF9SVE9fRVhQSVJFRFMpO1xuIFxuIFx0LyogQURESVAgNC4xIEIxKSBJbmNyZW1lbnQgdGhlIGVycm9yIGNvdW50ZXJzIGFuZCBwZXJmb3JtIHBhdGggZmFpbHVyZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF9zZl90NF90aW1lcl9leHBpcmUmIzM0OywKICAgICYjMzQ7c2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBTQ1RQIHByb3RvY29sIHN0YWNrIHJlbGF0ZWQgdG8gQVNDT05GIGNodW5rIGhhbmRsaW5nLiBUaGUgY2hhbmdlcyBtb2RpZnkgY29yZSBTQ1RQIHN0YXRlIG1hY2hpbmUgbG9naWMgYW5kIGFzc29jaWF0aW9uIHRlYXJkb3duLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMDUwZTMxZGIzN2QxZmE1ZDg0ZGIyMTQ2OTg0ZGU2ODNlMDZkZGM4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgOSAwNTowMDo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmMKaW5kZXggNWIwYWU2MTZlMWZmOS4uNzM3ZjhlYTlkNDgyZiAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvYXNzb2Npb2xhLmMKQEAgLTE3MTMsNiAmIzQzOzE3MTMsOCBAQCB2b2lkIHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKQogCXNjdHBfYXNzb2NfZnJlZV9hc2NvbmZfcXVldWUoYXNvYyk7CiAKIAkvKiBGcmVlIGFueSBjYWNoZWQgQVNDT05GIGNodW5rLiAqLwotCWlmIChhc29jLSZndDthZGRpcF9sYXN0X2FzY29uZikKJiM0MzsJaWYgKGFzb2MtJmd0O2FkZGlwX2xhc3RfYXNjb25mKSB7CiAJCXNjdHBfY2h1bmtfZnJlZShhc29jLSZndDthZGRpcF9sYXN0X2FzY29uZik7CiYjNDM7CQlhc29jLSZndDthZGRpcF9sYXN0X2FzY29uZiA9IE5VTEw7CiYjNDM7CX0KIH0KZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKaW5kZXggNzA4ZmEwN2Q1ZmZmYy4uM2E4ZTE2YjI5NjYwYyAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKQEAgLTYxNDUsOCAmIzQzOzYxNDUsMTIgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlKAogCQkJCQlzdHJ1Y3Qgc2N0cF9jbWRfc2VxICpjb21tYW5kcykKIHsKIAlzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmsgPSBhc29jLSZndDthZGRpcF9sYXN0X2FzY29uZjsKLQlzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCA9IGNodW5rLSZndDt0cmFuc3BvcnQ7CiYjNDM7CXN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqdHJhbnNwb3J0OwomIzQzOwomIzQzOwlpZiAoIWNodW5rKQomIzQzOwkJcmV0dXJuIFNDVFBfRElTUE9TSVRJT05fQ09OU1VNRTsKIAomIzQzOwl0cmFuc3BvcnQgPSBjaHVuay0mZ3Q7dHJhbnNwb3J0OwogCVNDVFBfSU5DX1NUQVRTKG5ldCwgU0NUUF9NSUJfVDRfUlRPX0VYUElSRURTKTsKIAogCS8qIEFERElQIDQuMSBCMSkgSW5jcmVtZW50IHRoZSBlcnJvciBjb3VudGVycyBhbmQgcGVyZm9ybSBwYXRoIGZhaWx1cmUKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDU6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMwOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipTQ1RQIEJ1ZyBGaXggQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AgYW5kIGBuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY2AuIFRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBTQ1RQIGFzc29jaWF0aW9uIGhhbmRsaW5nIGFuZCBzdGF0ZSBtYWNoaW5lIGZ1bmN0aW9ucywgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZS4gRnJvbSB0aGUgY29udGV4dCwgaXQgbG9va3MgbGlrZSB0aGVyZSYjMzk7cyBhIG1pc3NpbmcgY2hlY2sgZm9yIGBhc29jLSZndDthZGRpcF9sYXN0X2FzY29uZmAgYmVpbmcgTlVMTCB3aXRoaW4gYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYC4gVGhlIHBhdGNoIGFkZHMgdGhhdCBjaGVjaywgYW5kIGFsc28gc2V0cyBgYXNvYy0mZ3Q7YWRkaXBfbGFzdF9hc2NvbmYgPSBOVUxMYCBpbiBgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25gLgoKQmFzaWNhbGx5LCB3ZSYjMzk7cmUgbWFraW5nIHN1cmUgdGhhdCBgYWRkaXBfbGFzdF9hc2NvbmZgIGlzIGhhbmRsZWQgY29ycmVjdGx5IGR1cmluZyBhIHRlYXJkb3duLiBLbm93aW5nIHRoaXMsIGl0IGlzIGxpa2VseSB0aGUgZ29hbCBvZiB0aGUgcGF0Y2ggaXMgdG8gcHJldmVudCB0aGUgdGltZXIgZnJvbSBhdHRlbXB0aW5nIHRvIGRlcmVmZXJlbmNlIGEgZnJlZWQgcG9pbnRlci4gSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgbXkgYXR0ZW50aW9uIGhlcmUgb24gdGhhdCB0aW1lci4KCk5vdywgbGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25gIGFuZCBgc2N0cF9zZl90NF90aW1lcl9leHBpcmVgLiBUaGVzZSBhcmUgY29yZSBTQ1RQIGZ1bmN0aW9ucywgYW5kIGJlY2F1c2UgU0NUUCBpcyBhIGZhaXJseSBjb21wbGljYXRlZCBwcm90b2NvbCBhbmQgdGhpcyBpbnZvbHZlcyB0aGUgc3RhdGUgbWFjaGluZSwgSSYjMzk7ZCBzYXkgdGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3b3J0aCBmdXJ0aGVyIGludmVzdGlnYXRpb24gYW5kLCBsaWtlbHksIGZ1enppbmcuIEdpdmVuIHRoZSBjb3JlIG5ldHdvcmtpbmcgbmF0dXJlIG9mIFNDVFAsIGZpbmRpbmcgY29uZmlnIG9wdGlvbnMgaXMgdXN1YWxseSBhIG1hdHRlciBvZiBjaGVja2luZyBmb3IgYElQX1NDVFBgIGluIHRoZSBrZXJuZWwgY29uZmlncywgYnV0IEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gdGhhdCB3aXRoIGEgcXVpY2sgc2VhcmNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnLTUtXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5ODcKCQkJCQkJCW91dHB1dDogNzYKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgU0NUUCBDb25maWd1cmF0aW9uIFBhcmFtZXRlcnMqKgoKQWxyaWdodCwgc28gdGhlIGZvY3VzIGlzIGRlZmluaXRlbHkgb24gYElQX1NDVFBgIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBlbGVtZW50LiBUaGF0JiMzOTtzIG15IHN0YXJ0aW5nIHBvaW50LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoZXNlIGZ1bmN0aW9uczogYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYCBhbmQgYHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duYC4gVGhlIHJlYWwgcXVlc3Rpb24gaGVyZSBpcyBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24uCgpXaGF0IEkmIzM5O20gdHJ5aW5nIHRvIGRldGVybWluZSBpcyB3aGV0aGVyIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgc3RhdGljYWxseSBkZWZpbmVkIHdpdGhpbiBhIG1vZHVsZSBvciBpZiB0aGV5IGFyZSBleHBvcnRlZC9nbG9iYWwuIElmIHRoZXkmIzM5O3JlIGdsb2JhbCwgSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlaXIgcG90ZW50aWFsIG1vZGlmaWNhdGlvbiBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZSwgd2hpY2ggY291bGQgaGF2ZSBhIHN5c3RlbS13aWRlIGVmZmVjdC4gQ29udmVyc2VseSwgaWYgdGhleSBhcmUgaW50ZXJuYWwsIHRoZWlyIGltcGFjdCBpcyBsaWtlbHkgbG9jYWxpemVkLCBhbmQgdGhhdCYjMzk7cyBhIGRpZmZlcmVudCBhbmFseXRpY2FsIGFwcHJvYWNoLiBUaGlzIGFsbCBib2lscyBkb3duIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgcmUtZW50cmFuY3kgaXNzdWVzIG9mIHRoZSBzeXN0ZW0gYWZ0ZXIgYSBjb25maWd1cmF0aW9uIGNoYW5nZS4gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgaW5mb3JtIGhvdyB0byBmdXJ0aGVyIGFuYWx5emUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gdnVsbmVyYWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjdHBfc2ZfdDRfdGltZXJfZXhwaXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTYwNjg9ZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfdDJfdGltZXJfZXhwaXJlKFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTYxMzgtICovXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo2MTM5OmVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZShcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTYxNDAtXHRcdFx0XHRcdHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM9NzU2PW90aGVyX2V2ZW50X3RhYmxlW1NDVFBfTlVNX09USEVSX1RZUEVTXVtTQ1RQX1NUQVRFX05VTV9TVEFURVNdID0ge1xuLS1cbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy04NjMtXHQvKiBTQ1RQX1NUQVRFX0VTVEFCTElTSEVEICovIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6ODY0Olx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl90NF90aW1lcl9leHBpcmUpLCBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTg2NS1cdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyAqLyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL2Fzc29jaW9sYS5jPTMxND12b2lkIHNjdHBfYXNzb2NpYXRpb25fZnJlZShzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbi0tXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0zODQtXG5uZXQvc2N0cC9hc3NvY2lvbGEuYzozODU6XHRzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bihhc29jKTtcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTM4Ni1cbi0tXG5uZXQvc2N0cC9hc3NvY2lvbGEuYz0xNjg2PXN0cnVjdCBzY3RwX2NodW5rICpzY3RwX2Fzc29jX2xvb2t1cF9hc2NvbmZfYWNrKFxuLS1cbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTE3MDYtXG5uZXQvc2N0cC9hc3NvY2lvbGEuYzoxNzA3OnZvaWQgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd24oc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0xNzA4LXtcbi0tXG5uZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmM9MTI3NT1zdGF0aWMgaW50IHNjdHBfY21kX2ludGVycHJldGVyKGVudW0gc2N0cF9ldmVudF90eXBlIGV2ZW50X3R5cGUsXG4tLVxubmV0L3NjdHAvc21fc2lkZWVmZmVjdC5jLTE3ODctXHRcdGNhc2UgU0NUUF9DTURfUFVSR0VfQVNDT05GX1FVRVVFOlxubmV0L3NjdHAvc21fc2lkZWVmZmVjdC5jOjE3ODg6XHRcdFx0c2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd24oYXNvYyk7XG5uZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmMtMTc4OS1cdFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDExCgkJCQkJCQlvdXRwdXQ6IDgwCgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBTQ1RQIEZ1bmN0aW9uIERlY2xhcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgdHdvIGZ1bmN0aW9ucywgYHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duYCBhbmQgYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYC4gVGhlIGluaXRpYWwgcG9pbnQgaXMgdGhleSYjMzk7cmUgYm90aCBub24tc3RhdGljLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgc3RhcnRpbmcgcG9pbnQuIFRoaXMgbWVhbnMgdGhleSBhcmUgbGlrZWx5IG1lYW50IHRvIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGVpciByZXNwZWN0aXZlIGNvbXBpbGF0aW9uIHVuaXRzLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4KCkxldCYjMzk7cyBxdWlja2x5IHZlcmlmeSB3aGVyZSB0aGV5IGFyZSBkZWZpbmVkLCBzdGFydGluZyB3aXRoIGBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bmAgaW4gYG5ldC9zY3RwL2Fzc29jaW9sYS5jYCBhbmQgdGhlbiBgc2N0cF9zZl90NF90aW1lcl9leHBpcmVgIGluIGBuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY2AuIFRoZSBxdWVzdGlvbiBpcywgYXJlIHRoZXkgYWN0dWFsbHkgZXhwb3J0ZWQgZ2xvYmFsbHksIG9yIGp1c3QgdXNlZCB3aXRoaW4gdGhvc2Ugc3BlY2lmaWMgZmlsZXM/IAoKVGhlIGJlc3QgbmV4dCBzdGVwIHRvIGNvbmZpcm0gdGhlaXIgZXh0ZXJuYWwgYXZhaWxhYmlsaXR5IGlzIHRvIGNoZWNrIGZvciB0aGVpciBkZWNsYXJhdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBpbiBgaW5jbHVkZS9uZXQvc2N0cC9zY3RwLmhgLCBvciBhIHNpbWlsYXIgaGVhZGVyIGZpbGUgd2l0aGluIHRoYXQgZGlyZWN0b3J5LCB0byBzZWUgaWYgdGhleSYjMzk7dmUgYmVlbiBleHBsaWNpdGx5IGRlY2xhcmVkIGZvciBleHRlcm5hbCB1c2UuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBpbmRpY2F0aW9uIG9mIHRoZWlyIGludGVuZGVkIHNjb3BlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjdHBfc2ZfdDRfdGltZXJfZXhwaXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvc2N0cC9zbS5oPTk1PXNjdHBfc3RhdGVfZm5fdCBzY3RwX3NmX3QyX3RpbWVyX2V4cGlyZTtcbmluY2x1ZGUvbmV0L3NjdHAvc20uaDo5NjpzY3RwX3N0YXRlX2ZuX3Qgc2N0cF9zZl90NF90aW1lcl9leHBpcmU7XG5pbmNsdWRlL25ldC9zY3RwL3NtLmgtOTctc2N0cF9zdGF0ZV9mbl90IHNjdHBfc2ZfdDVfdGltZXJfZXhwaXJlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3NjdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oPTIxNTc9c3RydWN0IHNjdHBfY2h1bmsgKnNjdHBfYXNzb2NfbG9va3VwX2FzY29uZl9hY2soXG4tLVxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmgtMjE1OS1cdFx0XHRcdFx0X19iZTMyIHNlcmlhbCk7XG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaDoyMTYwOnZvaWQgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd24oc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpO1xuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmgtMjE2MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDU6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNDVFAgQ29kZWJhc2UqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIFNDVFAgY29kZS4gQmFzZWQgb24gdGhlIGZpbGUgcGF0aHMsIG15IGluaXRpYWwgdGFyZ2V0cyBhcmUgZGVmaW5pdGVseSBgaW5jbHVkZS9uZXQvc2N0cC9zbS5oYCBhbmQgYGluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oYC4gVGhlc2UgaGVhZGVycyBhcmUgZ29pbmcgdG8gYmUga2V5IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSBtYWNoaW5lIGFuZCBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCBJIGNhbiBiZSBmYWlybHkgY29uZmlkZW50IHRoYXQgZnVuY3Rpb25zIGxpa2UgYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYCBhbmQgYHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duYCBhcmUgZ29pbmcgdG8gcHJvdmlkZSB1c2VmdWwgZW50cnkgcG9pbnRzIGZvciBpbnZlc3RpZ2F0aW9uLiBUaGV5IGFwcGVhciBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcHJvYmxlbS4KCk5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIGNvbmZpZ3VyYXRpb24uIEkga25vdyBTQ1RQIG92ZXJhbGwgaXMgZ292ZXJuZWQgYnkgYElQX1NDVFBgLCBidXQgbXkgY29uY2VybiBoZXJlIGlzIG1vcmUgc3BlY2lmaWMgdG8gQVNDT05GIGZ1bmN0aW9uYWxpdHkuIEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciwgbW9yZSBncmFudWxhciBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgaXRzIGJlaGF2aW9yLiBUaGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgbmV0L3NjdHAvS2NvbmZpZ2AuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBzeW1ib2xzIHJlbGF0ZWQgdG8gJiMzNDtBU0NPTkYmIzM0OyBvciAmIzM0O0FERElQJiMzNDsgdGhhdCBtaWdodCBiZSByZWxldmFudC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhYmlsaXR5IHN1cnJvdW5kaW5nIHRoaXMgZmVhdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDU6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBU0NPTkZ8QURESVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDU6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE0NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkV4YW1pbmluZyBTQ1RQIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpSaWdodCwgc28gdGhlcmUmIzM5O3Mgbm8gZGVkaWNhdGVkLCBzdGFuZC1hbG9uZSBjb25maWd1cmF0aW9uIG9wdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHRoZSBBU0NPTkYgKEFkZHJlc3MgU3BlY2lmaWMgQ29uZmlndXJhdGlvbikgZmVhdHVyZSB3aXRoaW4gdGhlIEtjb25maWcgZm9yIHRoZSBTQ1RQIGltcGxlbWVudGF0aW9uLiBUaGF0JiMzOTtzIGEgYml0IHVudXN1YWwuIEl0IGltcGxpZXMgQVNDT05GIGlzIGxpa2VseSBidW5kbGVkIGRpcmVjdGx5IHdpdGhpbiB0aGUgbGFyZ2VyIFNDVFAgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aGF0IC0gc29tZXRpbWVzIHRoZXNlIHRoaW5ncyBnZXQgbWlzc2VkLCBhbmQgYSBkZWRpY2F0ZWQgY29uZmlnIGNhbiBtYWtlIHRoaW5ncyBtdWNoIGNsZWFyZXIsIGVzcGVjaWFsbHkgZm9yIHNwZWNpYWxpemVkIHVzZS1jYXNlcy4KCk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IHNjYW4gdGhyb3VnaCB0aGUgS2NvbmZpZyBoaWVyYXJjaHksIG9yIHBlcmhhcHMgbGV2ZXJhZ2UgbXkgSURFJiMzOTtzIHNlYXJjaCwgdG8gaWRlbnRpZnkgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIHRoYXQgU0NUUCAqZG9lcyogZGVwZW5kIG9uLiBVbmRlcnN0YW5kaW5nIHRob3NlIGRlcGVuZGVuY2llcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgcGljdHVyZSBvZiBob3cgQVNDT05GIGlzIGNvbnRyb2xsZWQsIGluZGlyZWN0bHksIHRocm91Z2ggZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRob3NlIGRlcGVuZGVudCBjb21wb25lbnRzLiBJdCYjMzk7cyBvZnRlbiB0aHJvdWdoIHRoZSBpbnRlcnBsYXkgb2YgYSBmZXcgYmFzZSBjb25maWd1cmF0aW9ucyB0aGF0IHlvdSBnZXQgdGhlIGZ1bmN0aW9uYWxpdHkgeW91IG5lZWQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBrbm9icyBhbmQgZGlhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24uKiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZz02PW1lbnVjb25maWcgSVBfU0NUUFxubmV0L3NjdHAvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7VGhlIFNDVFAgUHJvdG9jb2xcJiMzNDtcbm5ldC9zY3RwL0tjb25maWc6ODpcdGRlcGVuZHMgb24gSU5FVFxubmV0L3NjdHAvS2NvbmZpZy05LVx0c2VsZWN0IENSWVBUT19MSUJfU0hBMVxuLS1cbm5ldC9zY3RwL0tjb25maWc9NDE9Y29uZmlnIFNDVFBfREJHX09CSkNOVFxubmV0L3NjdHAvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7U0NUUDogRGVidWcgb2JqZWN0IGNvdW50c1wmIzM0O1xubmV0L3NjdHAvS2NvbmZpZzo0MzpcdGRlcGVuZHMgb24gUFJPQ19GU1xubmV0L3NjdHAvS2NvbmZpZy00NC1cdGhlbHBcbi0tXG5uZXQvc2N0cC9LY29uZmlnPTcwPWNvbmZpZyBJTkVUX1NDVFBfRElBR1xubmV0L3NjdHAvS2NvbmZpZzo3MTpcdGRlcGVuZHMgb24gSU5FVF9ESUFHXG5uZXQvc2N0cC9LY29uZmlnLTcyLVx0ZGVmX3RyaXN0YXRlIElORVRfRElBR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwNTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjcxCgkJCQkJCQlvdXRwdXQ6IDEyMAoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU0NUUCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBTQ1RQLCB3aGljaCwgb2YgY291cnNlLCByZWxpZXMgb24gYElORVRgIGJlaW5nIGVuYWJsZWQg4oCTIHRoYXQmIzM5O3MgYSBnaXZlbiBmb3IgYW55IG5ldHdvcmtpbmctcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBUaGVyZWZvcmUsIHdlJiMzOTtyZSByZWFsbHkgb25seSBkZWFsaW5nIHdpdGggY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBgSVBfU0NUUGAgaW4gdGhpcyBjYXNlLgoKVGhlIGNvcmUgb2YgdGhlIG1hdHRlciBzZWVtcyB0byBiZSB0aGVzZSB0d28gZm9jdXMgc3ltYm9sczogYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYCBhbmQgYHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duYC4gTG9va2luZyBpbnRvIHRoZW0sIHRoZSBmb3JtZXIgaXMgYW4gZXZlbnQgaGFuZGxlciwgd2hpY2ggbWFrZXMgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgYW5hbHlzaXMuIGBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bmAsIHNlZW1zIHRvIGFsc28gYmUgYSBzb2xpZCBmb2NhbCBwb2ludC4KCkVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWUgd2l0aGluIHRoZSBTQ1RQIHByb3RvY29sIHN0YWNrLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBBU0NPTkYgY2h1bmsgaGFuZGxpbmcgbG9naWMuIFRoZSBjb2RlIHRvdWNoZXMgdGhlIGNvcmUgU0NUUCBzdGF0ZSBtYWNoaW5lIGxvZ2ljIGFuZCBhc3NvY2lhdGlvbiB0ZWFyZG93biBwcm9jZXNzZXMuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRob3NlIGFyZWFzLCBhcyB0aGV5JiMzOTtyZSBhbHdheXMgY29tcGxleCBhbmQgcHJvbmUgdG8gc3VidGxlIGJ1Z3MuIFRoZSBnb29kIG5ld3MgaXMsIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiwgdGhlc2UgY2hhbmdlcyBhcmUgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gdmFsaWRhdGUgdGhlIGZpeCBhbmQgdmVyaWZ5IHRoYXQgdGhlIGZpeCBpcyBzdGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF9zZl90NF90aW1lcl9leHBpcmUmIzM0OywKICAgICYjMzQ7c2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIHVzZS1hZnRlci1mcmVlIGluIHRoZSBTQ1RQIHByb3RvY29sIHN0YWNrIHJlbGF0ZWQgdG8gQVNDT05GIGNodW5rIGhhbmRsaW5nLiBUaGUgY2hhbmdlcyBtb2RpZnkgY29yZSBTQ1RQIHN0YXRlIG1hY2hpbmUgbG9naWMgYW5kIGFzc29jaWF0aW9uIHRlYXJkb3duLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZSYjMzQ7LAogICAgJiMzNDtzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93biYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFNDVFAgcHJvdG9jb2wgc3RhY2sgcmVsYXRlZCB0byBBU0NPTkYgY2h1bmsgaGFuZGxpbmcuIFRoZSBjaGFuZ2VzIG1vZGlmeSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBsb2dpYyBhbmQgYXNzb2NpYXRpb24gdGVhcmRvd24sIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDU6MDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwNTowMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBieSBzZXR0aW5nIGBhc29jLVx1MDAzZWFkZGlwX2xhc3RfYXNjb25mYCB0byBOVUxMIGFmdGVyIGZyZWVpbmcgaXQsIGFuZCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcgYnkgYWRkaW5nIGEgTlVMTCBjaGVjayBmb3IgYGNodW5rYCBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdC4gVXNlLWFmdGVyLWZyZWUgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWdzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0b3JzLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjA1MGUzMWRiMzdkMWZhNWQ4NGRiMjE0Njk4NGRlNjgzZTA2ZGRjOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDkgMDU6MDA6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hc3NvY2lvbGEuYyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jCmluZGV4IDViMGFlNjE2ZTFmZjkuLjczN2Y4ZWE5ZDQ4MmYgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2Fzc29jaW9sYS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jCkBAIC0xNzEzLDYgJiM0MzsxNzEzLDggQEAgdm9pZCBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bihzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYykKIAlzY3RwX2Fzc29jX2ZyZWVfYXNjb25mX3F1ZXVlKGFzb2MpOwogCiAJLyogRnJlZSBhbnkgY2FjaGVkIEFTQ09ORiBjaHVuay4gKi8KLQlpZiAoYXNvYy0mZ3Q7YWRkaXBfbGFzdF9hc2NvbmYpCiYjNDM7CWlmIChhc29jLSZndDthZGRpcF9sYXN0X2FzY29uZikgewogCQlzY3RwX2NodW5rX2ZyZWUoYXNvYy0mZ3Q7YWRkaXBfbGFzdF9hc2NvbmYpOwomIzQzOwkJYXNvYy0mZ3Q7YWRkaXBfbGFzdF9hc2NvbmYgPSBOVUxMOwomIzQzOwl9CiB9CmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCmluZGV4IDcwOGZhMDdkNWZmZmMuLjNhOGUxNmIyOTY2MGMgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCkBAIC02MTQ1LDggJiM0Mzs2MTQ1LDEyIEBAIGVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZSgKIAkJCQkJc3RydWN0IHNjdHBfY21kX3NlcSAqY29tbWFuZHMpCiB7CiAJc3RydWN0IHNjdHBfY2h1bmsgKmNodW5rID0gYXNvYy0mZ3Q7YWRkaXBfbGFzdF9hc2NvbmY7Ci0Jc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQgPSBjaHVuay0mZ3Q7dHJhbnNwb3J0OwomIzQzOwlzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydDsKJiM0MzsKJiM0MzsJaWYgKCFjaHVuaykKJiM0MzsJCXJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0NPTlNVTUU7CiAKJiM0MzsJdHJhbnNwb3J0ID0gY2h1bmstJmd0O3RyYW5zcG9ydDsKIAlTQ1RQX0lOQ19TVEFUUyhuZXQsIFNDVFBfTUlCX1Q0X1JUT19FWFBJUkVEUyk7CiAKIAkvKiBBRERJUCA0LjEgQjEpIEluY3JlbWVudCB0aGUgZXJyb3IgY291bnRlcnMgYW5kIHBlcmZvcm0gcGF0aCBmYWlsdXJlCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwNTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA2CgkJCQkJCQlvdXRwdXQ6IDEzMgoJCQkJCQkJdGhvdWdodHM6IDQyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTQ1RQIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9zY3RwL2Fzc29jaW9sYS5jYCBhbmQgYG5ldC9zY3RwL3NtX3N0YXRlZnVucy5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIHRoZSBjb2RlIHNuaXBwZXRzLCBhbmQgSSB1bmRlcnN0YW5kIHRoZSBpbnRlbnQuIEluIGBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bmAsIHRoZXkmIzM5O3JlIGNsZWFuaW5nIHVwIHRoZSBgYWRkaXBfbGFzdF9hc2NvbmZgIHBvaW50ZXIuIFRoZSBvcmlnaW5hbCBjb2RlIGZyZWVzIHRoZSBjaHVuaywgYnV0IGNyaXRpY2FsbHksIGl0ICpkb2VzbiYjMzk7dCogbnVsbGlmeSB0aGUgcG9pbnRlci4gVGhhdCYjMzk7cyBhIHRleHRib29rIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLCBhbmQgYSBLQVNBTiBkZXRlY3RvciB3b3VsZCBmbGFnIHRoYXQgcXVpY2tseSwgd2hpY2ggaXMgd2h5IHRoZXkmIzM5O3JlIGZpeGluZyBpdCB3aXRoIHRoZSBhZGRlZCBudWxsIGFzc2lnbm1lbnQuIFBlcmZlY3QuCgpOb3csIGxvb2tpbmcgYXQgYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYCwgdGhlIHNhbWUgYGFkZGlwX2xhc3RfYXNjb25mYCBjaHVuayBpcyBiZWluZyBhY2Nlc3NlZCwgYnV0ICp3aXRob3V0KiB0aGUgbnVsbCBjaGVjay4gVGhhdCBjb3VsZCBsZWFkIHRvIGRlcmVmZXJlbmNpbmcgYSBkYW5nbGluZyBwb2ludGVyLCB3aGljaCBpcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcuIEFub3RoZXIgZWFzeSB3aW4gZm9yIEtBU0FOLCBvciBhIHN0YW5kYXJkIGtlcm5lbCBvb3BzLiBCdXQgaXQgaXMgc3RpbGwgY3JpdGljYWwgdG8gZml4LiBUaGUgcGF0Y2ggY29ycmVjdGx5IGFkZHMgYSBOVUxMIGNoZWNrIGJlZm9yZSB0cnlpbmcgdG8gYWNjZXNzIHRoZSBjaHVuayYjMzk7cyB0cmFuc3BvcnQuCgpTbywgaW4gZXNzZW5jZSwgdGhleSYjMzk7cmUgcGx1Z2dpbmcgdXAgdHdvIHByZXR0eSBzdHJhaWdodGZvcndhcmQgdnVsbmVyYWJpbGl0aWVzOiBhIHVzZS1hZnRlci1mcmVlIGFuZCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIGZpeCBpcyBjbGVhbjsgc2V0IHBvaW50ZXIgdG8gTlVMTCBhZnRlciBmcmVlIGFuZCBhZGQgTlVMTCBjaGVjayBiZWZvcmUgZGVyZWZlcmVuY2luZy4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaW4gcGxheSBoZXJlLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBuZWNlc3NhcnksIGFzIGNvbmZpcm1lZCBieSBteSBpbml0aWFsIGFzc2Vzc21lbnQuIFRoaXMgaXMgYSBzb2xpZCwgY2xlYW4gZml4LCBhZGRyZXNzaW5nIGEgY291cGxlIG9mIHdlbGwtdW5kZXJzdG9vZCBtZW1vcnkgc2FmZXR5IHByb2JsZW1zLiBHb29kIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA1OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHNldHRpbmcgYGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmZgIHRvIE5VTEwgYWZ0ZXIgZnJlZWluZyBpdCwgYW5kIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1ZyBieSBhZGRpbmcgYSBOVUxMIGNoZWNrIGZvciBgY2h1bmtgIGJlZm9yZSBkZXJlZmVyZW5jaW5nIGl0LiBVc2UtYWZ0ZXItZnJlZSBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1Z3MgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSBidWcgYnkgc2V0dGluZyBgYXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZmAgdG8gTlVMTCBhZnRlciBmcmVlaW5nIGl0LCBhbmQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnIGJ5IGFkZGluZyBhIE5VTEwgY2hlY2sgZm9yIGBjaHVua2AgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQuIFVzZS1hZnRlci1mcmVlIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVncyBhcmUgcmVsaWFibHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdG9ycy4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA1OjAwOjQyLjc2NTU1MjU4MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDMxMjY3MzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZVwiLFxuICAgIFwic2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25cIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHNldHRpbmcgYGFzb2MtXFx1MDAzZWFkZGlwX2xhc3RfYXNjb25mYCB0byBOVUxMIGFmdGVyIGZyZWVpbmcgaXQsIGFuZCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcgYnkgYWRkaW5nIGEgTlVMTCBjaGVjayBmb3IgYGNodW5rYCBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdC4gVXNlLWFmdGVyLWZyZWUgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWdzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0b3JzLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFNDVFAgcHJvdG9jb2wgc3RhY2sgcmVsYXRlZCB0byBBU0NPTkYgY2h1bmsgaGFuZGxpbmcuIFRoZSBjaGFuZ2VzIG1vZGlmeSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBsb2dpYyBhbmQgYXNzb2NpYXRpb24gdGVhcmRvd24sIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NDIuNzY1NTU3MzIyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDIwODY0NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmMDUwZTMxZGIzN2QxZmE1ZDg0ZGIyMTQ2OTg0ZGU2ODNlMDZkZGM4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDkgMDU6MDA6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMgYi9uZXQvc2N0cC9hc3NvY2lvbGEuY1xcbmluZGV4IDViMGFlNjE2ZTFmZjkuLjczN2Y4ZWE5ZDQ4MmYgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjdHAvYXNzb2Npb2xhLmNcXG4rKysgYi9uZXQvc2N0cC9hc3NvY2lvbGEuY1xcbkBAIC0xNzEzLDYgKzE3MTMsOCBAQCB2b2lkIHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxcbiBcXHRzY3RwX2Fzc29jX2ZyZWVfYXNjb25mX3F1ZXVlKGFzb2MpO1xcbiBcXG4gXFx0LyogRnJlZSBhbnkgY2FjaGVkIEFTQ09ORiBjaHVuay4gKi9cXG4tXFx0aWYgKGFzb2MtXFx1MDAzZWFkZGlwX2xhc3RfYXNjb25mKVxcbitcXHRpZiAoYXNvYy1cXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmYpIHtcXG4gXFx0XFx0c2N0cF9jaHVua19mcmVlKGFzb2MtXFx1MDAzZWFkZGlwX2xhc3RfYXNjb25mKTtcXG4rXFx0XFx0YXNvYy1cXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmYgPSBOVUxMO1xcbitcXHR9XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xcbmluZGV4IDcwOGZhMDdkNWZmZmMuLjNhOGUxNmIyOTY2MGMgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcXG4rKysgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xcbkBAIC02MTQ1LDggKzYxNDUsMTIgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlKFxcbiBcXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc2N0cF9jbWRfc2VxICpjb21tYW5kcylcXG4ge1xcbiBcXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmsgPSBhc29jLVxcdTAwM2VhZGRpcF9sYXN0X2FzY29uZjtcXG4tXFx0c3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQgPSBjaHVuay1cXHUwMDNldHJhbnNwb3J0O1xcbitcXHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydDtcXG4rXFxuK1xcdGlmICghY2h1bmspXFxuK1xcdFxcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0NPTlNVTUU7XFxuIFxcbitcXHR0cmFuc3BvcnQgPSBjaHVuay1cXHUwMDNldHJhbnNwb3J0O1xcbiBcXHRTQ1RQX0lOQ19TVEFUUyhuZXQsIFNDVFBfTUlCX1Q0X1JUT19FWFBJUkVEUyk7XFxuIFxcbiBcXHQvKiBBRERJUCA0LjEgQjEpIEluY3JlbWVudCB0aGUgZXJyb3IgY291bnRlcnMgYW5kIHBlcmZvcm0gcGF0aCBmYWlsdXJlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA1OjAwOjQzLjIwODUxMjk4NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI5OTQ3NTU1NTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZVwiLFxuICAgIFwic2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFNDVFAgcHJvdG9jb2wgc3RhY2sgcmVsYXRlZCB0byBBU0NPTkYgY2h1bmsgaGFuZGxpbmcuIFRoZSBjaGFuZ2VzIG1vZGlmeSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBsb2dpYyBhbmQgYXNzb2NpYXRpb24gdGVhcmRvd24sIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjA1MGUzMWRiMzdkMWZhNWQ4NGRiMjE0Njk4NGRlNjgzZTA2ZGRjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDkgMDU6MDA6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hc3NvY2lvbGEuYyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jXG5pbmRleCA1YjBhZTYxNmUxZmY5Li43MzdmOGVhOWQ0ODJmIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbisrKyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jXG5AQCAtMTcxMyw2ICsxNzEzLDggQEAgdm9pZCBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bihzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbiBcdHNjdHBfYXNzb2NfZnJlZV9hc2NvbmZfcXVldWUoYXNvYyk7XG4gXG4gXHQvKiBGcmVlIGFueSBjYWNoZWQgQVNDT05GIGNodW5rLiAqL1xuLVx0aWYgKGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmYpXG4rXHRpZiAoYXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZikge1xuIFx0XHRzY3RwX2NodW5rX2ZyZWUoYXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZik7XG4rXHRcdGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmYgPSBOVUxMO1xuK1x0fVxuIH1cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5pbmRleCA3MDhmYTA3ZDVmZmZjLi4zYThlMTZiMjk2NjBjIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbisrKyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5AQCAtNjE0NSw4ICs2MTQ1LDEyIEBAIGVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZShcbiBcdFx0XHRcdFx0c3RydWN0IHNjdHBfY21kX3NlcSAqY29tbWFuZHMpXG4ge1xuIFx0c3RydWN0IHNjdHBfY2h1bmsgKmNodW5rID0gYXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZjtcbi1cdHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqdHJhbnNwb3J0ID0gY2h1bmstXHUwMDNldHJhbnNwb3J0O1xuK1x0c3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQ7XG4rXG4rXHRpZiAoIWNodW5rKVxuK1x0XHRyZXR1cm4gU0NUUF9ESVNQT1NJVElPTl9DT05TVU1FO1xuIFxuK1x0dHJhbnNwb3J0ID0gY2h1bmstXHUwMDNldHJhbnNwb3J0O1xuIFx0U0NUUF9JTkNfU1RBVFMobmV0LCBTQ1RQX01JQl9UNF9SVE9fRVhQSVJFRFMpO1xuIFxuIFx0LyogQURESVAgNC4xIEIxKSBJbmNyZW1lbnQgdGhlIGVycm9yIGNvdW50ZXJzIGFuZCBwZXJmb3JtIHBhdGggZmFpbHVyZVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NDMuMjA4NTE0OTE2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA4NjQxMDgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipTQ1RQIEJ1ZyBGaXggQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AgYW5kIGBuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY2AuIFRoYXQgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIFNDVFAgYXNzb2NpYXRpb24gaGFuZGxpbmcgYW5kIHN0YXRlIG1hY2hpbmUgZnVuY3Rpb25zLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlLiBGcm9tIHRoZSBjb250ZXh0LCBpdCBsb29rcyBsaWtlIHRoZXJlJ3MgYSBtaXNzaW5nIGNoZWNrIGZvciBgYXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZmAgYmVpbmcgTlVMTCB3aXRoaW4gYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYC4gVGhlIHBhdGNoIGFkZHMgdGhhdCBjaGVjaywgYW5kIGFsc28gc2V0cyBgYXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZiA9IE5VTExgIGluIGBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bmAuXG5cbkJhc2ljYWxseSwgd2UncmUgbWFraW5nIHN1cmUgdGhhdCBgYWRkaXBfbGFzdF9hc2NvbmZgIGlzIGhhbmRsZWQgY29ycmVjdGx5IGR1cmluZyBhIHRlYXJkb3duLiBLbm93aW5nIHRoaXMsIGl0IGlzIGxpa2VseSB0aGUgZ29hbCBvZiB0aGUgcGF0Y2ggaXMgdG8gcHJldmVudCB0aGUgdGltZXIgZnJvbSBhdHRlbXB0aW5nIHRvIGRlcmVmZXJlbmNlIGEgZnJlZWQgcG9pbnRlci4gSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgbXkgYXR0ZW50aW9uIGhlcmUgb24gdGhhdCB0aW1lci5cblxuTm93LCBsZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duYCBhbmQgYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYC4gVGhlc2UgYXJlIGNvcmUgU0NUUCBmdW5jdGlvbnMsIGFuZCBiZWNhdXNlIFNDVFAgaXMgYSBmYWlybHkgY29tcGxpY2F0ZWQgcHJvdG9jb2wgYW5kIHRoaXMgaW52b2x2ZXMgdGhlIHN0YXRlIG1hY2hpbmUsIEknZCBzYXkgdGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3b3J0aCBmdXJ0aGVyIGludmVzdGlnYXRpb24gYW5kLCBsaWtlbHksIGZ1enppbmcuIEdpdmVuIHRoZSBjb3JlIG5ldHdvcmtpbmcgbmF0dXJlIG9mIFNDVFAsIGZpbmRpbmcgY29uZmlnIG9wdGlvbnMgaXMgdXN1YWxseSBhIG1hdHRlciBvZiBjaGVja2luZyBmb3IgYElQX1NDVFBgIGluIHRoZSBrZXJuZWwgY29uZmlncywgYnV0IEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gdGhhdCB3aXRoIGEgcXVpY2sgc2VhcmNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NDkuMjk0OTI4OTQ4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjgzODQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0NUUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWctNS1cXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXFxubmV0L3NjdHAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NDkuNDQxNzczNzQyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI1NjU3MzU1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIFNDVFAgQ29uZmlndXJhdGlvbiBQYXJhbWV0ZXJzKipcblxuQWxyaWdodCwgc28gdGhlIGZvY3VzIGlzIGRlZmluaXRlbHkgb24gYElQX1NDVFBgIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBlbGVtZW50LiBUaGF0J3MgbXkgc3RhcnRpbmcgcG9pbnQuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGUgY29uZmlndXJhdGlvbi4gTGV0J3MgZGVsdmUgaW50byB0aGVzZSBmdW5jdGlvbnM6IGBzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZWAgYW5kIGBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bmAuIFRoZSByZWFsIHF1ZXN0aW9uIGhlcmUgaXMgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIHRoZSBjb25maWd1cmF0aW9uLlxuXG5XaGF0IEknbSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGlzIHdoZXRoZXIgdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zIGFyZSBzdGF0aWNhbGx5IGRlZmluZWQgd2l0aGluIGEgbW9kdWxlIG9yIGlmIHRoZXkgYXJlIGV4cG9ydGVkL2dsb2JhbC4gSWYgdGhleSdyZSBnbG9iYWwsIEkgaGF2ZSB0byBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mIHRoZWlyIHBvdGVudGlhbCBtb2RpZmljYXRpb24gZnJvbSBvdXRzaWRlIHRoZSBtb2R1bGUsIHdoaWNoIGNvdWxkIGhhdmUgYSBzeXN0ZW0td2lkZSBlZmZlY3QuIENvbnZlcnNlbHksIGlmIHRoZXkgYXJlIGludGVybmFsLCB0aGVpciBpbXBhY3QgaXMgbGlrZWx5IGxvY2FsaXplZCwgYW5kIHRoYXQncyBhIGRpZmZlcmVudCBhbmFseXRpY2FsIGFwcHJvYWNoLiBUaGlzIGFsbCBib2lscyBkb3duIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgcmUtZW50cmFuY3kgaXNzdWVzIG9mIHRoZSBzeXN0ZW0gYWZ0ZXIgYSBjb25maWd1cmF0aW9uIGNoYW5nZS4gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgaW5mb3JtIGhvdyB0byBmdXJ0aGVyIGFuYWx5emUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gdnVsbmVyYWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg3LCJPdXRwdXRUb2tlbnMiOjc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NTMuNjk4MzUwMDYxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDAyNTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz02MDY4PWVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX3QyX3RpbWVyX2V4cGlyZShcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTYxMzgtICovXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM6NjEzOTplbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl90NF90aW1lcl9leHBpcmUoXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNjE0MC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM9NzU2PW90aGVyX2V2ZW50X3RhYmxlW1NDVFBfTlVNX09USEVSX1RZUEVTXVtTQ1RQX1NUQVRFX05VTV9TVEFURVNdID0ge1xcbi0tXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTg2My1cXHQvKiBTQ1RQX1NUQVRFX0VTVEFCTElTSEVEICovIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6ODY0OlxcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlKSwgXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy04NjUtXFx0LyogU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HICovIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NTMuNzQ1MzU1OTg2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODkzMjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9hc3NvY2lvbGEuYz0zMTQ9dm9pZCBzY3RwX2Fzc29jaWF0aW9uX2ZyZWUoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpXFxuLS1cXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0zODQtXFxubmV0L3NjdHAvYXNzb2Npb2xhLmM6Mzg1OlxcdHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duKGFzb2MpO1xcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTM4Ni1cXG4tLVxcbm5ldC9zY3RwL2Fzc29jaW9sYS5jPTE2ODY9c3RydWN0IHNjdHBfY2h1bmsgKnNjdHBfYXNzb2NfbG9va3VwX2FzY29uZl9hY2soXFxuLS1cXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0xNzA2LVxcbm5ldC9zY3RwL2Fzc29jaW9sYS5jOjE3MDc6dm9pZCBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bihzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0xNzA4LXtcXG4tLVxcbm5ldC9zY3RwL3NtX3NpZGVlZmZlY3QuYz0xMjc1PXN0YXRpYyBpbnQgc2N0cF9jbWRfaW50ZXJwcmV0ZXIoZW51bSBzY3RwX2V2ZW50X3R5cGUgZXZlbnRfdHlwZSxcXG4tLVxcbm5ldC9zY3RwL3NtX3NpZGVlZmZlY3QuYy0xNzg3LVxcdFxcdGNhc2UgU0NUUF9DTURfUFVSR0VfQVNDT05GX1FVRVVFOlxcbm5ldC9zY3RwL3NtX3NpZGVlZmZlY3QuYzoxNzg4OlxcdFxcdFxcdHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duKGFzb2MpO1xcbm5ldC9zY3RwL3NtX3NpZGVlZmZlY3QuYy0xNzg5LVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwNTowMDo1My43ODcyNTUzMzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzE0NDcyMzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBTQ1RQIEZ1bmN0aW9uIERlY2xhcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIHR3byBmdW5jdGlvbnMsIGBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bmAgYW5kIGBzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZWAuIFRoZSBpbml0aWFsIHBvaW50IGlzIHRoZXkncmUgYm90aCBub24tc3RhdGljLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgc3RhcnRpbmcgcG9pbnQuIFRoaXMgbWVhbnMgdGhleSBhcmUgbGlrZWx5IG1lYW50IHRvIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGVpciByZXNwZWN0aXZlIGNvbXBpbGF0aW9uIHVuaXRzLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgd2hlcmUgdGhleSBhcmUgZGVmaW5lZCwgc3RhcnRpbmcgd2l0aCBgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25gIGluIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AgYW5kIHRoZW4gYHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlYCBpbiBgbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNgLiBUaGUgcXVlc3Rpb24gaXMsIGFyZSB0aGV5IGFjdHVhbGx5IGV4cG9ydGVkIGdsb2JhbGx5LCBvciBqdXN0IHVzZWQgd2l0aGluIHRob3NlIHNwZWNpZmljIGZpbGVzPyBcblxuVGhlIGJlc3QgbmV4dCBzdGVwIHRvIGNvbmZpcm0gdGhlaXIgZXh0ZXJuYWwgYXZhaWxhYmlsaXR5IGlzIHRvIGNoZWNrIGZvciB0aGVpciBkZWNsYXJhdGlvbnMuIEknbGwgbmVlZCB0byBsb29rIGluIGBpbmNsdWRlL25ldC9zY3RwL3NjdHAuaGAsIG9yIGEgc2ltaWxhciBoZWFkZXIgZmlsZSB3aXRoaW4gdGhhdCBkaXJlY3RvcnksIHRvIHNlZSBpZiB0aGV5J3ZlIGJlZW4gZXhwbGljaXRseSBkZWNsYXJlZCBmb3IgZXh0ZXJuYWwgdXNlLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgY2xlYXJlc3QgaW5kaWNhdGlvbiBvZiB0aGVpciBpbnRlbmRlZCBzY29wZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAxMSwiT3V0cHV0VG9rZW5zIjo4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NTguNTAxNzI5NjI2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDA4NjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3NjdHAvc20uaD05NT1zY3RwX3N0YXRlX2ZuX3Qgc2N0cF9zZl90Ml90aW1lcl9leHBpcmU7XFxuaW5jbHVkZS9uZXQvc2N0cC9zbS5oOjk2OnNjdHBfc3RhdGVfZm5fdCBzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZTtcXG5pbmNsdWRlL25ldC9zY3RwL3NtLmgtOTctc2N0cF9zdGF0ZV9mbl90IHNjdHBfc2ZfdDVfdGltZXJfZXhwaXJlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwNTowMDo1OC41NDc3NDQzNzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDU5MjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oPTIxNTc9c3RydWN0IHNjdHBfY2h1bmsgKnNjdHBfYXNzb2NfbG9va3VwX2FzY29uZl9hY2soXFxuLS1cXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaC0yMTU5LVxcdFxcdFxcdFxcdFxcdF9fYmUzMiBzZXJpYWwpO1xcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oOjIxNjA6dm9pZCBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bihzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyk7XFxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmgtMjE2MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDA6NTguNTg5MjA4ODY3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MDU0ODQyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBTQ1RQIENvZGViYXNlKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgU0NUUCBjb2RlLiBCYXNlZCBvbiB0aGUgZmlsZSBwYXRocywgbXkgaW5pdGlhbCB0YXJnZXRzIGFyZSBkZWZpbml0ZWx5IGBpbmNsdWRlL25ldC9zY3RwL3NtLmhgIGFuZCBgaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmhgLiBUaGVzZSBoZWFkZXJzIGFyZSBnb2luZyB0byBiZSBrZXkgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHN0YXRlIG1hY2hpbmUgYW5kIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgYW5kIEkgY2FuIGJlIGZhaXJseSBjb25maWRlbnQgdGhhdCBmdW5jdGlvbnMgbGlrZSBgc2N0cF9zZl90NF90aW1lcl9leHBpcmVgIGFuZCBgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25gIGFyZSBnb2luZyB0byBwcm92aWRlIHVzZWZ1bCBlbnRyeSBwb2ludHMgZm9yIGludmVzdGlnYXRpb24uIFRoZXkgYXBwZWFyIHBhcnRpY3VsYXJseSByZWxldmFudCB0byB0aGUgY3VycmVudCBwcm9ibGVtLlxuXG5Ob3csIEkgbmVlZCB0byBjb25zaWRlciBjb25maWd1cmF0aW9uLiBJIGtub3cgU0NUUCBvdmVyYWxsIGlzIGdvdmVybmVkIGJ5IGBJUF9TQ1RQYCwgYnV0IG15IGNvbmNlcm4gaGVyZSBpcyBtb3JlIHNwZWNpZmljIHRvIEFTQ09ORiBmdW5jdGlvbmFsaXR5LiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIsIG1vcmUgZ3JhbnVsYXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIGl0cyBiZWhhdmlvci4gVGhlIG9idmlvdXMgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgYG5ldC9zY3RwL0tjb25maWdgLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBzeW1ib2xzIHJlbGF0ZWQgdG8gXCJBU0NPTkZcIiBvciBcIkFERElQXCIgdGhhdCBtaWdodCBiZSByZWxldmFudC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhYmlsaXR5IHN1cnJvdW5kaW5nIHRoaXMgZmVhdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcyMywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDE6MDMuMTk0Njk2NjYxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTk3MDkwNiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQVNDT05GfEFERElQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA1OjAxOjAzLjI0MDY3MzE2N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQ0NjA2MTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgU0NUUCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5SaWdodCwgc28gdGhlcmUncyBubyBkZWRpY2F0ZWQsIHN0YW5kLWFsb25lIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHNwZWNpZmljYWxseSBmb3IgdGhlIEFTQ09ORiAoQWRkcmVzcyBTcGVjaWZpYyBDb25maWd1cmF0aW9uKSBmZWF0dXJlIHdpdGhpbiB0aGUgS2NvbmZpZyBmb3IgdGhlIFNDVFAgaW1wbGVtZW50YXRpb24uIFRoYXQncyBhIGJpdCB1bnVzdWFsLiBJdCBpbXBsaWVzIEFTQ09ORiBpcyBsaWtlbHkgYnVuZGxlZCBkaXJlY3RseSB3aXRoaW4gdGhlIGxhcmdlciBTQ1RQIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBtYWtlIGEgbWVudGFsIG5vdGUgb2YgdGhhdCAtIHNvbWV0aW1lcyB0aGVzZSB0aGluZ3MgZ2V0IG1pc3NlZCwgYW5kIGEgZGVkaWNhdGVkIGNvbmZpZyBjYW4gbWFrZSB0aGluZ3MgbXVjaCBjbGVhcmVyLCBlc3BlY2lhbGx5IGZvciBzcGVjaWFsaXplZCB1c2UtY2FzZXMuXG5cbk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IHNjYW4gdGhyb3VnaCB0aGUgS2NvbmZpZyBoaWVyYXJjaHksIG9yIHBlcmhhcHMgbGV2ZXJhZ2UgbXkgSURFJ3Mgc2VhcmNoLCB0byBpZGVudGlmeSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBTQ1RQICpkb2VzKiBkZXBlbmQgb24uIFVuZGVyc3RhbmRpbmcgdGhvc2UgZGVwZW5kZW5jaWVzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBwaWN0dXJlIG9mIGhvdyBBU0NPTkYgaXMgY29udHJvbGxlZCwgaW5kaXJlY3RseSwgdGhyb3VnaCBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhvc2UgZGVwZW5kZW50IGNvbXBvbmVudHMuIEl0J3Mgb2Z0ZW4gdGhyb3VnaCB0aGUgaW50ZXJwbGF5IG9mIGEgZmV3IGJhc2UgY29uZmlndXJhdGlvbnMgdGhhdCB5b3UgZ2V0IHRoZSBmdW5jdGlvbmFsaXR5IHlvdSBuZWVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXhhY3Qga25vYnMgYW5kIGRpYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTQ3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDE6MDcuMjg1MjgyNTI4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQxODI2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9LY29uZmlnPTY9bWVudWNvbmZpZyBJUF9TQ1RQXFxubmV0L3NjdHAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG5uZXQvc2N0cC9LY29uZmlnOjg6XFx0ZGVwZW5kcyBvbiBJTkVUXFxubmV0L3NjdHAvS2NvbmZpZy05LVxcdHNlbGVjdCBDUllQVE9fTElCX1NIQTFcXG4tLVxcbm5ldC9zY3RwL0tjb25maWc9NDE9Y29uZmlnIFNDVFBfREJHX09CSkNOVFxcbm5ldC9zY3RwL0tjb25maWctNDItXFx0Ym9vbCBcXFwiU0NUUDogRGVidWcgb2JqZWN0IGNvdW50c1xcXCJcXG5uZXQvc2N0cC9LY29uZmlnOjQzOlxcdGRlcGVuZHMgb24gUFJPQ19GU1xcbm5ldC9zY3RwL0tjb25maWctNDQtXFx0aGVscFxcbi0tXFxubmV0L3NjdHAvS2NvbmZpZz03MD1jb25maWcgSU5FVF9TQ1RQX0RJQUdcXG5uZXQvc2N0cC9LY29uZmlnOjcxOlxcdGRlcGVuZHMgb24gSU5FVF9ESUFHXFxubmV0L3NjdHAvS2NvbmZpZy03Mi1cXHRkZWZfdHJpc3RhdGUgSU5FVF9ESUFHXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA1OjAxOjA3LjMzMTcwNDA5M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzQzMzI2NjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBTQ1RQIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgU0NUUCwgd2hpY2gsIG9mIGNvdXJzZSwgcmVsaWVzIG9uIGBJTkVUYCBiZWluZyBlbmFibGVkIOKAkyB0aGF0J3MgYSBnaXZlbiBmb3IgYW55IG5ldHdvcmtpbmctcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBUaGVyZWZvcmUsIHdlJ3JlIHJlYWxseSBvbmx5IGRlYWxpbmcgd2l0aCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIGBJUF9TQ1RQYCBpbiB0aGlzIGNhc2UuXG5cblRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIgc2VlbXMgdG8gYmUgdGhlc2UgdHdvIGZvY3VzIHN5bWJvbHM6IGBzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZWAgYW5kIGBzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93bmAuIExvb2tpbmcgaW50byB0aGVtLCB0aGUgZm9ybWVyIGlzIGFuIGV2ZW50IGhhbmRsZXIsIHdoaWNoIG1ha2VzIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGFuYWx5c2lzLiBgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25gLCBzZWVtcyB0byBhbHNvIGJlIGEgc29saWQgZm9jYWwgcG9pbnQuXG5cbkVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWUgd2l0aGluIHRoZSBTQ1RQIHByb3RvY29sIHN0YWNrLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBBU0NPTkYgY2h1bmsgaGFuZGxpbmcgbG9naWMuIFRoZSBjb2RlIHRvdWNoZXMgdGhlIGNvcmUgU0NUUCBzdGF0ZSBtYWNoaW5lIGxvZ2ljIGFuZCBhc3NvY2lhdGlvbiB0ZWFyZG93biBwcm9jZXNzZXMuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhvc2UgYXJlYXMsIGFzIHRoZXkncmUgYWx3YXlzIGNvbXBsZXggYW5kIHByb25lIHRvIHN1YnRsZSBidWdzLiBUaGUgZ29vZCBuZXdzIGlzLCBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb24sIHRoZXNlIGNoYW5nZXMgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIHZhbGlkYXRlIHRoZSBmaXggYW5kIHZlcmlmeSB0aGF0IHRoZSBmaXggaXMgc3RhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjcxLCJPdXRwdXRUb2tlbnMiOjEyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwNTowMToxMy4wNzUwMzM4OTdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTAzMjIzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlXCIsXG4gICAgXCJzY3RwX2FzY29uZl9xdWV1ZV90ZWFyZG93blwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciB1c2UtYWZ0ZXItZnJlZSBpbiB0aGUgU0NUUCBwcm90b2NvbCBzdGFjayByZWxhdGVkIHRvIEFTQ09ORiBjaHVuayBoYW5kbGluZy4gVGhlIGNoYW5nZXMgbW9kaWZ5IGNvcmUgU0NUUCBzdGF0ZSBtYWNoaW5lIGxvZ2ljIGFuZCBhc3NvY2lhdGlvbiB0ZWFyZG93biwgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3NmX3Q0X3RpbWVyX2V4cGlyZVwiLFxuICAgIFwic2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFNDVFAgcHJvdG9jb2wgc3RhY2sgcmVsYXRlZCB0byBBU0NPTkYgY2h1bmsgaGFuZGxpbmcuIFRoZSBjaGFuZ2VzIG1vZGlmeSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBsb2dpYyBhbmQgYXNzb2NpYXRpb24gdGVhcmRvd24sIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDE6MTMuMTU2MDcxNzg5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDQwNzM4MTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDU6MDE6MTMuMTU2NTk5MTI5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjgwNDAyMDc1MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHNldHRpbmcgYGFzb2MtXFx1MDAzZWFkZGlwX2xhc3RfYXNjb25mYCB0byBOVUxMIGFmdGVyIGZyZWVpbmcgaXQsIGFuZCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcgYnkgYWRkaW5nIGEgTlVMTCBjaGVjayBmb3IgYGNodW5rYCBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdC4gVXNlLWFmdGVyLWZyZWUgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWdzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0b3JzLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmMDUwZTMxZGIzN2QxZmE1ZDg0ZGIyMTQ2OTg0ZGU2ODNlMDZkZGM4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgOSAwNTowMDo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbmluZGV4IDViMGFlNjE2ZTFmZjkuLjczN2Y4ZWE5ZDQ4MmYgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9hc3NvY2lvbGEuY1xuKysrIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbkBAIC0xNzEzLDYgKzE3MTMsOCBAQCB2b2lkIHNjdHBfYXNjb25mX3F1ZXVlX3RlYXJkb3duKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxuIFx0c2N0cF9hc3NvY19mcmVlX2FzY29uZl9xdWV1ZShhc29jKTtcbiBcbiBcdC8qIEZyZWUgYW55IGNhY2hlZCBBU0NPTkYgY2h1bmsuICovXG4tXHRpZiAoYXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZilcbitcdGlmIChhc29jLVx1MDAzZWFkZGlwX2xhc3RfYXNjb25mKSB7XG4gXHRcdHNjdHBfY2h1bmtfZnJlZShhc29jLVx1MDAzZWFkZGlwX2xhc3RfYXNjb25mKTtcbitcdFx0YXNvYy1cdTAwM2VhZGRpcF9sYXN0X2FzY29uZiA9IE5VTEw7XG4rXHR9XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbmluZGV4IDcwOGZhMDdkNWZmZmMuLjNhOGUxNmIyOTY2MGMgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xuKysrIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbkBAIC02MTQ1LDggKzYxNDUsMTIgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfdDRfdGltZXJfZXhwaXJlKFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc2N0cF9jbWRfc2VxICpjb21tYW5kcylcbiB7XG4gXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmsgPSBhc29jLVx1MDAzZWFkZGlwX2xhc3RfYXNjb25mO1xuLVx0c3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQgPSBjaHVuay1cdTAwM2V0cmFuc3BvcnQ7XG4rXHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydDtcbitcbitcdGlmICghY2h1bmspXG4rXHRcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0NPTlNVTUU7XG4gXG4rXHR0cmFuc3BvcnQgPSBjaHVuay1cdTAwM2V0cmFuc3BvcnQ7XG4gXHRTQ1RQX0lOQ19TVEFUUyhuZXQsIFNDVFBfTUlCX1Q0X1JUT19FWFBJUkVEUyk7XG4gXG4gXHQvKiBBRERJUCA0LjEgQjEpIEluY3JlbWVudCB0aGUgZXJyb3IgY291bnRlcnMgYW5kIHBlcmZvcm0gcGF0aCBmYWlsdXJlXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwNTowMToxMy4xNTY2MDAwMzhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA0MDE4ODU3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTQ1RQIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AgYW5kIGBuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY2AuIEltbWVkaWF0ZWx5LCBJIHNlZSB0aGUgY29kZSBzbmlwcGV0cywgYW5kIEkgdW5kZXJzdGFuZCB0aGUgaW50ZW50LiBJbiBgc2N0cF9hc2NvbmZfcXVldWVfdGVhcmRvd25gLCB0aGV5J3JlIGNsZWFuaW5nIHVwIHRoZSBgYWRkaXBfbGFzdF9hc2NvbmZgIHBvaW50ZXIuIFRoZSBvcmlnaW5hbCBjb2RlIGZyZWVzIHRoZSBjaHVuaywgYnV0IGNyaXRpY2FsbHksIGl0ICpkb2Vzbid0KiBudWxsaWZ5IHRoZSBwb2ludGVyLiBUaGF0J3MgYSB0ZXh0Ym9vayB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbywgYW5kIGEgS0FTQU4gZGV0ZWN0b3Igd291bGQgZmxhZyB0aGF0IHF1aWNrbHksIHdoaWNoIGlzIHdoeSB0aGV5J3JlIGZpeGluZyBpdCB3aXRoIHRoZSBhZGRlZCBudWxsIGFzc2lnbm1lbnQuIFBlcmZlY3QuXG5cbk5vdywgbG9va2luZyBhdCBgc2N0cF9zZl90NF90aW1lcl9leHBpcmVgLCB0aGUgc2FtZSBgYWRkaXBfbGFzdF9hc2NvbmZgIGNodW5rIGlzIGJlaW5nIGFjY2Vzc2VkLCBidXQgKndpdGhvdXQqIHRoZSBudWxsIGNoZWNrLiBUaGF0IGNvdWxkIGxlYWQgdG8gZGVyZWZlcmVuY2luZyBhIGRhbmdsaW5nIHBvaW50ZXIsIHdoaWNoIGlzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1Zy4gQW5vdGhlciBlYXN5IHdpbiBmb3IgS0FTQU4sIG9yIGEgc3RhbmRhcmQga2VybmVsIG9vcHMuIEJ1dCBpdCBpcyBzdGlsbCBjcml0aWNhbCB0byBmaXguIFRoZSBwYXRjaCBjb3JyZWN0bHkgYWRkcyBhIE5VTEwgY2hlY2sgYmVmb3JlIHRyeWluZyB0byBhY2Nlc3MgdGhlIGNodW5rJ3MgdHJhbnNwb3J0LlxuXG5TbywgaW4gZXNzZW5jZSwgdGhleSdyZSBwbHVnZ2luZyB1cCB0d28gcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCB2dWxuZXJhYmlsaXRpZXM6IGEgdXNlLWFmdGVyLWZyZWUgYW5kIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLiBUaGUgZml4IGlzIGNsZWFuOyBzZXQgcG9pbnRlciB0byBOVUxMIGFmdGVyIGZyZWUgYW5kIGFkZCBOVUxMIGNoZWNrIGJlZm9yZSBkZXJlZmVyZW5jaW5nLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbiBwbGF5IGhlcmUuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IG5lY2Vzc2FyeSwgYXMgY29uZmlybWVkIGJ5IG15IGluaXRpYWwgYXNzZXNzbWVudC4gVGhpcyBpcyBhIHNvbGlkLCBjbGVhbiBmaXgsIGFkZHJlc3NpbmcgYSBjb3VwbGUgb2Ygd2VsbC11bmRlcnN0b29kIG1lbW9yeSBzYWZldHkgcHJvYmxlbXMuIEdvb2Qgd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwNiwiT3V0cHV0VG9rZW5zIjoxMzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwNTowMToyMS4xOTY3OTEzMjlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGJ5IHNldHRpbmcgYGFzb2MtXFx1MDAzZWFkZGlwX2xhc3RfYXNjb25mYCB0byBOVUxMIGFmdGVyIGZyZWVpbmcgaXQsIGFuZCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWcgYnkgYWRkaW5nIGEgTlVMTCBjaGVjayBmb3IgYGNodW5rYCBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdC4gVXNlLWFmdGVyLWZyZWUgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBidWdzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0b3JzLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBieSBzZXR0aW5nIGBhc29jLVxcdTAwM2VhZGRpcF9sYXN0X2FzY29uZmAgdG8gTlVMTCBhZnRlciBmcmVlaW5nIGl0LCBhbmQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnIGJ5IGFkZGluZyBhIE5VTEwgY2hlY2sgZm9yIGBjaHVua2AgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQuIFVzZS1hZnRlci1mcmVlIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVncyBhcmUgcmVsaWFibHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdG9ycy4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cchc[1] Phase: Succeeded StartedAt: 2026-08-09 05:01:32 +0000 UTC FinishedAt: 2026-08-09 05:01:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-09 05:01:32 +0000 UTC FinishedAt: 2026-08-09 05:01:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2] Phase: Succeeded StartedAt: 2026-08-09 05:01:32 +0000 UTC FinishedAt: 2026-08-09 08:42:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-09 05:01:32 +0000 UTC FinishedAt: 2026-08-09 08:42:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-09 05:01:32 +0000 UTC FinishedAt: 2026-08-09 05:01:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-09 05:01:32 +0000 UTC FinishedAt: 2026-08-09 05:01:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4cchc/series-workflow4cchc-convert-artifact-3229499982/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-09 05:01:42 +0000 UTC FinishedAt: 2026-08-09 05:18:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-09 05:01:42 +0000 UTC FinishedAt: 2026-08-09 05:18:17 +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:*c8a46dd9-16f6-4148-b08c-09345fae76ee,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-workflow4cchc/series-workflow4cchc-convert-artifact-3229499982/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": "f6854510-0dc6-493b-87c9-9ef094bee0f3", "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-workflow4cchc/series-workflow4cchc-build-action-696560308/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-09 05:01:42 +0000 UTC FinishedAt: 2026-08-09 05:18:07 +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:*c8a46dd9-16f6-4148-b08c-09345fae76ee,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-workflow4cchc/series-workflow4cchc-convert-artifact-3229499982/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": "f6854510-0dc6-493b-87c9-9ef094bee0f3", "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-workflow4cchc/series-workflow4cchc-build-action-696560308/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-09 05:18:17 +0000 UTC FinishedAt: 2026-08-09 05:18:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-09 05:18:17 +0000 UTC FinishedAt: 2026-08-09 05:18:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-09 05:18:17 +0000 UTC FinishedAt: 2026-08-09 05:18:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-09 05:18:17 +0000 UTC FinishedAt: 2026-08-09 05:18:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4cchc/series-workflow4cchc-convert-artifact-2129348673/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-09 05:18:27 +0000 UTC FinishedAt: 2026-08-09 05:20:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-09 05:18:27 +0000 UTC FinishedAt: 2026-08-09 05:20:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f6854510-0dc6-493b-87c9-9ef094bee0f3,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-workflow4cchc/series-workflow4cchc-build-action-696560308/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-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-09 05:20:59 +0000 UTC FinishedAt: 2026-08-09 05:20:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-09 05:20:59 +0000 UTC FinishedAt: 2026-08-09 05:20:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-09 05:20:59 +0000 UTC FinishedAt: 2026-08-09 05:37:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-09 05:20:59 +0000 UTC FinishedAt: 2026-08-09 05:37:54 +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:*c8a46dd9-16f6-4148-b08c-09345fae76ee,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-workflow4cchc/series-workflow4cchc-convert-artifact-2129348673/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": "02dd1bdf-cc87-45d4-a2e3-01749063b80c", "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-workflow4cchc/series-workflow4cchc-build-action-617439693/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-09 05:20:59 +0000 UTC FinishedAt: 2026-08-09 05:37:44 +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:*c8a46dd9-16f6-4148-b08c-09345fae76ee,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-workflow4cchc/series-workflow4cchc-convert-artifact-2129348673/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": "02dd1bdf-cc87-45d4-a2e3-01749063b80c", "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-workflow4cchc/series-workflow4cchc-build-action-617439693/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-09 05:37:54 +0000 UTC FinishedAt: 2026-08-09 05:37:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-09 05:37:54 +0000 UTC FinishedAt: 2026-08-09 05:37:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-09 05:37:54 +0000 UTC FinishedAt: 2026-08-09 05:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-09 05:37:54 +0000 UTC FinishedAt: 2026-08-09 05:39:24 +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:*02dd1bdf-cc87-45d4-a2e3-01749063b80c,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-workflow4cchc/series-workflow4cchc-build-action-617439693/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-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-09 05:39:34 +0000 UTC FinishedAt: 2026-08-09 08:42:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-09 05:39:34 +0000 UTC FinishedAt: 2026-08-09 08:42:07 +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":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"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:*f6854510-0dc6-493b-87c9-9ef094bee0f3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*02dd1bdf-cc87-45d4-a2e3-01749063b80c,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-workflow4cchc/series-workflow4cchc-build-action-696560308/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-workflow4cchc/series-workflow4cchc-build-action-617439693/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-09 05:39:34 +0000 UTC FinishedAt: 2026-08-09 05:39:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-09 05:39:34 +0000 UTC FinishedAt: 2026-08-09 05:39:38 +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":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"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-workflow4cchc/series-workflow4cchc-convert-artifact-3599463382/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-09 05:39:34 +0000 UTC FinishedAt: 2026-08-09 05:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-09 05:39:34 +0000 UTC FinishedAt: 2026-08-09 05:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-09 05:39:34 +0000 UTC FinishedAt: 2026-08-09 05:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-09 05:39:44 +0000 UTC FinishedAt: 2026-08-09 08:42:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cchc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_sf_t4_timer_expire","sctp_asconf_queue_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"97a9eca7-41e9-48ee-b8fd-34e378ad1442","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-09 05:39:44 +0000 UTC FinishedAt: 2026-08-09 08:41:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f6854510-0dc6-493b-87c9-9ef094bee0f3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*02dd1bdf-cc87-45d4-a2e3-01749063b80c,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-workflow4cchc/series-workflow4cchc-build-action-696560308/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-workflow4cchc/series-workflow4cchc-build-action-617439693/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-workflow4cchc/series-workflow4cchc-convert-artifact-3599463382/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,}