Name: series-workflowpb5nq Phase: Failed StartedAt: 2026-07-01 08:57:24 +0000 UTC FinishedAt: 2026-07-01 09:10:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpb5nq[0] Phase: Succeeded StartedAt: 2026-07-01 08:57:24 +0000 UTC FinishedAt: 2026-07-01 09:09:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpb5nq[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 08:57:25 +0000 UTC FinishedAt: 2026-07-01 09:09:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA5OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGFuIG9wZW4tY29kZWQgZnVuY3Rpb24gcG9pbnRlciBzdWJ0cmFjdGlvbiB3aXRoIHRoZSBlcXVpdmFsZW50IEJQRl9DQUxMX0lNTSBtYWNyby4gU2luY2UgR0NDIHRyZWF0cyB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIGFzIDEgYnl0ZSAoc2FtZSBhcyB2b2lkKSwgdGhlIGNvbXB1dGVkIGJ5dGUgb2Zmc2V0IGlzIGlkZW50aWNhbC4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDk6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ZjVkNDg2ZDRlZDQxZmEwOGUxYTNlMWQ2ZGE0OWZlODc0NmQ0MDQwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAwOTowODoxNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2ZpeHVwcy5jIGIva2VybmVsL2JwZi9maXh1cHMuY1xuaW5kZXggM2NmMmNjNmUzYWI2NmEuLjEyYThhNGViNzU3ZjE4IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9maXh1cHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9maXh1cHMuY1xuQEAgLTIzMzgsNyAmIzQzOzIzMzgsNyBAQCBpbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gXHRcdFx0XHQgICAgIGZ1bmNfaWRfbmFtZShpbnNuLVx1MDAzZWltbSksIGluc24tXHUwMDNlaW1tKTtcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdFx0fVxuLVx0XHRpbnNuLVx1MDAzZWltbSA9IGZuLVx1MDAzZWZ1bmMgLSBfX2JwZl9jYWxsX2Jhc2U7XG4mIzQzO1x0XHRpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShmbi1cdTAwM2VmdW5jKTtcbiBuZXh0X2luc246XG4gXHRcdGlmIChzdWJwcm9nc1tjdXJfc3VicHJvZyAmIzQzOyAxXS5zdGFydCA9PSBpICYjNDM7IGRlbHRhICYjNDM7IDEpIHtcbiBcdFx0XHRzdWJwcm9nc1tjdXJfc3VicHJvZ10uc3RhY2tfZGVwdGggJiM0Mzs9IHN0YWNrX2RlcHRoX2V4dHJhO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA5OjA4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGFuIG9wZW4tY29kZWQgZnVuY3Rpb24gcG9pbnRlciBzdWJ0cmFjdGlvbiB3aXRoIHRoZSBlcXVpdmFsZW50IEJQRl9DQUxMX0lNTSBtYWNyby4gU2luY2UgR0NDIHRyZWF0cyB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIGFzIDEgYnl0ZSAoc2FtZSBhcyB2b2lkKSwgdGhlIGNvbXB1dGVkIGJ5dGUgb2Zmc2V0IGlzIGlkZW50aWNhbC4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDRmNWQ0ODZkNGVkNDFmYTA4ZTFhM2UxZDZkYTQ5ZmU4NzQ2ZDQwNDAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDA5OjA4OjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9maXh1cHMuYyBiL2tlcm5lbC9icGYvZml4dXBzLmMKaW5kZXggM2NmMmNjNmUzYWI2NmEuLjEyYThhNGViNzU3ZjE4IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2ZpeHVwcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvZml4dXBzLmMKQEAgLTIzMzgsNyAmIzQzOzIzMzgsNyBAQCBpbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiAJCQkJICAgICBmdW5jX2lkX25hbWUoaW5zbi0mZ3Q7aW1tKSwgaW5zbi0mZ3Q7aW1tKTsKIAkJCXJldHVybiAtRUZBVUxUOwogCQl9Ci0JCWluc24tJmd0O2ltbSA9IGZuLSZndDtmdW5jIC0gX19icGZfY2FsbF9iYXNlOwomIzQzOwkJaW5zbi0mZ3Q7aW1tID0gQlBGX0NBTExfSU1NKGZuLSZndDtmdW5jKTsKIG5leHRfaW5zbjoKIAkJaWYgKHN1YnByb2dzW2N1cl9zdWJwcm9nICYjNDM7IDFdLnN0YXJ0ID09IGkgJiM0MzsgZGVsdGEgJiM0MzsgMSkgewogCQkJc3VicHJvZ3NbY3VyX3N1YnByb2ddLnN0YWNrX2RlcHRoICYjNDM7PSBzdGFja19kZXB0aF9leHRyYTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDk6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgQlBGIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYC4gSXQgc2VlbXMgbGlrZSB0aGV5JiMzOTt2ZSBjaGFuZ2VkIHRoZSBpbW1lZGlhdGUgdmFsdWUgYXNzaWdubWVudCB3aXRoaW4gYGJwZl9kb19taXNjX2ZpeHVwc2AgZm9yIEJQRiBjYWxscy4gU3BlY2lmaWNhbGx5LCB0aGUgb2xkIGNvZGUgZGlyZWN0bHkgc3VidHJhY3RlZCBhIGJhc2UgYWRkcmVzcyAoYF9fYnBmX2NhbGxfYmFzZWApIGZyb20gdGhlIGZ1bmN0aW9uIHBvaW50ZXIgKGBmbi0mZ3Q7ZnVuY2ApLCB3aGlsZSB0aGUgbmV3IGNvZGUgaXMgdXNpbmcgYSBtYWNybywgYEJQRl9DQUxMX0lNTWAsIGFwcGxpZWQgdG8gdGhhdCBzYW1lIGZ1bmN0aW9uIHBvaW50ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgY2hhbmdlIHdhcyBtYWRlLiBXYXMgaXQgYSBzaW1wbGUgc3R5bGlzdGljIGNoYW5nZSwgb3IgZG9lcyB0aGlzIGBCUEZfQ0FMTF9JTU1gIG1hY3JvIGludHJvZHVjZSBzb21lIGFkZGl0aW9uYWwgYmVoYXZpb3Igb3IgbGF5ZXIgb2YgYWJzdHJhY3Rpb24/IFRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGltcGFjdCwgSSBuZWVkIHRvIGRpZyBpbnRvIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCBhbmQgZmlndXJlIG91dCB3aGF0IHRoaXMgYEJQRl9DQUxMX0lNTWAgbWFjcm8gZXhwYW5kcyB0by4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGludGVudCBhbmQgaW1wbGljYXRpb25zIG9mIHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDk6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX0NBTExfSU1NJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9maXh1cHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2ZpeHVwcy5jPTg4PXN0YXRpYyBpbnQgc2V0X2tmdW5jX2Rlc2NfaW1tKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfZGVzYyAqZGVzYylcbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTk0LVx0fSBlbHNlIHtcbmtlcm5lbC9icGYvZml4dXBzLmM6OTU6XHRcdGNhbGxfaW1tID0gQlBGX0NBTExfSU1NKGRlc2MtXHUwMDNlYWRkcik7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTk2LVx0XHQvKiBDaGVjayB3aGV0aGVyIHRoZSByZWxhdGl2ZSBvZmZzZXQgb3ZlcmZsb3dzIGRlc2MtXHUwMDNlaW1tICovXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYz0xMDI4PXN0YXRpYyBpbnQgaml0X3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0xMTg4LVx0XHRcdHN1YnByb2cgPSBpbnNuLVx1MDAzZW9mZjtcbmtlcm5lbC9icGYvZml4dXBzLmM6MTE4OTpcdFx0XHRpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShmdW5jW3N1YnByb2ddLVx1MDAzZWJwZl9mdW5jKTtcbmtlcm5lbC9icGYvZml4dXBzLmMtMTE5MC1cdFx0fVxuLS1cbmtlcm5lbC9icGYvZml4dXBzLmM9MTQ4MT1pbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0yMDQ3LVx0XHRcdGNhc2UgQlBGX0ZVTkNfbWFwX2xvb2t1cF9lbGVtOlxua2VybmVsL2JwZi9maXh1cHMuYzoyMDQ4Olx0XHRcdFx0aW5zbi1cdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVx1MDAzZW1hcF9sb29rdXBfZWxlbSk7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNDktXHRcdFx0XHRnb3RvIG5leHRfaW5zbjtcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA1MC1cdFx0XHRjYXNlIEJQRl9GVU5DX21hcF91cGRhdGVfZWxlbTpcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA1MTpcdFx0XHRcdGluc24tXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKG9wcy1cdTAwM2VtYXBfdXBkYXRlX2VsZW0pO1xua2VybmVsL2JwZi9maXh1cHMuYy0yMDUyLVx0XHRcdFx0Z290byBuZXh0X2luc247XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNTMtXHRcdFx0Y2FzZSBCUEZfRlVOQ19tYXBfZGVsZXRlX2VsZW06XG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIwNTQ6XHRcdFx0XHRpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShvcHMtXHUwMDNlbWFwX2RlbGV0ZV9lbGVtKTtcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA1NS1cdFx0XHRcdGdvdG8gbmV4dF9pbnNuO1xua2VybmVsL2JwZi9maXh1cHMuYy0yMDU2LVx0XHRcdGNhc2UgQlBGX0ZVTkNfbWFwX3B1c2hfZWxlbTpcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA1NzpcdFx0XHRcdGluc24tXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKG9wcy1cdTAwM2VtYXBfcHVzaF9lbGVtKTtcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA1OC1cdFx0XHRcdGdvdG8gbmV4dF9pbnNuO1xua2VybmVsL2JwZi9maXh1cHMuYy0yMDU5LVx0XHRcdGNhc2UgQlBGX0ZVTkNfbWFwX3BvcF9lbGVtOlxua2VybmVsL2JwZi9maXh1cHMuYzoyMDYwOlx0XHRcdFx0aW5zbi1cdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVx1MDAzZW1hcF9wb3BfZWxlbSk7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNjEtXHRcdFx0XHRnb3RvIG5leHRfaW5zbjtcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA2Mi1cdFx0XHRjYXNlIEJQRl9GVU5DX21hcF9wZWVrX2VsZW06XG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIwNjM6XHRcdFx0XHRpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShvcHMtXHUwMDNlbWFwX3BlZWtfZWxlbSk7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNjQtXHRcdFx0XHRnb3RvIG5leHRfaW5zbjtcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA2NS1cdFx0XHRjYXNlIEJQRl9GVU5DX3JlZGlyZWN0X21hcDpcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA2NjpcdFx0XHRcdGluc24tXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKG9wcy1cdTAwM2VtYXBfcmVkaXJlY3QpO1xua2VybmVsL2JwZi9maXh1cHMuYy0yMDY3LVx0XHRcdFx0Z290byBuZXh0X2luc247XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNjgtXHRcdFx0Y2FzZSBCUEZfRlVOQ19mb3JfZWFjaF9tYXBfZWxlbTpcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA2OTpcdFx0XHRcdGluc24tXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKG9wcy1cdTAwM2VtYXBfZm9yX2VhY2hfY2FsbGJhY2spO1xua2VybmVsL2JwZi9maXh1cHMuYy0yMDcwLVx0XHRcdFx0Z290byBuZXh0X2luc247XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNzEtXHRcdFx0Y2FzZSBCUEZfRlVOQ19tYXBfbG9va3VwX3BlcmNwdV9lbGVtOlxua2VybmVsL2JwZi9maXh1cHMuYzoyMDcyOlx0XHRcdFx0aW5zbi1cdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVx1MDAzZW1hcF9sb29rdXBfcGVyY3B1X2VsZW0pO1xua2VybmVsL2JwZi9maXh1cHMuYy0yMDczLVx0XHRcdFx0Z290byBuZXh0X2luc247XG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0yMzQwLVx0XHR9XG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIzNDE6XHRcdGluc24tXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKGZuLVx1MDAzZWZ1bmMpO1xua2VybmVsL2JwZi9maXh1cHMuYy0yMzQyLW5leHRfaW5zbjpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwOTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDA2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIGBCUEZfQ0FMTF9JTU1gKioKCk9rYXksIGhvbGQgb24gYSBtaW51dGUuIGBCUEZfQ0FMTF9JTU1gLi4uIHRoYXQmIzM5O3MgYSBtYWNybywgaXNuJiMzOTt0IGl0PyBSaWdodC4gTWFjcm9zIGFyZSBqdXN0IGdsb3JpZmllZCB0ZXh0IHJlcGxhY2VtZW50cywgd2hpY2ggbWVhbnMgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBpdCBhY3R1YWxseSBleHBhbmRzIHRvLiBJdOKAmXMgbm90IGdvaW5nIHRvIHRlbGwgbWUgYW55dGhpbmcgdXNlZnVsIHVudGlsIEkgcmVzb2x2ZSB3aGF0IHRoZSB1bmRlcmx5aW5nIGNvZGUgaXMgZG9pbmcuIEkgbmVlZCB0byB0cmFjayBkb3duIGl0cyBkZWZpbml0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIHRydWUgaW50ZW50IGhlcmUuIFRpbWUgdG8gZ28gaHVudGluZyBmb3Igd2hlcmUgdGhpcyBtYWNybyBsaXZlcy4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgc291cmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA5OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgQlBGX0NBTExfSU1NJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZmlsdGVyLmg9MjU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpbnNuX2lzX2Nhc3RfdXNlcihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC00NjYtXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjQ2NzojZGVmaW5lIEJQRl9DQUxMX0lNTSh4KVx0KCh2b2lkICopKHgpIC0gKHZvaWQgKilfX2JwZl9jYWxsX2Jhc2UpXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTQ2OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwOTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzAyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEJQRiBjb2RlIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTt2ZSByZXBsYWNlZCBgLSBpbnNuLSZndDtpbW0gPSBmbi0mZ3Q7ZnVuYyAtIF9fYnBmX2NhbGxfYmFzZTtgIHdpdGggYCYjNDM7IGluc24tJmd0O2ltbSA9IEJQRl9DQUxMX0lNTShmbi0mZ3Q7ZnVuYyk7YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1dlbGwsIHRoYXQmIzM5O3MganVzdCBhIG1hY3JvIHN1YnN0aXR1dGlvbi4gYEJQRl9DQUxMX0lNTSh4KWAgaXMgZGVmaW5lZCBhcyBgKCh2b2lkICopKHgpIC0gKHZvaWQgKilfX2JwZl9jYWxsX2Jhc2UpYCwgd2hpY2ggZXhwYW5kcyB0byB0aGUgZXhhY3Qgc2FtZSBjYWxjdWxhdGlvbiBhcyB0aGUgb2xkIGNvZGUuIFNvLCB0aGUgZWZmZWN0IGlzIHByb2JhYmx5IG51bGwuIEl0JiMzOTtzIGp1c3QgYSBzdHlsaXN0aWMgY2hhbmdlLCBwZXJoYXBzIGZvciByZWFkYWJpbGl0eSwgYnV0IGZ1bmN0aW9uYWxseSBpZGVudGljYWwsIHdoaWNoLCBpZiB0cnVlLCBpcyBub3QgYSB2ZXJ5IGV4Y2l0aW5nIGNoYW5nZS4KCldhaXQgYSBzZWNvbmQsIGBmbi0mZ3Q7ZnVuY2AgaXMgYSBmdW5jdGlvbiBwb2ludGVyLCBpc24mIzM5O3QgaXQ/IE9rYXksIEkgd2FudCB0byBjb25maXJtIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIHNvbWV0aGluZy4gTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIHR5cGUgb2YgYGZuLSZndDtmdW5jYC4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBtYWNybyBpcyBhY3R1YWxseSBkb2luZyB3aGF0IGl0IHNheXMgaXQgaXMsIGFuZCBpcyB0eXBlLXNhZmUuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwOTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmLmg9OTYyPXN0YXRpY19hc3NlcnQoX19CUEZfUkVUX1RZUEVfTUFYIFx1MDAzYz0gQlBGX0JBU0VfVFlQRV9MSU1JVCk7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC05NjctICovXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjk2ODpzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8ge1xuaW5jbHVkZS9saW51eC9icGYuaC05NjktXHR1NjQgKCpmdW5jKSh1NjQgcjEsIHU2NCByMiwgdTY0IHIzLCB1NjQgcjQsIHU2NCByNSk7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0xMTQyPXN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIHtcbmluY2x1ZGUvbGludXgvYnBmLmgtMTE0My1cdC8qIHJldHVybiBlQlBGIGZ1bmN0aW9uIHByb3RvdHlwZSBmb3IgdmVyaWZpY2F0aW9uICovXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjExNDQ6XHRjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKlxuaW5jbHVkZS9saW51eC9icGYuaC0xMTQ1LVx0KCpnZXRfZnVuY19wcm90bykoZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MjQ1Nj1pbnQgYnBmX3Byb2dfY2FsY190YWcoc3RydWN0IGJwZl9wcm9nICpmcCk7XG5pbmNsdWRlL2xpbnV4L2JwZi5oLTI0NTctXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjI0NTg6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICpicGZfZ2V0X3RyYWNlX3ByaW50a19wcm90byh2b2lkKTtcbmluY2x1ZGUvbGludXgvYnBmLmg6MjQ1OTpjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKmJwZl9nZXRfdHJhY2VfdnByaW50a19wcm90byh2b2lkKTtcbmluY2x1ZGUvbGludXgvYnBmLmgtMjQ2MC1cbmluY2x1ZGUvbGludXgvYnBmLmg6MjQ2MTpjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKmJwZl9nZXRfcGVyZl9ldmVudF9yZWFkX3ZhbHVlX3Byb3RvKHZvaWQpO1xuaW5jbHVkZS9saW51eC9icGYuaC0yNDYyLVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9Mjk2OT10eXBlZGVmIGludCAoKmJwZl9pdGVyX2ZpbGxfbGlua19pbmZvX3QpKGNvbnN0IHN0cnVjdCBicGZfaXRlcl9hdXhfaW5mbyAqYXV4LFxuaW5jbHVkZS9saW51eC9icGYuaC0yOTcwLVx0XHRcdFx0XHQgc3RydWN0IGJwZl9saW5rX2luZm8gKmluZm8pO1xuaW5jbHVkZS9saW51eC9icGYuaDoyOTcxOnR5cGVkZWYgY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICpcbmluY2x1ZGUvbGludXgvYnBmLmgtMjk3Mi0oKmJwZl9pdGVyX2dldF9mdW5jX3Byb3RvX3QpKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCxcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTMwMDg9aW50IGJwZl9pdGVyX3Byb2dfc3VwcG9ydGVkKHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjMwMDk6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICpcbmluY2x1ZGUvbGludXgvYnBmLmgtMzAxMC1icGZfaXRlcl9nZXRfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0zMTY3PXN0cnVjdCBicGZfbGluayAqYnBmX2xpbmtfYnlfaWQodTMyIGlkKTtcbmluY2x1ZGUvbGludXgvYnBmLmgtMzE2OC1cbmluY2x1ZGUvbGludXgvYnBmLmg6MzE2OTpjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKmJwZl9iYXNlX2Z1bmNfcHJvdG8oZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLFxuaW5jbHVkZS9saW51eC9icGYuaC0zMTcwLVx0XHRcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MzQ5Mz1zdGF0aWMgaW5saW5lIGludCBidGZfc3RydWN0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzUwMS1cbmluY2x1ZGUvbGludXgvYnBmLmg6MzUwMjpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byAqXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM1MDMtYnBmX2Jhc2VfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTM4NTQ9c3RhdGljIGlubGluZSBzMzIgYnBmX2tleV9zZXJpYWwoY29uc3Qgc3RydWN0IGJwZl9rZXkgKmtleSlcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM4NjAtLyogdmVyaWZpZXIgcHJvdG90eXBlcyBmb3IgaGVscGVyIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBlQlBGIHByb2dyYW1zICovXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NjE6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX2xvb2t1cF9lbGVtX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODYyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF91cGRhdGVfZWxlbV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg2MzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfZGVsZXRlX2VsZW1fcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NjQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX3B1c2hfZWxlbV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg2NTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfcG9wX2VsZW1fcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NjY6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX3BlZWtfZWxlbV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg2NzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaC0zODY4LVxuaW5jbHVkZS9saW51eC9icGYuaDozODY5OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9wcmFuZG9tX3UzMl9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3MDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfc21wX3Byb2Nlc3Nvcl9pZF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3MTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfbnVtYV9ub2RlX2lkX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODcyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3RhaWxfY2FsbF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3MzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfbnNfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NzQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X2Jvb3RfbnNfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NzU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X3RhaV9uc19wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3NjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF9waWRfdGdpZF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3NzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF91aWRfZ2lkX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODc4OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jdXJyZW50X2NvbW1fcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4Nzk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X3N0YWNraWRfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4ODA6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X3N0YWNrX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODgxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja19zbGVlcGFibGVfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4ODI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X3Rhc2tfc3RhY2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4ODM6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X3Rhc2tfc3RhY2tfc2xlZXBhYmxlX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODg0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja2lkX3Byb3RvX3BlO1xuaW5jbHVkZS9saW51eC9icGYuaDozODg1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja19wcm90b19wZTtcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg4NjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9zb2NrX21hcF91cGRhdGVfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4ODc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc29ja19oYXNoX3VwZGF0ZV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg4ODpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF9jZ3JvdXBfaWRfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4ODk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfYW5jZXN0b3JfY2dyb3VwX2lkX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODkwOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jZ3JvdXBfY2xhc3NpZF9jdXJyX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODkxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2N1cnJlbnRfdGFza191bmRlcl9jZ3JvdXBfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbXNnX3JlZGlyZWN0X2hhc2hfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTM6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbXNnX3JlZGlyZWN0X21hcF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg5NDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za19yZWRpcmVjdF9oYXNoX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODk1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrX3JlZGlyZWN0X21hcF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg5NjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9zcGluX2xvY2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc3Bpbl91bmxvY2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2xvY2FsX3N0b3JhZ2VfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc3RydG9sX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTAwOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3N0cnRvdWxfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MDE6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfdGNwX3NvY2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MDI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfamlmZmllczY0X3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTAzOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9uc19jdXJyZW50X3BpZF90Z2lkX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTA0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2V2ZW50X291dHB1dF9kYXRhX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTA1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfb3V0cHV0X3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTA2OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfcmVzZXJ2ZV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkwNzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9yaW5nYnVmX3N1Ym1pdF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkwODpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9yaW5nYnVmX2Rpc2NhcmRfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MDk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfcmluZ2J1Zl9xdWVyeV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxMDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTExOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfc3VibWl0X2R5bnB0cl9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxMjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9yaW5nYnVmX2Rpc2NhcmRfZHlucHRyX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTEzOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrY190b190Y3A2X3NvY2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MTQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2tjX3RvX3RjcF9zb2NrX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTE1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrY190b190Y3BfdGltZXdhaXRfc29ja19wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxNjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za2NfdG9fdGNwX3JlcXVlc3Rfc29ja19wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxNzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za2NfdG9fdWRwNl9zb2NrX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTE4OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrY190b191bml4X3NvY2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MTk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2tjX3RvX21wdGNwX3NvY2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MjA6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfY29weV9mcm9tX3VzZXJfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MjE6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc25wcmludGZfYnRmX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTIyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NucHJpbnRmX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTIzOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3Blcl9jcHVfcHRyX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTI0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3RoaXNfY3B1X3B0cl9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkyNTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfY29hcnNlX25zX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTI2OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NvY2tfZnJvbV9maWxlX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTI3OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zb2NrZXRfcHRyX2Nvb2tpZV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkyODpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl90YXNrX3N0b3JhZ2VfZ2V0X3JlY3VyX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTI5OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3Rhc2tfc3RvcmFnZV9nZXRfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MzA6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfdGFza19zdG9yYWdlX2RlbGV0ZV9yZWN1cl9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkzMTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl90YXNrX3N0b3JhZ2VfZGVsZXRlX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTMyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2Zvcl9lYWNoX21hcF9lbGVtX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTMzOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2J0Zl9maW5kX2J5X25hbWVfa2luZF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkzNDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za19zZXRzb2Nrb3B0X3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTM1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrX2dldHNvY2tvcHRfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MzY6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2tfc2V0c29ja29wdF9ub2RlbGF5X3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTM3OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3VubG9ja2VkX3NrX3NldHNvY2tvcHRfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5Mzg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfdW5sb2NrZWRfc2tfZ2V0c29ja29wdF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkzOTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9maW5kX3ZtYV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzk0MDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9sb29wX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTQxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5NDI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2V0X3JldHZhbF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzk0MzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfcmV0dmFsX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTQ0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3VzZXJfcmluZ2J1Zl9kcmFpbl9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzk0NTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9jZ3JwX3N0b3JhZ2VfZ2V0X3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTQ2OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2NncnBfc3RvcmFnZV9kZWxldGVfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM5NDctXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5NDg6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICp0cmFjaW5nX3Byb2dfZnVuY19wcm90byhcbmluY2x1ZGUvbGludXgvYnBmLmgtMzk0OS0gIGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwOTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjY3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgYGZuLSZndDtmdW5jYCBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb24gcG9pbnRlciwgdGhhdCBtdWNoIGlzIGNsZWFyLiBUaGUga2V5IGNoYW5nZSBoZXJlIGlzIG1vdmluZyBmcm9tIHRoaXM6IGAtIGluc24tJmd0O2ltbSA9IGZuLSZndDtmdW5jIC0gX19icGZfY2FsbF9iYXNlO2AgdG8gdGhpczogYCYjNDM7IGluc24tJmd0O2ltbSA9IEJQRl9DQUxMX0lNTShmbi0mZ3Q7ZnVuYyk7YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBvcHRpbWl6YXRpb24sIGJ1dCBsZXQmIzM5O3MgZGlnIGRlZXBlci4KClJpZ2h0LCBgQlBGX0NBTExfSU1NKHgpYCBleHBhbmRzIHRvIGAoKHZvaWQgKikoeCkgLSAodm9pZCAqKV9fYnBmX2NhbGxfYmFzZSlgLiBJbW1lZGlhdGVseSwgdGhlIHVzZSBvZiBgdm9pZCAqYCBjYXN0cyBpcyByYWlzaW5nIGEgZmxhZy4gQW5kLCAqaW5zbi0mZ3Q7aW1tKiBpcyBhbiAqczMyKiBtZWFuaW5nIGEgc2lnbmVkIDMyIGJpdCBpbnRlZ2VyLiBUaGUgc3VidHJhY3Rpb24gb2YgcG9pbnRlcnMsIGlmIGBfX2JwZl9jYWxsX2Jhc2VgIGlzIHRoZSBzYW1lIHBvaW50ZXIgdHlwZSBhcyBgZm4tJmd0O2Z1bmNgLCB3aWxsIGdpdmUgYSBkaWZmZXJlbmNlIGluIG11bHRpcGxlcyBvZiB0aGUgcG9pbnRlciB0eXBlIHNpemUuIElmIHRoZXkgYXJlIGludGVnZXJzLCBpdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgaW50ZWdlciBzdWJ0cmFjdGlvbi4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYF9fYnBmX2NhbGxfYmFzZWAgYWN0dWFsbHkgaXMuIFRoYXQmIzM5O3MgdGhlIGNydXggb2YgdGhpcyB3aG9sZSBvcGVyYXRpb24uIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdXNlZCBhcyBhIGJhc2UgYWRkcmVzcywgYnV0IHdoeSBhbmQgd2hhdCBkb2VzIGl0IHJlcHJlc2VudD8gTGV0JiMzOTtzIGZpZ3VyZSB0aGlzIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDk6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19icGZfY2FsbF9iYXNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmM9MTU4OT1zdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxuLS1cbmFyY2gvYXJtL25ldC9icGZfaml0XzMyLmMtMjA1OC1cdFx0Y29uc3QgczggKnI1ID0gYnBmMmEzMltCUEZfUkVHXzVdO1xuYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYzoyMDU5Olx0XHRjb25zdCB1MzIgZnVuYyA9ICh1MzIpX19icGZfY2FsbF9iYXNlICYjNDM7ICh1MzIpaW1tO1xuYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYy0yMDYwLVxuLS1cbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jPTg5NT1zdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxuLS1cbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jLTEyMTUtXHR7XG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYzoxMjE2Olx0XHR1OCAqZnVuYyA9ICgodTggKilfX2JwZl9jYWxsX2Jhc2UpICYjNDM7IGltbTtcbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jLTEyMTctXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTIyMzc9c3Q6XHRcdFx0aW5zbl9vZmYgPSBpbnNuLVx1MDAzZW9mZjtcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMjU3OC1cdFx0Y2FzZSBCUEZfSk1QIHwgQlBGX0NBTEw6IHtcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzoyNTc5Olx0XHRcdGZ1bmMgPSAodTggKikgX19icGZfY2FsbF9iYXNlICYjNDM7IGltbTMyO1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTI1ODAtXHRcdFx0aWYgKHNyY19yZWcgPT0gQlBGX1BTRVVET19DQUxMIFx1MDAyNlx1MDAyNiB0YWlsX2NhbGxfcmVhY2hhYmxlKSB7XG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcDMyLmM9MTU2OT1zdGF0aWMgaW50IGVtaXRfa2Z1bmNfY2FsbChjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nLCB1OCAqZW5kX2FkZHIsXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTYzMC1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAzMi5jOjE2MzE6XHRqbXBfb2Zmc2V0ID0gKHU4ICopX19icGZfY2FsbF9iYXNlICYjNDM7IGluc24tXHUwMDNlaW1tIC0gZW5kX2FkZHI7XG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjMyLVx0aWYgKCFpc19zaW1tMzIoam1wX29mZnNldCkpIHtcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wMzIuYz0xNjU5PXN0YXRpYyBpbnQgZG9faml0KHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2csIGludCAqYWRkcnMsIHU4ICppbWFnZSxcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wMzIuYy0yMTA1LVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcDMyLmM6MjEwNjpcdFx0XHRmdW5jID0gKHU4ICopIF9fYnBmX2NhbGxfYmFzZSAmIzQzOyBpbW0zMjtcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAzMi5jLTIxMDctXHRcdFx0am1wX29mZnNldCA9IGZ1bmMgLSAoaW1hZ2UgJiM0MzsgYWRkcnNbaV0pO1xuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MjU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpbnNuX2lzX2Nhc3RfdXNlcihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC00NjYtXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjQ2NzojZGVmaW5lIEJQRl9DQUxMX0lNTSh4KVx0KCh2b2lkICopKHgpIC0gKHZvaWQgKilfX2JwZl9jYWxsX2Jhc2UpXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTQ2OC1cbi0tXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTExNzM9dm9pZCBza19maWx0ZXJfdW5jaGFyZ2Uoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfZmlsdGVyICpmcCk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTExNzQtXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjExNzU6dTY0IF9fYnBmX2NhbGxfYmFzZSh1NjQgcjEsIHU2NCByMiwgdTY0IHIzLCB1NjQgcjQsIHU2NCByNSk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTExNzYtXG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTI0Nj1pbnQgYnBmX2ppdF9nZXRfZnVuY19hZGRyKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjc0LVx0XHQvKiBBZGRyZXNzIG9mIGEgQlBGIGhlbHBlciBjYWxsLiBTaW5jZSBwYXJ0IG9mIHRoZSBjb3JlXG5rZXJuZWwvYnBmL2NvcmUuYzoxMjc1Olx0XHQgKiBrZXJuZWwsIGl0JiMzOTtzIGFsd2F5cyBhdCBhIGZpeGVkIGxvY2F0aW9uLiBfX2JwZl9jYWxsX2Jhc2Vcbmtlcm5lbC9icGYvY29yZS5jLTEyNzYtXHRcdCAqIGFuZCB0aGUgaGVscGVyIHdpdGggaW1tIHJlbGF0aXZlIHRvIGl0IGFyZSBib3RoIGluIGNvcmVcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjc4LVx0XHQgKi9cbmtlcm5lbC9icGYvY29yZS5jOjEyNzk6XHRcdGFkZHIgPSAodTggKilfX2JwZl9jYWxsX2Jhc2UgJiM0MzsgaW1tO1xua2VybmVsL2JwZi9jb3JlLmMtMTI4MC1cdH1cbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0xNTg2PXUxNiBicGZfb3V0X3N0YWNrX2FyZ19jbnQoY29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTE2MDItICovXG5rZXJuZWwvYnBmL2NvcmUuYzoxNjAzOm5vaW5saW5lIHU2NCBfX2JwZl9jYWxsX2Jhc2UodTY0IHIxLCB1NjQgcjIsIHU2NCByMywgdTY0IHI0LCB1NjQgcjUpXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjA0LXtcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjA2LX1cbmtlcm5lbC9icGYvY29yZS5jOjE2MDc6RVhQT1JUX1NZTUJPTF9HUEwoX19icGZfY2FsbF9iYXNlKTtcbmtlcm5lbC9icGYvY29yZS5jLTE2MDgtXG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTc5Nj1zdGF0aWMgdTY0IF9fX2JwZl9wcm9nX3J1bih1NjQgKnJlZ3MsIGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbilcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0yMDg3LVx0XHQgKi9cbmtlcm5lbC9icGYvY29yZS5jOjIwODg6XHRcdEJQRl9SMCA9IChfX2JwZl9jYWxsX2Jhc2UgJiM0MzsgaW5zbi1cdTAwM2VpbW0pKEJQRl9SMSwgQlBGX1IyLCBCUEZfUjMsXG5rZXJuZWwvYnBmL2NvcmUuYy0yMDg5LVx0XHRcdFx0XHRcdCAgICAgICBCUEZfUjQsIEJQRl9SNSk7XG4tLVxua2VybmVsL2JwZi9maXh1cHMuYz0xMDI4PXN0YXRpYyBpbnQgaml0X3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0xMDU2LVx0XHRlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtpXS5jYWxsX2ltbSA9IGluc24tXHUwMDNlaW1tO1xua2VybmVsL2JwZi9maXh1cHMuYzoxMDU3Olx0XHQvKiBwb2ludCBpbW0gdG8gX19icGZfY2FsbF9iYXNlJiM0MzsxIGZyb20gSklUcyBwb2ludCBvZiB2aWV3ICovXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTEwNTgtXHRcdGluc24tXHUwMDNlaW1tID0gMTtcbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTExOTYtXHRcdCAqIG1pZ2h0IG5vdCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCB0aGUgb2Zmc2V0IG9mIHRoZSBzdGFydFxua2VybmVsL2JwZi9maXh1cHMuYzoxMTk3Olx0XHQgKiBhZGRyZXNzIG9mIHRoZSBjYWxsZWUmIzM5O3MgSklUZWQgaW1hZ2UgZnJvbSBfX2JwZl9jYWxsX2Jhc2Vcbmtlcm5lbC9icGYvZml4dXBzLmMtMTE5OC1cdFx0ICpcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1OTk9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MTItXHQvKiBpbnNuLVx1MDAzZWltbSBoYXMgdGhlIGJ0ZiBmdW5jX2lkLiBSZXBsYWNlIGl0IHdpdGggYW4gb2Zmc2V0IHJlbGF0aXZlIHRvXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2MTM6XHQgKiBfX2JwZl9jYWxsX2Jhc2UsIHVubGVzcyB0aGUgSklUIG5lZWRzIHRvIGNhbGwgZnVuY3Rpb25zIHRoYXQgYXJlXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MTQtXHQgKiBmdXJ0aGVyIHRoYW4gMzIgYml0cyBhd2F5IChicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKCkpLlxuLS1cbmxpYi90ZXN0X2JwZi5jPTE1NjIwPXN0YXRpYyBfX2luaXQgaW50IHByZXBhcmVfdGFpbF9jYWxsX3Rlc3RzKHN0cnVjdCBicGZfYXJyYXkgKipwcHJvZ3MpXG4tLVxubGliL3Rlc3RfYnBmLmMtMTU3MTAtXHRcdFx0XHQqaW5zbiA9IEJQRl9FTUlUX0NBTEwoYWRkcik7XG5saWIvdGVzdF9icGYuYzoxNTcxMTpcdFx0XHRcdGlmICgobG9uZylfX2JwZl9jYWxsX2Jhc2UgJiM0MzsgaW5zbi1cdTAwM2VpbW0gIT0gYWRkcilcbmxpYi90ZXN0X2JwZi5jLTE1NzEyLVx0XHRcdFx0XHQqaW5zbiA9IEJQRl9KTVBfQSgwKTsgLyogU2tpcDogTk9QICovXG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9MzYxPXN0YXRpYyBib29sIGNvbnZlcnRfYnBmX2V4dGVuc2lvbnMoc3RydWN0IHNvY2tfZmlsdGVyICpmcCxcbi0tXG5uZXQvY29yZS9maWx0ZXIuYy00NzktXHRcdC8qIFRoaXMgaXMganVzdCBhIGR1bW15IGNhbGwgdG8gYXZvaWQgbGV0dGluZyB0aGUgY29tcGlsZXJcbm5ldC9jb3JlL2ZpbHRlci5jOjQ4MDpcdFx0ICogZXZpY3QgX19icGZfY2FsbF9iYXNlKCkgYXMgYW4gb3B0aW1pemF0aW9uLiBQbGFjZWQgaGVyZVxubmV0L2NvcmUvZmlsdGVyLmMtNDgxLVx0XHQgKiB3aGVyZSBuby1vbmUgYm90aGVycy5cbm5ldC9jb3JlL2ZpbHRlci5jLTQ4Mi1cdFx0ICovXG5uZXQvY29yZS9maWx0ZXIuYzo0ODM6XHRcdEJVR19PTihfX2JwZl9jYWxsX2Jhc2UoMCwgMCwgMCwgMCwgMCkgIT0gMCk7XG5uZXQvY29yZS9maWx0ZXIuYy00ODQtXHRcdHJldHVybiBmYWxzZTtcbi0tXG50b29scy9icGYvYnBmdG9vbC94bGF0ZWRfZHVtcGVyLmM9MjY9dm9pZCBrZXJuZWxfc3ltc19sb2FkKHN0cnVjdCBkdW1wX2RhdGEgKmRkKVxuLS1cbnRvb2xzL2JwZi9icGZ0b29sL3hsYXRlZF9kdW1wZXIuYy01NS1cdFx0c3ltLVx1MDAzZWFkZHJlc3MgPSAodW5zaWduZWQgbG9uZylhZGRyZXNzO1xudG9vbHMvYnBmL2JwZnRvb2wveGxhdGVkX2R1bXBlci5jOjU2Olx0XHRpZiAoIXN0cmNtcChzeW0tXHUwMDNlbmFtZSwgXCYjMzQ7X19icGZfY2FsbF9iYXNlXCYjMzQ7KSkge1xudG9vbHMvYnBmL2JwZnRvb2wveGxhdGVkX2R1bXBlci5jLTU3LVx0XHRcdGRkLVx1MDAzZWFkZHJlc3NfY2FsbF9iYXNlID0gc3ltLVx1MDAzZWFkZHJlc3M7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA5OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjE0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNzA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIENhbGwgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0IHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gYF9fYnBmX2NhbGxfYmFzZWAsIHdoaWNoIGlzIGRlZmluZWQgYXMgYSBzaW1wbGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIDAuICBUaGVuIHRoZXJlJiMzOTtzIHRoaXMgbWFjcm8sIGBCUEZfQ0FMTF9JTU0oeClgLCB3aGljaCBpcyBkZWZpbmVkIGFzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYCh2b2lkICopKHgpYCBhbmQgYCh2b2lkICopX19icGZfY2FsbF9iYXNlYC4gVGhlIHBhdGNoIGl0c2VsZiByZXBsYWNlcyBgaW5zbi0mZ3Q7aW1tID0gZm4tJmd0O2Z1bmMgLSBfX2JwZl9jYWxsX2Jhc2U7YCB3aXRoIGBpbnNuLSZndDtpbW0gPSBCUEZfQ0FMTF9JTU0oZm4tJmd0O2Z1bmMpO2AuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgZm4tJmd0O2Z1bmNgIGlzIGEgZnVuY3Rpb24gcG9pbnRlci4gIEFuZCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIHN1YnRyYWN0aW5nIHR3byBmdW5jdGlvbiBwb2ludGVycyBkaXJlY3RseSBpbiBzdGFuZGFyZCBDIGlzIG5vdCB2YWxpZCBwb2ludGVyIGFyaXRobWV0aWMuIEl0JiMzOTtzIGVpdGhlciBhIEdOVSBleHRlbnNpb24gb3IgdW5kZWZpbmVkIGJlaGF2aW9yLiBTbywgdGhlIG9sZCBjb2RlLCBgZm4tJmd0O2Z1bmMgLSBfX2JwZl9jYWxsX2Jhc2VgLCBzZWVtcyBzdXNwZWN0LiBIb3dldmVyLCB0aGUgbWFjcm8gY2FzdHMgYm90aCBmdW5jdGlvbiBwb2ludGVycyB0byBgdm9pZCAqYCBiZWZvcmUgdGhlIHN1YnRyYWN0aW9uLgoKTm93LCBHQ0MgZG9lcyBhbGxvdyBwb2ludGVyIGFyaXRobWV0aWMgb24gYHZvaWQgKmAsIHRyZWF0aW5nIGl0IGFzIGEgYnl0ZSBvZmZzZXQuIFNvLCBgKHZvaWQgKilmbi0mZ3Q7ZnVuYyAtICh2b2lkICopX19icGZfY2FsbF9iYXNlYCBjb21wdXRlcyB0aGUgYnl0ZSBvZmZzZXQgYmV0d2VlbiB0aGUgdHdvLiBIb3dldmVyLCB3aGF0IGlmIHdlIGRpZG4mIzM5O3QgaGF2ZSB0aGUgY2FzdHM/IFdoYXQgd291bGQgYmUgdGhlIHR5cGUgb2YgdGhlIHN1YnRyYWN0aW9uLCBpZiBHQ0MgYWxsb3dzIGZ1bmN0aW9uIHBvaW50ZXIgc3VidHJhY3Rpb24/IExldCYjMzk7cyB2ZXJpZnkgd2hhdCBgZm4tJmd0O2Z1bmNgIGlzLiBBaCwgaXQmIzM5O3MgYSBmdW5jdGlvbiBwb2ludGVyLCBzcGVjaWZpY2FsbHksIGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZSBgdTY0ICgqKSh1NjQsIHU2NCwgdTY0LCB1NjQsIHU2NClgLgoKTm93LCBpZiBJIHN1YnRyYWN0IHR3byBmdW5jdGlvbiBwb2ludGVycyBpbiBHQ0MsIGRvZXMgaXQgZ2l2ZSBtZSB0aGUgZGlmZmVyZW5jZSBpbiBieXRlcywgb3IgZG9lcyBpdCBnaXZlIGFuIGVycm9yPyBJdCBtaWdodCBjb21wbGFpbiBvciBpdCBtaWdodCBnaXZlIHRoZSBkaWZmZXJlbmNlIGluIGJ5dGVzLiBCdXQgZnVuY3Rpb25hbGx5LCB3aXRob3V0IHRoZSBjYXN0cywgYHggLSB5YCB3b3VsZCBnaXZlIHRoZSBzYW1lIGJ5dGUgb2Zmc2V0IGFzIHRoZSB2ZXJzaW9uIHdpdGggdGhlIGNhc3RzLCBpZiBHQ0MgYWxsb3dzIGl0IGFuZCB0cmVhdHMgZnVuY3Rpb24gcG9pbnRlcnMgYXMgc2l6ZSAxLgoKV2FpdCwgaXMgdGhlcmUgYW55IGFjdHVhbCBmdW5jdGlvbmFsIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgb2xkIGNvZGUgYW5kIHRoZSBuZXcgY29kZT8gTGV0JiMzOTtzIHNlZS4uLiBgaW5zbi0mZ3Q7aW1tYCBpcyBhIHNpZ25lZCAzMi1iaXQgaW50ZWdlciAoYHMzMmApLiBgZm4tJmd0O2Z1bmNgIGFuZCBgX19icGZfY2FsbF9iYXNlYCBhcmUgYm90aCBwb2ludGVycyB0byB0aGUgc2FtZSBmdW5jdGlvbiB0eXBlLiBTbyBzdWJ0cmFjdGluZyB0d28gcG9pbnRlcnMgb2YgdGhlIHNhbWUgdHlwZSBnaXZlcyB0aGUgZGlmZmVyZW5jZSBpbiBieXRlcywgZGl2aWRlZCBieSB0aGUgc2l6ZSBvZiB0aGUgdHlwZS4gV2hhdCBpcyB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIHR5cGUgaW4gR0NDPyBHQ0MgaGFzIGFuIGV4dGVuc2lvbiwgYHNpemVvZihmdW5jdGlvbilgIHdoaWNoIGlzIDEuIFNvLCBzdWJ0cmFjdGluZyBgZm4tJmd0O2Z1bmMgLSBfX2JwZl9jYWxsX2Jhc2VgIGdpdmVzIHRoZSBkaWZmZXJlbmNlIGluIGJ5dGVzISBBbmQgdGhlIGAodm9pZCAqKWZuLSZndDtmdW5jIC0gKHZvaWQgKilfX2JwZl9jYWxsX2Jhc2VgIGFsc28gZ2l2ZXMgdGhlIGRpZmZlcmVuY2UgaW4gYnl0ZXMhCgpTbywgdGhlIHZhbHVlcyBjb21wdXRlZCBhcmUgaWRlbnRpY2FsLiBUaGUgcGF0Y2ggaXMgc2ltcGx5IGEgY2xlYW51cCwgdXNpbmcgdGhlIGBCUEZfQ0FMTF9JTU1gIG1hY3JvIGluc3RlYWQgb2Ygb3Blbi1jb2RpbmcgaXQuIEl0IHByb2JhYmx5IGF2b2lkcyBjb21waWxlciB3YXJuaW5ncyBvbiBzb21lIGNvbXBpbGVycyBhbmQgcHJvdmlkZXMgY29uc2lzdGVuY3kuIEkmIzM5O2xsIHZlcmlmeSB0aGlzIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDk6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnNuLVx1MDAzZWltbSA9IGZuLVx1MDAzZWZ1bmMgLSBfX2JwZl9jYWxsX2Jhc2U7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9maXh1cHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA5OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjMyCgkJCQkJCQlvdXRwdXQ6IDg4CgkJCQkJCQl0aG91Z2h0czogNjQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvc21ldGljIEJQRiBQYXRjaCoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCB0aGUgYGdpdCBsb2dgIHRvIHNlZSBpZiB0aGUgYXV0aG9yJiMzOTtzIHJhdGlvbmFsZSBpcyByZWFkaWx5IGF2YWlsYWJsZS4gSG1tLCBubyBgZ2l0IGxvZ2AgZGlyZWN0bHksIGJ1dCBJIGNhbiBwcm9iYWJseSBnZXQgdGhlIGdpc3QgdXNpbmcgYGdyZXBwZXJgLCBvciwgY29uc2lkZXJpbmcgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBpdOKAmXMgbGlrZWx5IGp1c3QgY29zbWV0aWMgcmVmYWN0b3JpbmcuIExldCYjMzk7cyBkaWcgaW4gYW5kIGV4YW1pbmUgdGhlIGRpZmYgaXRzZWxmLgoKQWxyaWdodCwgdGhlIG9ubHkgY2hhbmdlIGlzIGluIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYC4gSSBzZWUgaXQgcmlnaHQgYXdheTogYSBsaW5lIGlzIGNoYW5nZWQgaW52b2x2aW5nIGBpbnNuLSZndDtpbW1gLiBQcmV2aW91c2x5IGl0IHdhcyBgaW5zbi0mZ3Q7aW1tID0gZm4tJmd0O2Z1bmMgLSBfX2JwZl9jYWxsX2Jhc2U7YCwgbm93IGl0JiMzOTtzIGBpbnNuLSZndDtpbW0gPSBCUEZfQ0FMTF9JTU0oZm4tJmd0O2Z1bmMpO2AuCgpOb3csIGxldCYjMzk7cyB1bnBhY2sgdGhpcy4uLiBgZm4tJmd0O2Z1bmNgIGFuZCBgX19icGZfY2FsbF9iYXNlYCBhcmUgZnVuY3Rpb24gcG9pbnRlcnMuIFRoZSBzdWJ0cmFjdGlvbiwgYXQgZmlyc3QgZ2xhbmNlLCBzZWVtcyB0byBqdXN0IGNvbXB1dGUgYW4gb2Zmc2V0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIHN1YnRsZSB0aG91Z2guIExldCYjMzk7cyBzZWUgaWYgdGhlIG90aGVyIGNoYW5nZSBpcyB0aGVyZSBpbiB0aGUgcGF0Y2guCgpXYWl0LCBsb29raW5nIGF0IHRoZSBjb2RlIGluIGBrZXJuZWwvYnBmL2NvcmUuY2AsIEkgc2VlIHRoYXQgYF9fYnBmX2NhbGxfYmFzZWAgaXMgKmFjdHVhbGx5KiBhIGZ1bmN0aW9uOiBgbm9pbmxpbmUgdTY0IF9fYnBmX2NhbGxfYmFzZSh1NjQgcjEsIHU2NCByMiwgdTY0IHIzLCB1NjQgcjQsIHU2NCByNSlgLiBCdXQsIHdoZW4gdXNlZCBpbiBhbiBleHByZXNzaW9uIHdpdGhvdXQgYCZhbXA7YCwgaXQgZGVjYXlzIHRvIGEgZnVuY3Rpb24gcG9pbnRlci4gU28sIGluIHRoZSBvcmlnaW5hbCBjb2RlLCB0aGUgc3VidHJhY3Rpb24gaXMgaW5kZWVkIHN1YnRyYWN0aW5nIHR3byBmdW5jdGlvbiBwb2ludGVycy4gTm93LCBpbiBHQ0MsIHBvaW50ZXIgYXJpdGhtZXRpYyBvbiBmdW5jdGlvbiBwb2ludGVycyBpcyBhbiBleHRlbnNpb24sIGFuZCB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIGlzIDEgYnl0ZSwganVzdCBsaWtlIGB2b2lkYC4gU28sIGVmZmVjdGl2ZWx5LCB0aGUgcmVzdWx0IHdpbGwgZXZhbHVhdGUgdG8gdGhlIGJ5dGUgb2Zmc2V0LgoKTm93IGxldCYjMzk7cyBsb29rIGF0IGBCUEZfQ0FMTF9JTU0oZm4tJmd0O2Z1bmMpYC4gVGhpcyBldmFsdWF0ZXMgdG8gYCgodm9pZCAqKShmbi0mZ3Q7ZnVuYykgLSAodm9pZCAqKV9fYnBmX2NhbGxfYmFzZSlgLiBUaGlzIGFsc28gY29tcHV0ZXMgdGhlIGJ5dGUgb2Zmc2V0LiBCaW5nbyEgSXQmIzM5O3MgdGhlIHNhbWUuCgpUaGVyZWZvcmUsIHRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMgcmVmYWN0b3JpbmcsIGEgc2ltcGxlIG1hY3JvIHJlcGxhY2VtZW50IGZvciBjb25zaXN0ZW5jeS4gTm8gZnVuY3Rpb25hbCBjaGFuZ2VzLgoKU28sIGluIGNvbmNsdXNpb24sIHRoaXMgcGF0Y2ggaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgY2hhbmdlIHJlcGxhY2VzIGEgZnVuY3Rpb24gcG9pbnRlciBzdWJ0cmFjdGlvbiB3aXRoIGFuIGVxdWl2YWxlbnQgbWFjcm8uIFNpbmNlIEdDQyB0cmVhdHMgdGhlIHNpemUgb2YgYSBmdW5jdGlvbiBhcyAxIChzYW1lIGFzIGB2b2lkYCksIHRoZSBjYWxjdWxhdGVkIGJ5dGUgb2Zmc2V0IGlzIGlkZW50aWNhbC4gVGhlIGNoYW5nZSBpcyBwdXJlbHkgY29zbWV0aWMsIHJlcHJlc2VudGluZyBhIHJlZmFjdG9yaW5nIHdpdGggbm8gb2JzZXJ2YWJsZSBmdW5jdGlvbmFsIGVmZmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDk6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhbiBvcGVuLWNvZGVkIGZ1bmN0aW9uIHBvaW50ZXIgc3VidHJhY3Rpb24gd2l0aCB0aGUgZXF1aXZhbGVudCBCUEZfQ0FMTF9JTU0gbWFjcm8uIFNpbmNlIEdDQyB0cmVhdHMgdGhlIHNpemUgb2YgYSBmdW5jdGlvbiBhcyAxIGJ5dGUgKHNhbWUgYXMgdm9pZCksIHRoZSBjb21wdXRlZCBieXRlIG9mZnNldCBpcyBpZGVudGljYWwuIFRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMgcmVmYWN0b3Jpbmcgd2l0aCBubyBmdW5jdGlvbmFsIGNoYW5nZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhbiBvcGVuLWNvZGVkIGZ1bmN0aW9uIHBvaW50ZXIgc3VidHJhY3Rpb24gd2l0aCB0aGUgZXF1aXZhbGVudCBCUEZfQ0FMTF9JTU0gbWFjcm8uIFNpbmNlIEdDQyB0cmVhdHMgdGhlIHNpemUgb2YgYSBmdW5jdGlvbiBhcyAxIGJ5dGUgKHNhbWUgYXMgdm9pZCksIHRoZSBjb21wdXRlZCBieXRlIG9mZnNldCBpcyBpZGVudGljYWwuIFRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMgcmVmYWN0b3Jpbmcgd2l0aCBubyBmdW5jdGlvbmFsIGNoYW5nZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDFUMDk6MDg6MTcuNzk4NjAxNTI0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkyMDYxNzY3MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGFuIG9wZW4tY29kZWQgZnVuY3Rpb24gcG9pbnRlciBzdWJ0cmFjdGlvbiB3aXRoIHRoZSBlcXVpdmFsZW50IEJQRl9DQUxMX0lNTSBtYWNyby4gU2luY2UgR0NDIHRyZWF0cyB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIGFzIDEgYnl0ZSAoc2FtZSBhcyB2b2lkKSwgdGhlIGNvbXB1dGVkIGJ5dGUgb2Zmc2V0IGlzIGlkZW50aWNhbC4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA5OjA4OjE3Ljc5ODYwODM1NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE4MTkxMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNGY1ZDQ4NmQ0ZWQ0MWZhMDhlMWEzZTFkNmRhNDlmZTg3NDZkNDA0MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDA5OjA4OjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvZml4dXBzLmMgYi9rZXJuZWwvYnBmL2ZpeHVwcy5jXFxuaW5kZXggM2NmMmNjNmUzYWI2NmEuLjEyYThhNGViNzU3ZjE4IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvZml4dXBzLmNcXG4rKysgYi9rZXJuZWwvYnBmL2ZpeHVwcy5jXFxuQEAgLTIzMzgsNyArMjMzOCw3IEBAIGludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4gXFx0XFx0XFx0XFx0ICAgICBmdW5jX2lkX25hbWUoaW5zbi1cXHUwMDNlaW1tKSwgaW5zbi1cXHUwMDNlaW1tKTtcXG4gXFx0XFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuIFxcdFxcdH1cXG4tXFx0XFx0aW5zbi1cXHUwMDNlaW1tID0gZm4tXFx1MDAzZWZ1bmMgLSBfX2JwZl9jYWxsX2Jhc2U7XFxuK1xcdFxcdGluc24tXFx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShmbi1cXHUwMDNlZnVuYyk7XFxuIG5leHRfaW5zbjpcXG4gXFx0XFx0aWYgKHN1YnByb2dzW2N1cl9zdWJwcm9nICsgMV0uc3RhcnQgPT0gaSArIGRlbHRhICsgMSkge1xcbiBcXHRcXHRcXHRzdWJwcm9nc1tjdXJfc3VicHJvZ10uc3RhY2tfZGVwdGggKz0gc3RhY2tfZGVwdGhfZXh0cmE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA5OjA4OjE4LjMxNzc0NTU2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg2ODcwMjYxNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGFuIG9wZW4tY29kZWQgZnVuY3Rpb24gcG9pbnRlciBzdWJ0cmFjdGlvbiB3aXRoIHRoZSBlcXVpdmFsZW50IEJQRl9DQUxMX0lNTSBtYWNyby4gU2luY2UgR0NDIHRyZWF0cyB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIGFzIDEgYnl0ZSAoc2FtZSBhcyB2b2lkKSwgdGhlIGNvbXB1dGVkIGJ5dGUgb2Zmc2V0IGlzIGlkZW50aWNhbC4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNGY1ZDQ4NmQ0ZWQ0MWZhMDhlMWEzZTFkNmRhNDlmZTg3NDZkNDA0MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMDk6MDg6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2ZpeHVwcy5jIGIva2VybmVsL2JwZi9maXh1cHMuY1xuaW5kZXggM2NmMmNjNmUzYWI2NmEuLjEyYThhNGViNzU3ZjE4IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9maXh1cHMuY1xuKysrIGIva2VybmVsL2JwZi9maXh1cHMuY1xuQEAgLTIzMzgsNyArMjMzOCw3IEBAIGludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcdFx0XHRcdCAgICAgZnVuY19pZF9uYW1lKGluc24tXHUwMDNlaW1tKSwgaW5zbi1cdTAwM2VpbW0pO1xuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHR9XG4tXHRcdGluc24tXHUwMDNlaW1tID0gZm4tXHUwMDNlZnVuYyAtIF9fYnBmX2NhbGxfYmFzZTtcbitcdFx0aW5zbi1cdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0oZm4tXHUwMDNlZnVuYyk7XG4gbmV4dF9pbnNuOlxuIFx0XHRpZiAoc3VicHJvZ3NbY3VyX3N1YnByb2cgKyAxXS5zdGFydCA9PSBpICsgZGVsdGEgKyAxKSB7XG4gXHRcdFx0c3VicHJvZ3NbY3VyX3N1YnByb2ddLnN0YWNrX2RlcHRoICs9IHN0YWNrX2RlcHRoX2V4dHJhO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDk6MDg6MTguMzE3NzQ4MTU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwMjY1OTcyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQlBGIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBga2VybmVsL2JwZi9maXh1cHMuY2AuIEl0IHNlZW1zIGxpa2UgdGhleSd2ZSBjaGFuZ2VkIHRoZSBpbW1lZGlhdGUgdmFsdWUgYXNzaWdubWVudCB3aXRoaW4gYGJwZl9kb19taXNjX2ZpeHVwc2AgZm9yIEJQRiBjYWxscy4gU3BlY2lmaWNhbGx5LCB0aGUgb2xkIGNvZGUgZGlyZWN0bHkgc3VidHJhY3RlZCBhIGJhc2UgYWRkcmVzcyAoYF9fYnBmX2NhbGxfYmFzZWApIGZyb20gdGhlIGZ1bmN0aW9uIHBvaW50ZXIgKGBmbi1cdTAwM2VmdW5jYCksIHdoaWxlIHRoZSBuZXcgY29kZSBpcyB1c2luZyBhIG1hY3JvLCBgQlBGX0NBTExfSU1NYCwgYXBwbGllZCB0byB0aGF0IHNhbWUgZnVuY3Rpb24gcG9pbnRlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgKndoeSogdGhpcyBjaGFuZ2Ugd2FzIG1hZGUuIFdhcyBpdCBhIHNpbXBsZSBzdHlsaXN0aWMgY2hhbmdlLCBvciBkb2VzIHRoaXMgYEJQRl9DQUxMX0lNTWAgbWFjcm8gaW50cm9kdWNlIHNvbWUgYWRkaXRpb25hbCBiZWhhdmlvciBvciBsYXllciBvZiBhYnN0cmFjdGlvbj8gVG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgaW1wYWN0LCBJIG5lZWQgdG8gZGlnIGludG8gYGtlcm5lbC9icGYvZml4dXBzLmNgIGFuZCBmaWd1cmUgb3V0IHdoYXQgdGhpcyBgQlBGX0NBTExfSU1NYCBtYWNybyBleHBhbmRzIHRvLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlbnQgYW5kIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODc0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDk6MDg6MjIuMzIwNDEwNjMzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3ODc4MTI5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUEZfQ0FMTF9JTU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9maXh1cHMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2ZpeHVwcy5jPTg4PXN0YXRpYyBpbnQgc2V0X2tmdW5jX2Rlc2NfaW1tKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfZGVzYyAqZGVzYylcXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmMtOTQtXFx0fSBlbHNlIHtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjk1OlxcdFxcdGNhbGxfaW1tID0gQlBGX0NBTExfSU1NKGRlc2MtXFx1MDAzZWFkZHIpO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtOTYtXFx0XFx0LyogQ2hlY2sgd2hldGhlciB0aGUgcmVsYXRpdmUgb2Zmc2V0IG92ZXJmbG93cyBkZXNjLVxcdTAwM2VpbW0gKi9cXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmM9MTAyOD1zdGF0aWMgaW50IGppdF9zdWJwcm9ncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0xMTg4LVxcdFxcdFxcdHN1YnByb2cgPSBpbnNuLVxcdTAwM2VvZmY7XFxua2VybmVsL2JwZi9maXh1cHMuYzoxMTg5OlxcdFxcdFxcdGluc24tXFx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShmdW5jW3N1YnByb2ddLVxcdTAwM2VicGZfZnVuYyk7XFxua2VybmVsL2JwZi9maXh1cHMuYy0xMTkwLVxcdFxcdH1cXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmM9MTQ4MT1pbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuLS1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNDctXFx0XFx0XFx0Y2FzZSBCUEZfRlVOQ19tYXBfbG9va3VwX2VsZW06XFxua2VybmVsL2JwZi9maXh1cHMuYzoyMDQ4OlxcdFxcdFxcdFxcdGluc24tXFx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShvcHMtXFx1MDAzZW1hcF9sb29rdXBfZWxlbSk7XFxua2VybmVsL2JwZi9maXh1cHMuYy0yMDQ5LVxcdFxcdFxcdFxcdGdvdG8gbmV4dF9pbnNuO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA1MC1cXHRcXHRcXHRjYXNlIEJQRl9GVU5DX21hcF91cGRhdGVfZWxlbTpcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIwNTE6XFx0XFx0XFx0XFx0aW5zbi1cXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKG9wcy1cXHUwMDNlbWFwX3VwZGF0ZV9lbGVtKTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNTItXFx0XFx0XFx0XFx0Z290byBuZXh0X2luc247XFxua2VybmVsL2JwZi9maXh1cHMuYy0yMDUzLVxcdFxcdFxcdGNhc2UgQlBGX0ZVTkNfbWFwX2RlbGV0ZV9lbGVtOlxcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA1NDpcXHRcXHRcXHRcXHRpbnNuLVxcdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVxcdTAwM2VtYXBfZGVsZXRlX2VsZW0pO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA1NS1cXHRcXHRcXHRcXHRnb3RvIG5leHRfaW5zbjtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNTYtXFx0XFx0XFx0Y2FzZSBCUEZfRlVOQ19tYXBfcHVzaF9lbGVtOlxcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA1NzpcXHRcXHRcXHRcXHRpbnNuLVxcdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVxcdTAwM2VtYXBfcHVzaF9lbGVtKTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNTgtXFx0XFx0XFx0XFx0Z290byBuZXh0X2luc247XFxua2VybmVsL2JwZi9maXh1cHMuYy0yMDU5LVxcdFxcdFxcdGNhc2UgQlBGX0ZVTkNfbWFwX3BvcF9lbGVtOlxcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA2MDpcXHRcXHRcXHRcXHRpbnNuLVxcdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVxcdTAwM2VtYXBfcG9wX2VsZW0pO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA2MS1cXHRcXHRcXHRcXHRnb3RvIG5leHRfaW5zbjtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNjItXFx0XFx0XFx0Y2FzZSBCUEZfRlVOQ19tYXBfcGVla19lbGVtOlxcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA2MzpcXHRcXHRcXHRcXHRpbnNuLVxcdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVxcdTAwM2VtYXBfcGVla19lbGVtKTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNjQtXFx0XFx0XFx0XFx0Z290byBuZXh0X2luc247XFxua2VybmVsL2JwZi9maXh1cHMuYy0yMDY1LVxcdFxcdFxcdGNhc2UgQlBGX0ZVTkNfcmVkaXJlY3RfbWFwOlxcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA2NjpcXHRcXHRcXHRcXHRpbnNuLVxcdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVxcdTAwM2VtYXBfcmVkaXJlY3QpO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA2Ny1cXHRcXHRcXHRcXHRnb3RvIG5leHRfaW5zbjtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNjgtXFx0XFx0XFx0Y2FzZSBCUEZfRlVOQ19mb3JfZWFjaF9tYXBfZWxlbTpcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIwNjk6XFx0XFx0XFx0XFx0aW5zbi1cXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKG9wcy1cXHUwMDNlbWFwX2Zvcl9lYWNoX2NhbGxiYWNrKTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNzAtXFx0XFx0XFx0XFx0Z290byBuZXh0X2luc247XFxua2VybmVsL2JwZi9maXh1cHMuYy0yMDcxLVxcdFxcdFxcdGNhc2UgQlBGX0ZVTkNfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbTpcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIwNzI6XFx0XFx0XFx0XFx0aW5zbi1cXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKG9wcy1cXHUwMDNlbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSk7XFxua2VybmVsL2JwZi9maXh1cHMuYy0yMDczLVxcdFxcdFxcdFxcdGdvdG8gbmV4dF9pbnNuO1xcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0yMzQwLVxcdFxcdH1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIzNDE6XFx0XFx0aW5zbi1cXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKGZuLVxcdTAwM2VmdW5jKTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIzNDItbmV4dF9pbnNuOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwOTowODoyMi40OTkxOTc3MjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODUwODU4MTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgYEJQRl9DQUxMX0lNTWAqKlxuXG5Pa2F5LCBob2xkIG9uIGEgbWludXRlLiBgQlBGX0NBTExfSU1NYC4uLiB0aGF0J3MgYSBtYWNybywgaXNuJ3QgaXQ/IFJpZ2h0LiBNYWNyb3MgYXJlIGp1c3QgZ2xvcmlmaWVkIHRleHQgcmVwbGFjZW1lbnRzLCB3aGljaCBtZWFucyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0IGFjdHVhbGx5IGV4cGFuZHMgdG8uIEl04oCZcyBub3QgZ29pbmcgdG8gdGVsbCBtZSBhbnl0aGluZyB1c2VmdWwgdW50aWwgSSByZXNvbHZlIHdoYXQgdGhlIHVuZGVybHlpbmcgY29kZSBpcyBkb2luZy4gSSBuZWVkIHRvIHRyYWNrIGRvd24gaXRzIGRlZmluaXRpb24gdG8gdW5kZXJzdGFuZCB0aGUgdHJ1ZSBpbnRlbnQgaGVyZS4gVGltZSB0byBnbyBodW50aW5nIGZvciB3aGVyZSB0aGlzIG1hY3JvIGxpdmVzLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIHRoZSBzb3VyY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MDYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwOTowODoyNy4zNTAwNzA2MjJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMyMTczNDg1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIEJQRl9DQUxMX0lNTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9maWx0ZXIuaD0yNTk9c3RhdGljIGlubGluZSBib29sIGluc25faXNfY2FzdF91c2VyKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbilcXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtNDY2LVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6NDY3OiNkZWZpbmUgQlBGX0NBTExfSU1NKHgpXFx0KCh2b2lkICopKHgpIC0gKHZvaWQgKilfX2JwZl9jYWxsX2Jhc2UpXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC00NjgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA5OjA4OjMwLjY3MTgxNDU0N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwOTg0MjU0MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgQ29kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEJQRiBjb2RlIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIHJlcGxhY2VkIGAtIGluc24tXHUwMDNlaW1tID0gZm4tXHUwMDNlZnVuYyAtIF9fYnBmX2NhbGxfYmFzZTtgIHdpdGggYCsgaW5zbi1cdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0oZm4tXHUwMDNlZnVuYyk7YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIldlbGwsIHRoYXQncyBqdXN0IGEgbWFjcm8gc3Vic3RpdHV0aW9uLiBgQlBGX0NBTExfSU1NKHgpYCBpcyBkZWZpbmVkIGFzIGAoKHZvaWQgKikoeCkgLSAodm9pZCAqKV9fYnBmX2NhbGxfYmFzZSlgLCB3aGljaCBleHBhbmRzIHRvIHRoZSBleGFjdCBzYW1lIGNhbGN1bGF0aW9uIGFzIHRoZSBvbGQgY29kZS4gU28sIHRoZSBlZmZlY3QgaXMgcHJvYmFibHkgbnVsbC4gSXQncyBqdXN0IGEgc3R5bGlzdGljIGNoYW5nZSwgcGVyaGFwcyBmb3IgcmVhZGFiaWxpdHksIGJ1dCBmdW5jdGlvbmFsbHkgaWRlbnRpY2FsLCB3aGljaCwgaWYgdHJ1ZSwgaXMgbm90IGEgdmVyeSBleGNpdGluZyBjaGFuZ2UuXG5cbldhaXQgYSBzZWNvbmQsIGBmbi1cdTAwM2VmdW5jYCBpcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIGlzbid0IGl0PyBPa2F5LCBJIHdhbnQgdG8gY29uZmlybSBJIGhhdmVuJ3QgbWlzc2VkIHNvbWV0aGluZy4gTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIHR5cGUgb2YgYGZuLVx1MDAzZWZ1bmNgLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgbWFjcm8gaXMgYWN0dWFsbHkgZG9pbmcgd2hhdCBpdCBzYXlzIGl0IGlzLCBhbmQgaXMgdHlwZS1zYWZlLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwOTowODozNC43NzAyNDI2ODdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4ODg5OTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBicGZfZnVuY19wcm90b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2JwZi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmLmg9OTYyPXN0YXRpY19hc3NlcnQoX19CUEZfUkVUX1RZUEVfTUFYIFxcdTAwM2M9IEJQRl9CQVNFX1RZUEVfTElNSVQpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC05NjctICovXFxuaW5jbHVkZS9saW51eC9icGYuaDo5Njg6c3RydWN0IGJwZl9mdW5jX3Byb3RvIHtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTk2OS1cXHR1NjQgKCpmdW5jKSh1NjQgcjEsIHU2NCByMiwgdTY0IHIzLCB1NjQgcjQsIHU2NCByNSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTExNDI9c3RydWN0IGJwZl92ZXJpZmllcl9vcHMge1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMTE0My1cXHQvKiByZXR1cm4gZUJQRiBmdW5jdGlvbiBwcm90b3R5cGUgZm9yIHZlcmlmaWNhdGlvbiAqL1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MTE0NDpcXHRjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKlxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTE0NS1cXHQoKmdldF9mdW5jX3Byb3RvKShlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTI0NTY9aW50IGJwZl9wcm9nX2NhbGNfdGFnKHN0cnVjdCBicGZfcHJvZyAqZnApO1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMjQ1Ny1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjI0NTg6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICpicGZfZ2V0X3RyYWNlX3ByaW50a19wcm90byh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjI0NTk6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICpicGZfZ2V0X3RyYWNlX3ZwcmludGtfcHJvdG8odm9pZCk7XFxuaW5jbHVkZS9saW51eC9icGYuaC0yNDYwLVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MjQ2MTpjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKmJwZl9nZXRfcGVyZl9ldmVudF9yZWFkX3ZhbHVlX3Byb3RvKHZvaWQpO1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMjQ2Mi1cXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9Mjk2OT10eXBlZGVmIGludCAoKmJwZl9pdGVyX2ZpbGxfbGlua19pbmZvX3QpKGNvbnN0IHN0cnVjdCBicGZfaXRlcl9hdXhfaW5mbyAqYXV4LFxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjk3MC1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGJwZl9saW5rX2luZm8gKmluZm8pO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mjk3MTp0eXBlZGVmIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byAqXFxuaW5jbHVkZS9saW51eC9icGYuaC0yOTcyLSgqYnBmX2l0ZXJfZ2V0X2Z1bmNfcHJvdG9fdCkoZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0zMDA4PWludCBicGZfaXRlcl9wcm9nX3N1cHBvcnRlZChzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzAwOTpjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKlxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzAxMC1icGZfaXRlcl9nZXRfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTMxNjc9c3RydWN0IGJwZl9saW5rICpicGZfbGlua19ieV9pZCh1MzIgaWQpO1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMzE2OC1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjMxNjk6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICpicGZfYmFzZV9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCxcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTMxNzAtXFx0XFx0XFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTM0OTM9c3RhdGljIGlubGluZSBpbnQgYnRmX3N0cnVjdF9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzUwMS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM1MDI6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKlxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzUwMy1icGZfYmFzZV9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0zODU0PXN0YXRpYyBpbmxpbmUgczMyIGJwZl9rZXlfc2VyaWFsKGNvbnN0IHN0cnVjdCBicGZfa2V5ICprZXkpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM4NjAtLyogdmVyaWZpZXIgcHJvdG90eXBlcyBmb3IgaGVscGVyIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBlQlBGIHByb2dyYW1zICovXFxuaW5jbHVkZS9saW51eC9icGYuaDozODYxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF9sb29rdXBfZWxlbV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NjI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX3VwZGF0ZV9lbGVtX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg2MzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfZGVsZXRlX2VsZW1fcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODY0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF9wdXNoX2VsZW1fcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODY1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF9wb3BfZWxlbV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NjY6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX3BlZWtfZWxlbV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4Njc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM4NjgtXFxuaW5jbHVkZS9saW51eC9icGYuaDozODY5OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9wcmFuZG9tX3UzMl9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NzA6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODcxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9udW1hX25vZGVfaWRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODcyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3RhaWxfY2FsbF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NzM6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X25zX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3NDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfYm9vdF9uc19wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NzU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X3RhaV9uc19wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NzY6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODc3OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jdXJyZW50X3VpZF9naWRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODc4OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jdXJyZW50X2NvbW1fcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODc5OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja2lkX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg4MDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfc3RhY2tfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODgxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja19zbGVlcGFibGVfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODgyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF90YXNrX3N0YWNrX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg4MzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfdGFza19zdGFja19zbGVlcGFibGVfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODg0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja2lkX3Byb3RvX3BlO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg4NTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfc3RhY2tfcHJvdG9fcGU7XFxuaW5jbHVkZS9saW51eC9icGYuaDozODg2OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NvY2tfbWFwX3VwZGF0ZV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4ODc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc29ja19oYXNoX3VwZGF0ZV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4ODg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfY2dyb3VwX2lkX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg4OTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF9hbmNlc3Rvcl9jZ3JvdXBfaWRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODkwOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jZ3JvdXBfY2xhc3NpZF9jdXJyX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg5MTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9jdXJyZW50X3Rhc2tfdW5kZXJfY2dyb3VwX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg5MjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tc2dfcmVkaXJlY3RfaGFzaF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTM6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbXNnX3JlZGlyZWN0X21hcF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2tfcmVkaXJlY3RfaGFzaF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2tfcmVkaXJlY3RfbWFwX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg5NjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9zcGluX2xvY2tfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODk3OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NwaW5fdW5sb2NrX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg5ODpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfbG9jYWxfc3RvcmFnZV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc3RydG9sX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkwMDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9zdHJ0b3VsX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkwMTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl90Y3Bfc29ja19wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MDI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfamlmZmllczY0X3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkwMzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfbnNfY3VycmVudF9waWRfdGdpZF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MDQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZXZlbnRfb3V0cHV0X2RhdGFfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTA1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfb3V0cHV0X3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkwNjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9yaW5nYnVmX3Jlc2VydmVfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTA3OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfc3VibWl0X3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkwODpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9yaW5nYnVmX2Rpc2NhcmRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTA5OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfcXVlcnlfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTEwOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfcmVzZXJ2ZV9keW5wdHJfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTExOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfc3VibWl0X2R5bnB0cl9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MTI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfcmluZ2J1Zl9kaXNjYXJkX2R5bnB0cl9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MTM6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2tjX3RvX3RjcDZfc29ja19wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MTQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2tjX3RvX3RjcF9zb2NrX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxNTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za2NfdG9fdGNwX3RpbWV3YWl0X3NvY2tfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTE2OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrY190b190Y3BfcmVxdWVzdF9zb2NrX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxNzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za2NfdG9fdWRwNl9zb2NrX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxODpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za2NfdG9fdW5peF9zb2NrX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxOTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za2NfdG9fbXB0Y3Bfc29ja19wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MjA6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfY29weV9mcm9tX3VzZXJfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTIxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NucHJpbnRmX2J0Zl9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MjI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc25wcmludGZfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTIzOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3Blcl9jcHVfcHRyX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkyNDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl90aGlzX2NwdV9wdHJfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTI1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2t0aW1lX2dldF9jb2Fyc2VfbnNfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTI2OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NvY2tfZnJvbV9maWxlX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkyNzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfc29ja2V0X3B0cl9jb29raWVfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTI4OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3Rhc2tfc3RvcmFnZV9nZXRfcmVjdXJfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTI5OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3Rhc2tfc3RvcmFnZV9nZXRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTMwOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3Rhc2tfc3RvcmFnZV9kZWxldGVfcmVjdXJfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTMxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3Rhc2tfc3RvcmFnZV9kZWxldGVfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTMyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2Zvcl9lYWNoX21hcF9lbGVtX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkzMzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9idGZfZmluZF9ieV9uYW1lX2tpbmRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTM0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrX3NldHNvY2tvcHRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTM1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrX2dldHNvY2tvcHRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTM2OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrX3NldHNvY2tvcHRfbm9kZWxheV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5Mzc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfdW5sb2NrZWRfc2tfc2V0c29ja29wdF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5Mzg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfdW5sb2NrZWRfc2tfZ2V0c29ja29wdF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5Mzk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZmluZF92bWFfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTQwOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2xvb3BfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTQxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTQyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NldF9yZXR2YWxfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTQzOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9yZXR2YWxfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTQ0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3VzZXJfcmluZ2J1Zl9kcmFpbl9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5NDU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfY2dycF9zdG9yYWdlX2dldF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5NDY6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfY2dycF9zdG9yYWdlX2RlbGV0ZV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM5NDctXFxuaW5jbHVkZS9saW51eC9icGYuaDozOTQ4OmNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byAqdHJhY2luZ19wcm9nX2Z1bmNfcHJvdG8oXFxuaW5jbHVkZS9saW51eC9icGYuaC0zOTQ5LSAgZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwOTowODozNC44NzkxMzg5NjdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDk5MTIyMjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIENvZGUgQ2hhbmdlKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBgZm4tXHUwMDNlZnVuY2AgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uIHBvaW50ZXIsIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIGtleSBjaGFuZ2UgaGVyZSBpcyBtb3ZpbmcgZnJvbSB0aGlzOiBgLSBpbnNuLVx1MDAzZWltbSA9IGZuLVx1MDAzZWZ1bmMgLSBfX2JwZl9jYWxsX2Jhc2U7YCB0byB0aGlzOiBgKyBpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShmbi1cdTAwM2VmdW5jKTtgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgb3B0aW1pemF0aW9uLCBidXQgbGV0J3MgZGlnIGRlZXBlci5cblxuUmlnaHQsIGBCUEZfQ0FMTF9JTU0oeClgIGV4cGFuZHMgdG8gYCgodm9pZCAqKSh4KSAtICh2b2lkICopX19icGZfY2FsbF9iYXNlKWAuIEltbWVkaWF0ZWx5LCB0aGUgdXNlIG9mIGB2b2lkICpgIGNhc3RzIGlzIHJhaXNpbmcgYSBmbGFnLiBBbmQsICppbnNuLVx1MDAzZWltbSogaXMgYW4gKnMzMiogbWVhbmluZyBhIHNpZ25lZCAzMiBiaXQgaW50ZWdlci4gVGhlIHN1YnRyYWN0aW9uIG9mIHBvaW50ZXJzLCBpZiBgX19icGZfY2FsbF9iYXNlYCBpcyB0aGUgc2FtZSBwb2ludGVyIHR5cGUgYXMgYGZuLVx1MDAzZWZ1bmNgLCB3aWxsIGdpdmUgYSBkaWZmZXJlbmNlIGluIG11bHRpcGxlcyBvZiB0aGUgcG9pbnRlciB0eXBlIHNpemUuIElmIHRoZXkgYXJlIGludGVnZXJzLCBpdCdzIHN0cmFpZ2h0Zm9yd2FyZCBpbnRlZ2VyIHN1YnRyYWN0aW9uLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBfX2JwZl9jYWxsX2Jhc2VgIGFjdHVhbGx5IGlzLiBUaGF0J3MgdGhlIGNydXggb2YgdGhpcyB3aG9sZSBvcGVyYXRpb24uIEl0IGxvb2tzIGxpa2UgaXQncyB1c2VkIGFzIGEgYmFzZSBhZGRyZXNzLCBidXQgd2h5IGFuZCB3aGF0IGRvZXMgaXQgcmVwcmVzZW50PyBMZXQncyBmaWd1cmUgdGhpcyBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNjcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDk6MDg6NDAuMzc4MjYzNjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NzY5ODMyNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19icGZfY2FsbF9iYXNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jPTE1ODk9c3RhdGljIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eClcXG4tLVxcbmFyY2gvYXJtL25ldC9icGZfaml0XzMyLmMtMjA1OC1cXHRcXHRjb25zdCBzOCAqcjUgPSBicGYyYTMyW0JQRl9SRUdfNV07XFxuYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYzoyMDU5OlxcdFxcdGNvbnN0IHUzMiBmdW5jID0gKHUzMilfX2JwZl9jYWxsX2Jhc2UgKyAodTMyKWltbTtcXG5hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jLTIwNjAtXFxuLS1cXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYz04OTU9c3RhdGljIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eClcXG4tLVxcbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jLTEyMTUtXFx0e1xcbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jOjEyMTY6XFx0XFx0dTggKmZ1bmMgPSAoKHU4ICopX19icGZfY2FsbF9iYXNlKSArIGltbTtcXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYy0xMjE3LVxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTIyMzc9c3Q6XFx0XFx0XFx0aW5zbl9vZmYgPSBpbnNuLVxcdTAwM2VvZmY7XFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMjU3OC1cXHRcXHRjYXNlIEJQRl9KTVAgfCBCUEZfQ0FMTDoge1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzoyNTc5OlxcdFxcdFxcdGZ1bmMgPSAodTggKikgX19icGZfY2FsbF9iYXNlICsgaW1tMzI7XFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTI1ODAtXFx0XFx0XFx0aWYgKHNyY19yZWcgPT0gQlBGX1BTRVVET19DQUxMIFxcdTAwMjZcXHUwMDI2IHRhaWxfY2FsbF9yZWFjaGFibGUpIHtcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAzMi5jPTE1Njk9c3RhdGljIGludCBlbWl0X2tmdW5jX2NhbGwoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpicGZfcHJvZywgdTggKmVuZF9hZGRyLFxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTYzMC1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNjMxOlxcdGptcF9vZmZzZXQgPSAodTggKilfX2JwZl9jYWxsX2Jhc2UgKyBpbnNuLVxcdTAwM2VpbW0gLSBlbmRfYWRkcjtcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjMyLVxcdGlmICghaXNfc2ltbTMyKGptcF9vZmZzZXQpKSB7XFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wMzIuYz0xNjU5PXN0YXRpYyBpbnQgZG9faml0KHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2csIGludCAqYWRkcnMsIHU4ICppbWFnZSxcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAzMi5jLTIxMDUtXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcDMyLmM6MjEwNjpcXHRcXHRcXHRmdW5jID0gKHU4ICopIF9fYnBmX2NhbGxfYmFzZSArIGltbTMyO1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAzMi5jLTIxMDctXFx0XFx0XFx0am1wX29mZnNldCA9IGZ1bmMgLSAoaW1hZ2UgKyBhZGRyc1tpXSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTI1OT1zdGF0aWMgaW5saW5lIGJvb2wgaW5zbl9pc19jYXN0X3VzZXIoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuKVxcbi0tXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC00NjYtXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDo0Njc6I2RlZmluZSBCUEZfQ0FMTF9JTU0oeClcXHQoKHZvaWQgKikoeCkgLSAodm9pZCAqKV9fYnBmX2NhbGxfYmFzZSlcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTQ2OC1cXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTE3Mz12b2lkIHNrX2ZpbHRlcl91bmNoYXJnZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19maWx0ZXIgKmZwKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTExNzQtXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMTc1OnU2NCBfX2JwZl9jYWxsX2Jhc2UodTY0IHIxLCB1NjQgcjIsIHU2NCByMywgdTY0IHI0LCB1NjQgcjUpO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTE3Ni1cXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTEyNDY9aW50IGJwZl9qaXRfZ2V0X2Z1bmNfYWRkcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjc0LVxcdFxcdC8qIEFkZHJlc3Mgb2YgYSBCUEYgaGVscGVyIGNhbGwuIFNpbmNlIHBhcnQgb2YgdGhlIGNvcmVcXG5rZXJuZWwvYnBmL2NvcmUuYzoxMjc1OlxcdFxcdCAqIGtlcm5lbCwgaXQncyBhbHdheXMgYXQgYSBmaXhlZCBsb2NhdGlvbi4gX19icGZfY2FsbF9iYXNlXFxua2VybmVsL2JwZi9jb3JlLmMtMTI3Ni1cXHRcXHQgKiBhbmQgdGhlIGhlbHBlciB3aXRoIGltbSByZWxhdGl2ZSB0byBpdCBhcmUgYm90aCBpbiBjb3JlXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjc4LVxcdFxcdCAqL1xcbmtlcm5lbC9icGYvY29yZS5jOjEyNzk6XFx0XFx0YWRkciA9ICh1OCAqKV9fYnBmX2NhbGxfYmFzZSArIGltbTtcXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjgwLVxcdH1cXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTE1ODY9dTE2IGJwZl9vdXRfc3RhY2tfYXJnX2NudChjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjAyLSAqL1xcbmtlcm5lbC9icGYvY29yZS5jOjE2MDM6bm9pbmxpbmUgdTY0IF9fYnBmX2NhbGxfYmFzZSh1NjQgcjEsIHU2NCByMiwgdTY0IHIzLCB1NjQgcjQsIHU2NCByNSlcXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjA0LXtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTE2MDYtfVxcbmtlcm5lbC9icGYvY29yZS5jOjE2MDc6RVhQT1JUX1NZTUJPTF9HUEwoX19icGZfY2FsbF9iYXNlKTtcXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjA4LVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MTc5Nj1zdGF0aWMgdTY0IF9fX2JwZl9wcm9nX3J1bih1NjQgKnJlZ3MsIGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbilcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTIwODctXFx0XFx0ICovXFxua2VybmVsL2JwZi9jb3JlLmM6MjA4ODpcXHRcXHRCUEZfUjAgPSAoX19icGZfY2FsbF9iYXNlICsgaW5zbi1cXHUwMDNlaW1tKShCUEZfUjEsIEJQRl9SMiwgQlBGX1IzLFxcbmtlcm5lbC9icGYvY29yZS5jLTIwODktXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIEJQRl9SNCwgQlBGX1I1KTtcXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmM9MTAyOD1zdGF0aWMgaW50IGppdF9zdWJwcm9ncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0xMDU2LVxcdFxcdGVudi1cXHUwMDNlaW5zbl9hdXhfZGF0YVtpXS5jYWxsX2ltbSA9IGluc24tXFx1MDAzZWltbTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjEwNTc6XFx0XFx0LyogcG9pbnQgaW1tIHRvIF9fYnBmX2NhbGxfYmFzZSsxIGZyb20gSklUcyBwb2ludCBvZiB2aWV3ICovXFxua2VybmVsL2JwZi9maXh1cHMuYy0xMDU4LVxcdFxcdGluc24tXFx1MDAzZWltbSA9IDE7XFxuLS1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTExOTYtXFx0XFx0ICogbWlnaHQgbm90IGJlIGxhcmdlIGVub3VnaCB0byBob2xkIHRoZSBvZmZzZXQgb2YgdGhlIHN0YXJ0XFxua2VybmVsL2JwZi9maXh1cHMuYzoxMTk3OlxcdFxcdCAqIGFkZHJlc3Mgb2YgdGhlIGNhbGxlZSdzIEpJVGVkIGltYWdlIGZyb20gX19icGZfY2FsbF9iYXNlXFxua2VybmVsL2JwZi9maXh1cHMuYy0xMTk4LVxcdFxcdCAqXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1OTk9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYxMi1cXHQvKiBpbnNuLVxcdTAwM2VpbW0gaGFzIHRoZSBidGYgZnVuY19pZC4gUmVwbGFjZSBpdCB3aXRoIGFuIG9mZnNldCByZWxhdGl2ZSB0b1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYxMzpcXHQgKiBfX2JwZl9jYWxsX2Jhc2UsIHVubGVzcyB0aGUgSklUIG5lZWRzIHRvIGNhbGwgZnVuY3Rpb25zIHRoYXQgYXJlXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjE0LVxcdCAqIGZ1cnRoZXIgdGhhbiAzMiBiaXRzIGF3YXkgKGJwZl9qaXRfc3VwcG9ydHNfZmFyX2tmdW5jX2NhbGwoKSkuXFxuLS1cXG5saWIvdGVzdF9icGYuYz0xNTYyMD1zdGF0aWMgX19pbml0IGludCBwcmVwYXJlX3RhaWxfY2FsbF90ZXN0cyhzdHJ1Y3QgYnBmX2FycmF5ICoqcHByb2dzKVxcbi0tXFxubGliL3Rlc3RfYnBmLmMtMTU3MTAtXFx0XFx0XFx0XFx0Kmluc24gPSBCUEZfRU1JVF9DQUxMKGFkZHIpO1xcbmxpYi90ZXN0X2JwZi5jOjE1NzExOlxcdFxcdFxcdFxcdGlmICgobG9uZylfX2JwZl9jYWxsX2Jhc2UgKyBpbnNuLVxcdTAwM2VpbW0gIT0gYWRkcilcXG5saWIvdGVzdF9icGYuYy0xNTcxMi1cXHRcXHRcXHRcXHRcXHQqaW5zbiA9IEJQRl9KTVBfQSgwKTsgLyogU2tpcDogTk9QICovXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYz0zNjE9c3RhdGljIGJvb2wgY29udmVydF9icGZfZXh0ZW5zaW9ucyhzdHJ1Y3Qgc29ja19maWx0ZXIgKmZwLFxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtNDc5LVxcdFxcdC8qIFRoaXMgaXMganVzdCBhIGR1bW15IGNhbGwgdG8gYXZvaWQgbGV0dGluZyB0aGUgY29tcGlsZXJcXG5uZXQvY29yZS9maWx0ZXIuYzo0ODA6XFx0XFx0ICogZXZpY3QgX19icGZfY2FsbF9iYXNlKCkgYXMgYW4gb3B0aW1pemF0aW9uLiBQbGFjZWQgaGVyZVxcbm5ldC9jb3JlL2ZpbHRlci5jLTQ4MS1cXHRcXHQgKiB3aGVyZSBuby1vbmUgYm90aGVycy5cXG5uZXQvY29yZS9maWx0ZXIuYy00ODItXFx0XFx0ICovXFxubmV0L2NvcmUvZmlsdGVyLmM6NDgzOlxcdFxcdEJVR19PTihfX2JwZl9jYWxsX2Jhc2UoMCwgMCwgMCwgMCwgMCkgIT0gMCk7XFxubmV0L2NvcmUvZmlsdGVyLmMtNDg0LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL3hsYXRlZF9kdW1wZXIuYz0yNj12b2lkIGtlcm5lbF9zeW1zX2xvYWQoc3RydWN0IGR1bXBfZGF0YSAqZGQpXFxuLS1cXG50b29scy9icGYvYnBmdG9vbC94bGF0ZWRfZHVtcGVyLmMtNTUtXFx0XFx0c3ltLVxcdTAwM2VhZGRyZXNzID0gKHVuc2lnbmVkIGxvbmcpYWRkcmVzcztcXG50b29scy9icGYvYnBmdG9vbC94bGF0ZWRfZHVtcGVyLmM6NTY6XFx0XFx0aWYgKCFzdHJjbXAoc3ltLVxcdTAwM2VuYW1lLCBcXFwiX19icGZfY2FsbF9iYXNlXFxcIikpIHtcXG50b29scy9icGYvYnBmdG9vbC94bGF0ZWRfZHVtcGVyLmMtNTctXFx0XFx0XFx0ZGQtXFx1MDAzZWFkZHJlc3NfY2FsbF9iYXNlID0gc3ltLVxcdTAwM2VhZGRyZXNzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwOTowODo0Mi45NTUyNTU1NThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI0NTQxNTEwMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgQ2FsbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0IHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gYF9fYnBmX2NhbGxfYmFzZWAsIHdoaWNoIGlzIGRlZmluZWQgYXMgYSBzaW1wbGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIDAuICBUaGVuIHRoZXJlJ3MgdGhpcyBtYWNybywgYEJQRl9DQUxMX0lNTSh4KWAsIHdoaWNoIGlzIGRlZmluZWQgYXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBgKHZvaWQgKikoeClgIGFuZCBgKHZvaWQgKilfX2JwZl9jYWxsX2Jhc2VgLiBUaGUgcGF0Y2ggaXRzZWxmIHJlcGxhY2VzIGBpbnNuLVx1MDAzZWltbSA9IGZuLVx1MDAzZWZ1bmMgLSBfX2JwZl9jYWxsX2Jhc2U7YCB3aXRoIGBpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShmbi1cdTAwM2VmdW5jKTtgLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgZm4tXHUwMDNlZnVuY2AgaXMgYSBmdW5jdGlvbiBwb2ludGVyLiAgQW5kIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgc3VidHJhY3RpbmcgdHdvIGZ1bmN0aW9uIHBvaW50ZXJzIGRpcmVjdGx5IGluIHN0YW5kYXJkIEMgaXMgbm90IHZhbGlkIHBvaW50ZXIgYXJpdGhtZXRpYy4gSXQncyBlaXRoZXIgYSBHTlUgZXh0ZW5zaW9uIG9yIHVuZGVmaW5lZCBiZWhhdmlvci4gU28sIHRoZSBvbGQgY29kZSwgYGZuLVx1MDAzZWZ1bmMgLSBfX2JwZl9jYWxsX2Jhc2VgLCBzZWVtcyBzdXNwZWN0LiBIb3dldmVyLCB0aGUgbWFjcm8gY2FzdHMgYm90aCBmdW5jdGlvbiBwb2ludGVycyB0byBgdm9pZCAqYCBiZWZvcmUgdGhlIHN1YnRyYWN0aW9uLlxuXG5Ob3csIEdDQyBkb2VzIGFsbG93IHBvaW50ZXIgYXJpdGhtZXRpYyBvbiBgdm9pZCAqYCwgdHJlYXRpbmcgaXQgYXMgYSBieXRlIG9mZnNldC4gU28sIGAodm9pZCAqKWZuLVx1MDAzZWZ1bmMgLSAodm9pZCAqKV9fYnBmX2NhbGxfYmFzZWAgY29tcHV0ZXMgdGhlIGJ5dGUgb2Zmc2V0IGJldHdlZW4gdGhlIHR3by4gSG93ZXZlciwgd2hhdCBpZiB3ZSBkaWRuJ3QgaGF2ZSB0aGUgY2FzdHM/IFdoYXQgd291bGQgYmUgdGhlIHR5cGUgb2YgdGhlIHN1YnRyYWN0aW9uLCBpZiBHQ0MgYWxsb3dzIGZ1bmN0aW9uIHBvaW50ZXIgc3VidHJhY3Rpb24/IExldCdzIHZlcmlmeSB3aGF0IGBmbi1cdTAwM2VmdW5jYCBpcy4gQWgsIGl0J3MgYSBmdW5jdGlvbiBwb2ludGVyLCBzcGVjaWZpY2FsbHksIGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZSBgdTY0ICgqKSh1NjQsIHU2NCwgdTY0LCB1NjQsIHU2NClgLlxuXG5Ob3csIGlmIEkgc3VidHJhY3QgdHdvIGZ1bmN0aW9uIHBvaW50ZXJzIGluIEdDQywgZG9lcyBpdCBnaXZlIG1lIHRoZSBkaWZmZXJlbmNlIGluIGJ5dGVzLCBvciBkb2VzIGl0IGdpdmUgYW4gZXJyb3I/IEl0IG1pZ2h0IGNvbXBsYWluIG9yIGl0IG1pZ2h0IGdpdmUgdGhlIGRpZmZlcmVuY2UgaW4gYnl0ZXMuIEJ1dCBmdW5jdGlvbmFsbHksIHdpdGhvdXQgdGhlIGNhc3RzLCBgeCAtIHlgIHdvdWxkIGdpdmUgdGhlIHNhbWUgYnl0ZSBvZmZzZXQgYXMgdGhlIHZlcnNpb24gd2l0aCB0aGUgY2FzdHMsIGlmIEdDQyBhbGxvd3MgaXQgYW5kIHRyZWF0cyBmdW5jdGlvbiBwb2ludGVycyBhcyBzaXplIDEuXG5cbldhaXQsIGlzIHRoZXJlIGFueSBhY3R1YWwgZnVuY3Rpb25hbCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG9sZCBjb2RlIGFuZCB0aGUgbmV3IGNvZGU/IExldCdzIHNlZS4uLiBgaW5zbi1cdTAwM2VpbW1gIGlzIGEgc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIChgczMyYCkuIGBmbi1cdTAwM2VmdW5jYCBhbmQgYF9fYnBmX2NhbGxfYmFzZWAgYXJlIGJvdGggcG9pbnRlcnMgdG8gdGhlIHNhbWUgZnVuY3Rpb24gdHlwZS4gU28gc3VidHJhY3RpbmcgdHdvIHBvaW50ZXJzIG9mIHRoZSBzYW1lIHR5cGUgZ2l2ZXMgdGhlIGRpZmZlcmVuY2UgaW4gYnl0ZXMsIGRpdmlkZWQgYnkgdGhlIHNpemUgb2YgdGhlIHR5cGUuIFdoYXQgaXMgdGhlIHNpemUgb2YgYSBmdW5jdGlvbiB0eXBlIGluIEdDQz8gR0NDIGhhcyBhbiBleHRlbnNpb24sIGBzaXplb2YoZnVuY3Rpb24pYCB3aGljaCBpcyAxLiBTbywgc3VidHJhY3RpbmcgYGZuLVx1MDAzZWZ1bmMgLSBfX2JwZl9jYWxsX2Jhc2VgIGdpdmVzIHRoZSBkaWZmZXJlbmNlIGluIGJ5dGVzISBBbmQgdGhlIGAodm9pZCAqKWZuLVx1MDAzZWZ1bmMgLSAodm9pZCAqKV9fYnBmX2NhbGxfYmFzZWAgYWxzbyBnaXZlcyB0aGUgZGlmZmVyZW5jZSBpbiBieXRlcyFcblxuU28sIHRoZSB2YWx1ZXMgY29tcHV0ZWQgYXJlIGlkZW50aWNhbC4gVGhlIHBhdGNoIGlzIHNpbXBseSBhIGNsZWFudXAsIHVzaW5nIHRoZSBgQlBGX0NBTExfSU1NYCBtYWNybyBpbnN0ZWFkIG9mIG9wZW4tY29kaW5nIGl0LiBJdCBwcm9iYWJseSBhdm9pZHMgY29tcGlsZXIgd2FybmluZ3Mgb24gc29tZSBjb21waWxlcnMgYW5kIHByb3ZpZGVzIGNvbnNpc3RlbmN5LiBJJ2xsIHZlcmlmeSB0aGlzIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyMTQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDk6MDg6NTUuNDA5NDA4OTMyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjc5MDE2MjQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImluc24tXFx1MDAzZWltbSA9IGZuLVxcdTAwM2VmdW5jIC0gX19icGZfY2FsbF9iYXNlO1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2ZpeHVwcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwOTowODo1NS43NzczMzAyODZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyMjc0MTEyMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29zbWV0aWMgQlBGIFBhdGNoKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQgbWUgcXVpY2tseSBnbGFuY2UgYXQgdGhlIGBnaXQgbG9nYCB0byBzZWUgaWYgdGhlIGF1dGhvcidzIHJhdGlvbmFsZSBpcyByZWFkaWx5IGF2YWlsYWJsZS4gSG1tLCBubyBgZ2l0IGxvZ2AgZGlyZWN0bHksIGJ1dCBJIGNhbiBwcm9iYWJseSBnZXQgdGhlIGdpc3QgdXNpbmcgYGdyZXBwZXJgLCBvciwgY29uc2lkZXJpbmcgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBpdOKAmXMgbGlrZWx5IGp1c3QgY29zbWV0aWMgcmVmYWN0b3JpbmcuIExldCdzIGRpZyBpbiBhbmQgZXhhbWluZSB0aGUgZGlmZiBpdHNlbGYuXG5cbkFscmlnaHQsIHRoZSBvbmx5IGNoYW5nZSBpcyBpbiBga2VybmVsL2JwZi9maXh1cHMuY2AuIEkgc2VlIGl0IHJpZ2h0IGF3YXk6IGEgbGluZSBpcyBjaGFuZ2VkIGludm9sdmluZyBgaW5zbi1cdTAwM2VpbW1gLiBQcmV2aW91c2x5IGl0IHdhcyBgaW5zbi1cdTAwM2VpbW0gPSBmbi1cdTAwM2VmdW5jIC0gX19icGZfY2FsbF9iYXNlO2AsIG5vdyBpdCdzIGBpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShmbi1cdTAwM2VmdW5jKTtgLlxuXG5Ob3csIGxldCdzIHVucGFjayB0aGlzLi4uIGBmbi1cdTAwM2VmdW5jYCBhbmQgYF9fYnBmX2NhbGxfYmFzZWAgYXJlIGZ1bmN0aW9uIHBvaW50ZXJzLiBUaGUgc3VidHJhY3Rpb24sIGF0IGZpcnN0IGdsYW5jZSwgc2VlbXMgdG8ganVzdCBjb21wdXRlIGFuIG9mZnNldC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIHN1YnRsZSB0aG91Z2guIExldCdzIHNlZSBpZiB0aGUgb3RoZXIgY2hhbmdlIGlzIHRoZXJlIGluIHRoZSBwYXRjaC5cblxuV2FpdCwgbG9va2luZyBhdCB0aGUgY29kZSBpbiBga2VybmVsL2JwZi9jb3JlLmNgLCBJIHNlZSB0aGF0IGBfX2JwZl9jYWxsX2Jhc2VgIGlzICphY3R1YWxseSogYSBmdW5jdGlvbjogYG5vaW5saW5lIHU2NCBfX2JwZl9jYWxsX2Jhc2UodTY0IHIxLCB1NjQgcjIsIHU2NCByMywgdTY0IHI0LCB1NjQgcjUpYC4gQnV0LCB3aGVuIHVzZWQgaW4gYW4gZXhwcmVzc2lvbiB3aXRob3V0IGBcdTAwMjZgLCBpdCBkZWNheXMgdG8gYSBmdW5jdGlvbiBwb2ludGVyLiBTbywgaW4gdGhlIG9yaWdpbmFsIGNvZGUsIHRoZSBzdWJ0cmFjdGlvbiBpcyBpbmRlZWQgc3VidHJhY3RpbmcgdHdvIGZ1bmN0aW9uIHBvaW50ZXJzLiBOb3csIGluIEdDQywgcG9pbnRlciBhcml0aG1ldGljIG9uIGZ1bmN0aW9uIHBvaW50ZXJzIGlzIGFuIGV4dGVuc2lvbiwgYW5kIHRoZSBzaXplIG9mIGEgZnVuY3Rpb24gaXMgMSBieXRlLCBqdXN0IGxpa2UgYHZvaWRgLiBTbywgZWZmZWN0aXZlbHksIHRoZSByZXN1bHQgd2lsbCBldmFsdWF0ZSB0byB0aGUgYnl0ZSBvZmZzZXQuXG5cbk5vdyBsZXQncyBsb29rIGF0IGBCUEZfQ0FMTF9JTU0oZm4tXHUwMDNlZnVuYylgLiBUaGlzIGV2YWx1YXRlcyB0byBgKCh2b2lkICopKGZuLVx1MDAzZWZ1bmMpIC0gKHZvaWQgKilfX2JwZl9jYWxsX2Jhc2UpYC4gVGhpcyBhbHNvIGNvbXB1dGVzIHRoZSBieXRlIG9mZnNldC4gQmluZ28hIEl0J3MgdGhlIHNhbWUuXG5cblRoZXJlZm9yZSwgdGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZywgYSBzaW1wbGUgbWFjcm8gcmVwbGFjZW1lbnQgZm9yIGNvbnNpc3RlbmN5LiBObyBmdW5jdGlvbmFsIGNoYW5nZXMuXG5cblNvLCBpbiBjb25jbHVzaW9uLCB0aGlzIHBhdGNoIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHRoYXQgdGhlIGNoYW5nZSByZXBsYWNlcyBhIGZ1bmN0aW9uIHBvaW50ZXIgc3VidHJhY3Rpb24gd2l0aCBhbiBlcXVpdmFsZW50IG1hY3JvLiBTaW5jZSBHQ0MgdHJlYXRzIHRoZSBzaXplIG9mIGEgZnVuY3Rpb24gYXMgMSAoc2FtZSBhcyBgdm9pZGApLCB0aGUgY2FsY3VsYXRlZCBieXRlIG9mZnNldCBpcyBpZGVudGljYWwuIFRoZSBjaGFuZ2UgaXMgcHVyZWx5IGNvc21ldGljLCByZXByZXNlbnRpbmcgYSByZWZhY3RvcmluZyB3aXRoIG5vIG9ic2VydmFibGUgZnVuY3Rpb25hbCBlZmZlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNjMyLCJPdXRwdXRUb2tlbnMiOjg4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA5OjA5OjA3LjAwNDc0NDMxOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGFuIG9wZW4tY29kZWQgZnVuY3Rpb24gcG9pbnRlciBzdWJ0cmFjdGlvbiB3aXRoIHRoZSBlcXVpdmFsZW50IEJQRl9DQUxMX0lNTSBtYWNyby4gU2luY2UgR0NDIHRyZWF0cyB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIGFzIDEgYnl0ZSAoc2FtZSBhcyB2b2lkKSwgdGhlIGNvbXB1dGVkIGJ5dGUgb2Zmc2V0IGlzIGlkZW50aWNhbC4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGFuIG9wZW4tY29kZWQgZnVuY3Rpb24gcG9pbnRlciBzdWJ0cmFjdGlvbiB3aXRoIHRoZSBlcXVpdmFsZW50IEJQRl9DQUxMX0lNTSBtYWNyby4gU2luY2UgR0NDIHRyZWF0cyB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIGFzIDEgYnl0ZSAoc2FtZSBhcyB2b2lkKSwgdGhlIGNvbXB1dGVkIGJ5dGUgb2Zmc2V0IGlzIGlkZW50aWNhbC4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpb5nq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 08:57:25 +0000 UTC FinishedAt: 2026-07-01 09:09:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA5OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGFuIG9wZW4tY29kZWQgZnVuY3Rpb24gcG9pbnRlciBzdWJ0cmFjdGlvbiB3aXRoIHRoZSBlcXVpdmFsZW50IEJQRl9DQUxMX0lNTSBtYWNyby4gU2luY2UgR0NDIHRyZWF0cyB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIGFzIDEgYnl0ZSAoc2FtZSBhcyB2b2lkKSwgdGhlIGNvbXB1dGVkIGJ5dGUgb2Zmc2V0IGlzIGlkZW50aWNhbC4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDk6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ZjVkNDg2ZDRlZDQxZmEwOGUxYTNlMWQ2ZGE0OWZlODc0NmQ0MDQwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAwOTowODoxNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2ZpeHVwcy5jIGIva2VybmVsL2JwZi9maXh1cHMuY1xuaW5kZXggM2NmMmNjNmUzYWI2NmEuLjEyYThhNGViNzU3ZjE4IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9maXh1cHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9maXh1cHMuY1xuQEAgLTIzMzgsNyAmIzQzOzIzMzgsNyBAQCBpbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gXHRcdFx0XHQgICAgIGZ1bmNfaWRfbmFtZShpbnNuLVx1MDAzZWltbSksIGluc24tXHUwMDNlaW1tKTtcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdFx0fVxuLVx0XHRpbnNuLVx1MDAzZWltbSA9IGZuLVx1MDAzZWZ1bmMgLSBfX2JwZl9jYWxsX2Jhc2U7XG4mIzQzO1x0XHRpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShmbi1cdTAwM2VmdW5jKTtcbiBuZXh0X2luc246XG4gXHRcdGlmIChzdWJwcm9nc1tjdXJfc3VicHJvZyAmIzQzOyAxXS5zdGFydCA9PSBpICYjNDM7IGRlbHRhICYjNDM7IDEpIHtcbiBcdFx0XHRzdWJwcm9nc1tjdXJfc3VicHJvZ10uc3RhY2tfZGVwdGggJiM0Mzs9IHN0YWNrX2RlcHRoX2V4dHJhO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA5OjA4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGFuIG9wZW4tY29kZWQgZnVuY3Rpb24gcG9pbnRlciBzdWJ0cmFjdGlvbiB3aXRoIHRoZSBlcXVpdmFsZW50IEJQRl9DQUxMX0lNTSBtYWNyby4gU2luY2UgR0NDIHRyZWF0cyB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIGFzIDEgYnl0ZSAoc2FtZSBhcyB2b2lkKSwgdGhlIGNvbXB1dGVkIGJ5dGUgb2Zmc2V0IGlzIGlkZW50aWNhbC4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDRmNWQ0ODZkNGVkNDFmYTA4ZTFhM2UxZDZkYTQ5ZmU4NzQ2ZDQwNDAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDA5OjA4OjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9maXh1cHMuYyBiL2tlcm5lbC9icGYvZml4dXBzLmMKaW5kZXggM2NmMmNjNmUzYWI2NmEuLjEyYThhNGViNzU3ZjE4IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2ZpeHVwcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvZml4dXBzLmMKQEAgLTIzMzgsNyAmIzQzOzIzMzgsNyBAQCBpbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiAJCQkJICAgICBmdW5jX2lkX25hbWUoaW5zbi0mZ3Q7aW1tKSwgaW5zbi0mZ3Q7aW1tKTsKIAkJCXJldHVybiAtRUZBVUxUOwogCQl9Ci0JCWluc24tJmd0O2ltbSA9IGZuLSZndDtmdW5jIC0gX19icGZfY2FsbF9iYXNlOwomIzQzOwkJaW5zbi0mZ3Q7aW1tID0gQlBGX0NBTExfSU1NKGZuLSZndDtmdW5jKTsKIG5leHRfaW5zbjoKIAkJaWYgKHN1YnByb2dzW2N1cl9zdWJwcm9nICYjNDM7IDFdLnN0YXJ0ID09IGkgJiM0MzsgZGVsdGEgJiM0MzsgMSkgewogCQkJc3VicHJvZ3NbY3VyX3N1YnByb2ddLnN0YWNrX2RlcHRoICYjNDM7PSBzdGFja19kZXB0aF9leHRyYTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDk6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgQlBGIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYC4gSXQgc2VlbXMgbGlrZSB0aGV5JiMzOTt2ZSBjaGFuZ2VkIHRoZSBpbW1lZGlhdGUgdmFsdWUgYXNzaWdubWVudCB3aXRoaW4gYGJwZl9kb19taXNjX2ZpeHVwc2AgZm9yIEJQRiBjYWxscy4gU3BlY2lmaWNhbGx5LCB0aGUgb2xkIGNvZGUgZGlyZWN0bHkgc3VidHJhY3RlZCBhIGJhc2UgYWRkcmVzcyAoYF9fYnBmX2NhbGxfYmFzZWApIGZyb20gdGhlIGZ1bmN0aW9uIHBvaW50ZXIgKGBmbi0mZ3Q7ZnVuY2ApLCB3aGlsZSB0aGUgbmV3IGNvZGUgaXMgdXNpbmcgYSBtYWNybywgYEJQRl9DQUxMX0lNTWAsIGFwcGxpZWQgdG8gdGhhdCBzYW1lIGZ1bmN0aW9uIHBvaW50ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgY2hhbmdlIHdhcyBtYWRlLiBXYXMgaXQgYSBzaW1wbGUgc3R5bGlzdGljIGNoYW5nZSwgb3IgZG9lcyB0aGlzIGBCUEZfQ0FMTF9JTU1gIG1hY3JvIGludHJvZHVjZSBzb21lIGFkZGl0aW9uYWwgYmVoYXZpb3Igb3IgbGF5ZXIgb2YgYWJzdHJhY3Rpb24/IFRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGltcGFjdCwgSSBuZWVkIHRvIGRpZyBpbnRvIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCBhbmQgZmlndXJlIG91dCB3aGF0IHRoaXMgYEJQRl9DQUxMX0lNTWAgbWFjcm8gZXhwYW5kcyB0by4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGludGVudCBhbmQgaW1wbGljYXRpb25zIG9mIHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDk6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX0NBTExfSU1NJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9maXh1cHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2ZpeHVwcy5jPTg4PXN0YXRpYyBpbnQgc2V0X2tmdW5jX2Rlc2NfaW1tKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfZGVzYyAqZGVzYylcbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTk0LVx0fSBlbHNlIHtcbmtlcm5lbC9icGYvZml4dXBzLmM6OTU6XHRcdGNhbGxfaW1tID0gQlBGX0NBTExfSU1NKGRlc2MtXHUwMDNlYWRkcik7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTk2LVx0XHQvKiBDaGVjayB3aGV0aGVyIHRoZSByZWxhdGl2ZSBvZmZzZXQgb3ZlcmZsb3dzIGRlc2MtXHUwMDNlaW1tICovXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYz0xMDI4PXN0YXRpYyBpbnQgaml0X3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0xMTg4LVx0XHRcdHN1YnByb2cgPSBpbnNuLVx1MDAzZW9mZjtcbmtlcm5lbC9icGYvZml4dXBzLmM6MTE4OTpcdFx0XHRpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShmdW5jW3N1YnByb2ddLVx1MDAzZWJwZl9mdW5jKTtcbmtlcm5lbC9icGYvZml4dXBzLmMtMTE5MC1cdFx0fVxuLS1cbmtlcm5lbC9icGYvZml4dXBzLmM9MTQ4MT1pbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0yMDQ3LVx0XHRcdGNhc2UgQlBGX0ZVTkNfbWFwX2xvb2t1cF9lbGVtOlxua2VybmVsL2JwZi9maXh1cHMuYzoyMDQ4Olx0XHRcdFx0aW5zbi1cdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVx1MDAzZW1hcF9sb29rdXBfZWxlbSk7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNDktXHRcdFx0XHRnb3RvIG5leHRfaW5zbjtcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA1MC1cdFx0XHRjYXNlIEJQRl9GVU5DX21hcF91cGRhdGVfZWxlbTpcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA1MTpcdFx0XHRcdGluc24tXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKG9wcy1cdTAwM2VtYXBfdXBkYXRlX2VsZW0pO1xua2VybmVsL2JwZi9maXh1cHMuYy0yMDUyLVx0XHRcdFx0Z290byBuZXh0X2luc247XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNTMtXHRcdFx0Y2FzZSBCUEZfRlVOQ19tYXBfZGVsZXRlX2VsZW06XG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIwNTQ6XHRcdFx0XHRpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShvcHMtXHUwMDNlbWFwX2RlbGV0ZV9lbGVtKTtcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA1NS1cdFx0XHRcdGdvdG8gbmV4dF9pbnNuO1xua2VybmVsL2JwZi9maXh1cHMuYy0yMDU2LVx0XHRcdGNhc2UgQlBGX0ZVTkNfbWFwX3B1c2hfZWxlbTpcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA1NzpcdFx0XHRcdGluc24tXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKG9wcy1cdTAwM2VtYXBfcHVzaF9lbGVtKTtcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA1OC1cdFx0XHRcdGdvdG8gbmV4dF9pbnNuO1xua2VybmVsL2JwZi9maXh1cHMuYy0yMDU5LVx0XHRcdGNhc2UgQlBGX0ZVTkNfbWFwX3BvcF9lbGVtOlxua2VybmVsL2JwZi9maXh1cHMuYzoyMDYwOlx0XHRcdFx0aW5zbi1cdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVx1MDAzZW1hcF9wb3BfZWxlbSk7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNjEtXHRcdFx0XHRnb3RvIG5leHRfaW5zbjtcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA2Mi1cdFx0XHRjYXNlIEJQRl9GVU5DX21hcF9wZWVrX2VsZW06XG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIwNjM6XHRcdFx0XHRpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShvcHMtXHUwMDNlbWFwX3BlZWtfZWxlbSk7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNjQtXHRcdFx0XHRnb3RvIG5leHRfaW5zbjtcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA2NS1cdFx0XHRjYXNlIEJQRl9GVU5DX3JlZGlyZWN0X21hcDpcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA2NjpcdFx0XHRcdGluc24tXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKG9wcy1cdTAwM2VtYXBfcmVkaXJlY3QpO1xua2VybmVsL2JwZi9maXh1cHMuYy0yMDY3LVx0XHRcdFx0Z290byBuZXh0X2luc247XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNjgtXHRcdFx0Y2FzZSBCUEZfRlVOQ19mb3JfZWFjaF9tYXBfZWxlbTpcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA2OTpcdFx0XHRcdGluc24tXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKG9wcy1cdTAwM2VtYXBfZm9yX2VhY2hfY2FsbGJhY2spO1xua2VybmVsL2JwZi9maXh1cHMuYy0yMDcwLVx0XHRcdFx0Z290byBuZXh0X2luc247XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNzEtXHRcdFx0Y2FzZSBCUEZfRlVOQ19tYXBfbG9va3VwX3BlcmNwdV9lbGVtOlxua2VybmVsL2JwZi9maXh1cHMuYzoyMDcyOlx0XHRcdFx0aW5zbi1cdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVx1MDAzZW1hcF9sb29rdXBfcGVyY3B1X2VsZW0pO1xua2VybmVsL2JwZi9maXh1cHMuYy0yMDczLVx0XHRcdFx0Z290byBuZXh0X2luc247XG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0yMzQwLVx0XHR9XG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIzNDE6XHRcdGluc24tXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKGZuLVx1MDAzZWZ1bmMpO1xua2VybmVsL2JwZi9maXh1cHMuYy0yMzQyLW5leHRfaW5zbjpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwOTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDA2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIGBCUEZfQ0FMTF9JTU1gKioKCk9rYXksIGhvbGQgb24gYSBtaW51dGUuIGBCUEZfQ0FMTF9JTU1gLi4uIHRoYXQmIzM5O3MgYSBtYWNybywgaXNuJiMzOTt0IGl0PyBSaWdodC4gTWFjcm9zIGFyZSBqdXN0IGdsb3JpZmllZCB0ZXh0IHJlcGxhY2VtZW50cywgd2hpY2ggbWVhbnMgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBpdCBhY3R1YWxseSBleHBhbmRzIHRvLiBJdOKAmXMgbm90IGdvaW5nIHRvIHRlbGwgbWUgYW55dGhpbmcgdXNlZnVsIHVudGlsIEkgcmVzb2x2ZSB3aGF0IHRoZSB1bmRlcmx5aW5nIGNvZGUgaXMgZG9pbmcuIEkgbmVlZCB0byB0cmFjayBkb3duIGl0cyBkZWZpbml0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIHRydWUgaW50ZW50IGhlcmUuIFRpbWUgdG8gZ28gaHVudGluZyBmb3Igd2hlcmUgdGhpcyBtYWNybyBsaXZlcy4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgc291cmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA5OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgQlBGX0NBTExfSU1NJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZmlsdGVyLmg9MjU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpbnNuX2lzX2Nhc3RfdXNlcihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC00NjYtXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjQ2NzojZGVmaW5lIEJQRl9DQUxMX0lNTSh4KVx0KCh2b2lkICopKHgpIC0gKHZvaWQgKilfX2JwZl9jYWxsX2Jhc2UpXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTQ2OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwOTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzAyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEJQRiBjb2RlIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTt2ZSByZXBsYWNlZCBgLSBpbnNuLSZndDtpbW0gPSBmbi0mZ3Q7ZnVuYyAtIF9fYnBmX2NhbGxfYmFzZTtgIHdpdGggYCYjNDM7IGluc24tJmd0O2ltbSA9IEJQRl9DQUxMX0lNTShmbi0mZ3Q7ZnVuYyk7YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1dlbGwsIHRoYXQmIzM5O3MganVzdCBhIG1hY3JvIHN1YnN0aXR1dGlvbi4gYEJQRl9DQUxMX0lNTSh4KWAgaXMgZGVmaW5lZCBhcyBgKCh2b2lkICopKHgpIC0gKHZvaWQgKilfX2JwZl9jYWxsX2Jhc2UpYCwgd2hpY2ggZXhwYW5kcyB0byB0aGUgZXhhY3Qgc2FtZSBjYWxjdWxhdGlvbiBhcyB0aGUgb2xkIGNvZGUuIFNvLCB0aGUgZWZmZWN0IGlzIHByb2JhYmx5IG51bGwuIEl0JiMzOTtzIGp1c3QgYSBzdHlsaXN0aWMgY2hhbmdlLCBwZXJoYXBzIGZvciByZWFkYWJpbGl0eSwgYnV0IGZ1bmN0aW9uYWxseSBpZGVudGljYWwsIHdoaWNoLCBpZiB0cnVlLCBpcyBub3QgYSB2ZXJ5IGV4Y2l0aW5nIGNoYW5nZS4KCldhaXQgYSBzZWNvbmQsIGBmbi0mZ3Q7ZnVuY2AgaXMgYSBmdW5jdGlvbiBwb2ludGVyLCBpc24mIzM5O3QgaXQ/IE9rYXksIEkgd2FudCB0byBjb25maXJtIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIHNvbWV0aGluZy4gTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIHR5cGUgb2YgYGZuLSZndDtmdW5jYC4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBtYWNybyBpcyBhY3R1YWxseSBkb2luZyB3aGF0IGl0IHNheXMgaXQgaXMsIGFuZCBpcyB0eXBlLXNhZmUuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwOTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmLmg9OTYyPXN0YXRpY19hc3NlcnQoX19CUEZfUkVUX1RZUEVfTUFYIFx1MDAzYz0gQlBGX0JBU0VfVFlQRV9MSU1JVCk7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC05NjctICovXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjk2ODpzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8ge1xuaW5jbHVkZS9saW51eC9icGYuaC05NjktXHR1NjQgKCpmdW5jKSh1NjQgcjEsIHU2NCByMiwgdTY0IHIzLCB1NjQgcjQsIHU2NCByNSk7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0xMTQyPXN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIHtcbmluY2x1ZGUvbGludXgvYnBmLmgtMTE0My1cdC8qIHJldHVybiBlQlBGIGZ1bmN0aW9uIHByb3RvdHlwZSBmb3IgdmVyaWZpY2F0aW9uICovXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjExNDQ6XHRjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKlxuaW5jbHVkZS9saW51eC9icGYuaC0xMTQ1LVx0KCpnZXRfZnVuY19wcm90bykoZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MjQ1Nj1pbnQgYnBmX3Byb2dfY2FsY190YWcoc3RydWN0IGJwZl9wcm9nICpmcCk7XG5pbmNsdWRlL2xpbnV4L2JwZi5oLTI0NTctXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjI0NTg6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICpicGZfZ2V0X3RyYWNlX3ByaW50a19wcm90byh2b2lkKTtcbmluY2x1ZGUvbGludXgvYnBmLmg6MjQ1OTpjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKmJwZl9nZXRfdHJhY2VfdnByaW50a19wcm90byh2b2lkKTtcbmluY2x1ZGUvbGludXgvYnBmLmgtMjQ2MC1cbmluY2x1ZGUvbGludXgvYnBmLmg6MjQ2MTpjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKmJwZl9nZXRfcGVyZl9ldmVudF9yZWFkX3ZhbHVlX3Byb3RvKHZvaWQpO1xuaW5jbHVkZS9saW51eC9icGYuaC0yNDYyLVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9Mjk2OT10eXBlZGVmIGludCAoKmJwZl9pdGVyX2ZpbGxfbGlua19pbmZvX3QpKGNvbnN0IHN0cnVjdCBicGZfaXRlcl9hdXhfaW5mbyAqYXV4LFxuaW5jbHVkZS9saW51eC9icGYuaC0yOTcwLVx0XHRcdFx0XHQgc3RydWN0IGJwZl9saW5rX2luZm8gKmluZm8pO1xuaW5jbHVkZS9saW51eC9icGYuaDoyOTcxOnR5cGVkZWYgY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICpcbmluY2x1ZGUvbGludXgvYnBmLmgtMjk3Mi0oKmJwZl9pdGVyX2dldF9mdW5jX3Byb3RvX3QpKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCxcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTMwMDg9aW50IGJwZl9pdGVyX3Byb2dfc3VwcG9ydGVkKHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjMwMDk6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICpcbmluY2x1ZGUvbGludXgvYnBmLmgtMzAxMC1icGZfaXRlcl9nZXRfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0zMTY3PXN0cnVjdCBicGZfbGluayAqYnBmX2xpbmtfYnlfaWQodTMyIGlkKTtcbmluY2x1ZGUvbGludXgvYnBmLmgtMzE2OC1cbmluY2x1ZGUvbGludXgvYnBmLmg6MzE2OTpjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKmJwZl9iYXNlX2Z1bmNfcHJvdG8oZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLFxuaW5jbHVkZS9saW51eC9icGYuaC0zMTcwLVx0XHRcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MzQ5Mz1zdGF0aWMgaW5saW5lIGludCBidGZfc3RydWN0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzUwMS1cbmluY2x1ZGUvbGludXgvYnBmLmg6MzUwMjpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byAqXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM1MDMtYnBmX2Jhc2VfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTM4NTQ9c3RhdGljIGlubGluZSBzMzIgYnBmX2tleV9zZXJpYWwoY29uc3Qgc3RydWN0IGJwZl9rZXkgKmtleSlcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM4NjAtLyogdmVyaWZpZXIgcHJvdG90eXBlcyBmb3IgaGVscGVyIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBlQlBGIHByb2dyYW1zICovXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NjE6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX2xvb2t1cF9lbGVtX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODYyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF91cGRhdGVfZWxlbV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg2MzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfZGVsZXRlX2VsZW1fcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NjQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX3B1c2hfZWxlbV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg2NTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfcG9wX2VsZW1fcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NjY6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX3BlZWtfZWxlbV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg2NzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaC0zODY4LVxuaW5jbHVkZS9saW51eC9icGYuaDozODY5OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9wcmFuZG9tX3UzMl9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3MDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfc21wX3Byb2Nlc3Nvcl9pZF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3MTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfbnVtYV9ub2RlX2lkX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODcyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3RhaWxfY2FsbF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3MzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfbnNfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NzQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X2Jvb3RfbnNfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NzU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X3RhaV9uc19wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3NjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF9waWRfdGdpZF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3NzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF91aWRfZ2lkX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODc4OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jdXJyZW50X2NvbW1fcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4Nzk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X3N0YWNraWRfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4ODA6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X3N0YWNrX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODgxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja19zbGVlcGFibGVfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4ODI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X3Rhc2tfc3RhY2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4ODM6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X3Rhc2tfc3RhY2tfc2xlZXBhYmxlX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODg0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja2lkX3Byb3RvX3BlO1xuaW5jbHVkZS9saW51eC9icGYuaDozODg1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja19wcm90b19wZTtcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg4NjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9zb2NrX21hcF91cGRhdGVfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4ODc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc29ja19oYXNoX3VwZGF0ZV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg4ODpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF9jZ3JvdXBfaWRfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4ODk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfYW5jZXN0b3JfY2dyb3VwX2lkX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODkwOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jZ3JvdXBfY2xhc3NpZF9jdXJyX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODkxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2N1cnJlbnRfdGFza191bmRlcl9jZ3JvdXBfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbXNnX3JlZGlyZWN0X2hhc2hfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTM6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbXNnX3JlZGlyZWN0X21hcF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg5NDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za19yZWRpcmVjdF9oYXNoX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozODk1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrX3JlZGlyZWN0X21hcF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg5NjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9zcGluX2xvY2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc3Bpbl91bmxvY2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2xvY2FsX3N0b3JhZ2VfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc3RydG9sX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTAwOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3N0cnRvdWxfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MDE6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfdGNwX3NvY2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MDI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfamlmZmllczY0X3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTAzOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9uc19jdXJyZW50X3BpZF90Z2lkX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTA0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2V2ZW50X291dHB1dF9kYXRhX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTA1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfb3V0cHV0X3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTA2OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfcmVzZXJ2ZV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkwNzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9yaW5nYnVmX3N1Ym1pdF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkwODpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9yaW5nYnVmX2Rpc2NhcmRfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MDk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfcmluZ2J1Zl9xdWVyeV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxMDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTExOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfc3VibWl0X2R5bnB0cl9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxMjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9yaW5nYnVmX2Rpc2NhcmRfZHlucHRyX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTEzOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrY190b190Y3A2X3NvY2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MTQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2tjX3RvX3RjcF9zb2NrX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTE1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrY190b190Y3BfdGltZXdhaXRfc29ja19wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxNjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za2NfdG9fdGNwX3JlcXVlc3Rfc29ja19wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxNzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za2NfdG9fdWRwNl9zb2NrX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTE4OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrY190b191bml4X3NvY2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MTk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2tjX3RvX21wdGNwX3NvY2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MjA6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfY29weV9mcm9tX3VzZXJfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MjE6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc25wcmludGZfYnRmX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTIyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NucHJpbnRmX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTIzOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3Blcl9jcHVfcHRyX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTI0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3RoaXNfY3B1X3B0cl9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkyNTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfY29hcnNlX25zX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTI2OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NvY2tfZnJvbV9maWxlX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTI3OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zb2NrZXRfcHRyX2Nvb2tpZV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkyODpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl90YXNrX3N0b3JhZ2VfZ2V0X3JlY3VyX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTI5OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3Rhc2tfc3RvcmFnZV9nZXRfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MzA6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfdGFza19zdG9yYWdlX2RlbGV0ZV9yZWN1cl9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkzMTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl90YXNrX3N0b3JhZ2VfZGVsZXRlX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTMyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2Zvcl9lYWNoX21hcF9lbGVtX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTMzOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2J0Zl9maW5kX2J5X25hbWVfa2luZF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkzNDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za19zZXRzb2Nrb3B0X3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTM1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrX2dldHNvY2tvcHRfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MzY6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2tfc2V0c29ja29wdF9ub2RlbGF5X3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTM3OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3VubG9ja2VkX3NrX3NldHNvY2tvcHRfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5Mzg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfdW5sb2NrZWRfc2tfZ2V0c29ja29wdF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkzOTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9maW5kX3ZtYV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzk0MDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9sb29wX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTQxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5NDI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2V0X3JldHZhbF9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzk0MzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfcmV0dmFsX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTQ0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3VzZXJfcmluZ2J1Zl9kcmFpbl9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzk0NTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9jZ3JwX3N0b3JhZ2VfZ2V0X3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaDozOTQ2OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2NncnBfc3RvcmFnZV9kZWxldGVfcHJvdG87XG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM5NDctXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5NDg6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICp0cmFjaW5nX3Byb2dfZnVuY19wcm90byhcbmluY2x1ZGUvbGludXgvYnBmLmgtMzk0OS0gIGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwOTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjY3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgYGZuLSZndDtmdW5jYCBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb24gcG9pbnRlciwgdGhhdCBtdWNoIGlzIGNsZWFyLiBUaGUga2V5IGNoYW5nZSBoZXJlIGlzIG1vdmluZyBmcm9tIHRoaXM6IGAtIGluc24tJmd0O2ltbSA9IGZuLSZndDtmdW5jIC0gX19icGZfY2FsbF9iYXNlO2AgdG8gdGhpczogYCYjNDM7IGluc24tJmd0O2ltbSA9IEJQRl9DQUxMX0lNTShmbi0mZ3Q7ZnVuYyk7YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBvcHRpbWl6YXRpb24sIGJ1dCBsZXQmIzM5O3MgZGlnIGRlZXBlci4KClJpZ2h0LCBgQlBGX0NBTExfSU1NKHgpYCBleHBhbmRzIHRvIGAoKHZvaWQgKikoeCkgLSAodm9pZCAqKV9fYnBmX2NhbGxfYmFzZSlgLiBJbW1lZGlhdGVseSwgdGhlIHVzZSBvZiBgdm9pZCAqYCBjYXN0cyBpcyByYWlzaW5nIGEgZmxhZy4gQW5kLCAqaW5zbi0mZ3Q7aW1tKiBpcyBhbiAqczMyKiBtZWFuaW5nIGEgc2lnbmVkIDMyIGJpdCBpbnRlZ2VyLiBUaGUgc3VidHJhY3Rpb24gb2YgcG9pbnRlcnMsIGlmIGBfX2JwZl9jYWxsX2Jhc2VgIGlzIHRoZSBzYW1lIHBvaW50ZXIgdHlwZSBhcyBgZm4tJmd0O2Z1bmNgLCB3aWxsIGdpdmUgYSBkaWZmZXJlbmNlIGluIG11bHRpcGxlcyBvZiB0aGUgcG9pbnRlciB0eXBlIHNpemUuIElmIHRoZXkgYXJlIGludGVnZXJzLCBpdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgaW50ZWdlciBzdWJ0cmFjdGlvbi4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYF9fYnBmX2NhbGxfYmFzZWAgYWN0dWFsbHkgaXMuIFRoYXQmIzM5O3MgdGhlIGNydXggb2YgdGhpcyB3aG9sZSBvcGVyYXRpb24uIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdXNlZCBhcyBhIGJhc2UgYWRkcmVzcywgYnV0IHdoeSBhbmQgd2hhdCBkb2VzIGl0IHJlcHJlc2VudD8gTGV0JiMzOTtzIGZpZ3VyZSB0aGlzIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDk6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19icGZfY2FsbF9iYXNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmM9MTU4OT1zdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxuLS1cbmFyY2gvYXJtL25ldC9icGZfaml0XzMyLmMtMjA1OC1cdFx0Y29uc3QgczggKnI1ID0gYnBmMmEzMltCUEZfUkVHXzVdO1xuYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYzoyMDU5Olx0XHRjb25zdCB1MzIgZnVuYyA9ICh1MzIpX19icGZfY2FsbF9iYXNlICYjNDM7ICh1MzIpaW1tO1xuYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYy0yMDYwLVxuLS1cbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jPTg5NT1zdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxuLS1cbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jLTEyMTUtXHR7XG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYzoxMjE2Olx0XHR1OCAqZnVuYyA9ICgodTggKilfX2JwZl9jYWxsX2Jhc2UpICYjNDM7IGltbTtcbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jLTEyMTctXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTIyMzc9c3Q6XHRcdFx0aW5zbl9vZmYgPSBpbnNuLVx1MDAzZW9mZjtcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMjU3OC1cdFx0Y2FzZSBCUEZfSk1QIHwgQlBGX0NBTEw6IHtcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzoyNTc5Olx0XHRcdGZ1bmMgPSAodTggKikgX19icGZfY2FsbF9iYXNlICYjNDM7IGltbTMyO1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTI1ODAtXHRcdFx0aWYgKHNyY19yZWcgPT0gQlBGX1BTRVVET19DQUxMIFx1MDAyNlx1MDAyNiB0YWlsX2NhbGxfcmVhY2hhYmxlKSB7XG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcDMyLmM9MTU2OT1zdGF0aWMgaW50IGVtaXRfa2Z1bmNfY2FsbChjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nLCB1OCAqZW5kX2FkZHIsXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTYzMC1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAzMi5jOjE2MzE6XHRqbXBfb2Zmc2V0ID0gKHU4ICopX19icGZfY2FsbF9iYXNlICYjNDM7IGluc24tXHUwMDNlaW1tIC0gZW5kX2FkZHI7XG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjMyLVx0aWYgKCFpc19zaW1tMzIoam1wX29mZnNldCkpIHtcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wMzIuYz0xNjU5PXN0YXRpYyBpbnQgZG9faml0KHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2csIGludCAqYWRkcnMsIHU4ICppbWFnZSxcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wMzIuYy0yMTA1LVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcDMyLmM6MjEwNjpcdFx0XHRmdW5jID0gKHU4ICopIF9fYnBmX2NhbGxfYmFzZSAmIzQzOyBpbW0zMjtcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAzMi5jLTIxMDctXHRcdFx0am1wX29mZnNldCA9IGZ1bmMgLSAoaW1hZ2UgJiM0MzsgYWRkcnNbaV0pO1xuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MjU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpbnNuX2lzX2Nhc3RfdXNlcihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC00NjYtXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjQ2NzojZGVmaW5lIEJQRl9DQUxMX0lNTSh4KVx0KCh2b2lkICopKHgpIC0gKHZvaWQgKilfX2JwZl9jYWxsX2Jhc2UpXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTQ2OC1cbi0tXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTExNzM9dm9pZCBza19maWx0ZXJfdW5jaGFyZ2Uoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfZmlsdGVyICpmcCk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTExNzQtXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjExNzU6dTY0IF9fYnBmX2NhbGxfYmFzZSh1NjQgcjEsIHU2NCByMiwgdTY0IHIzLCB1NjQgcjQsIHU2NCByNSk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTExNzYtXG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTI0Nj1pbnQgYnBmX2ppdF9nZXRfZnVuY19hZGRyKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjc0LVx0XHQvKiBBZGRyZXNzIG9mIGEgQlBGIGhlbHBlciBjYWxsLiBTaW5jZSBwYXJ0IG9mIHRoZSBjb3JlXG5rZXJuZWwvYnBmL2NvcmUuYzoxMjc1Olx0XHQgKiBrZXJuZWwsIGl0JiMzOTtzIGFsd2F5cyBhdCBhIGZpeGVkIGxvY2F0aW9uLiBfX2JwZl9jYWxsX2Jhc2Vcbmtlcm5lbC9icGYvY29yZS5jLTEyNzYtXHRcdCAqIGFuZCB0aGUgaGVscGVyIHdpdGggaW1tIHJlbGF0aXZlIHRvIGl0IGFyZSBib3RoIGluIGNvcmVcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjc4LVx0XHQgKi9cbmtlcm5lbC9icGYvY29yZS5jOjEyNzk6XHRcdGFkZHIgPSAodTggKilfX2JwZl9jYWxsX2Jhc2UgJiM0MzsgaW1tO1xua2VybmVsL2JwZi9jb3JlLmMtMTI4MC1cdH1cbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0xNTg2PXUxNiBicGZfb3V0X3N0YWNrX2FyZ19jbnQoY29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTE2MDItICovXG5rZXJuZWwvYnBmL2NvcmUuYzoxNjAzOm5vaW5saW5lIHU2NCBfX2JwZl9jYWxsX2Jhc2UodTY0IHIxLCB1NjQgcjIsIHU2NCByMywgdTY0IHI0LCB1NjQgcjUpXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjA0LXtcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjA2LX1cbmtlcm5lbC9icGYvY29yZS5jOjE2MDc6RVhQT1JUX1NZTUJPTF9HUEwoX19icGZfY2FsbF9iYXNlKTtcbmtlcm5lbC9icGYvY29yZS5jLTE2MDgtXG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTc5Nj1zdGF0aWMgdTY0IF9fX2JwZl9wcm9nX3J1bih1NjQgKnJlZ3MsIGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbilcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0yMDg3LVx0XHQgKi9cbmtlcm5lbC9icGYvY29yZS5jOjIwODg6XHRcdEJQRl9SMCA9IChfX2JwZl9jYWxsX2Jhc2UgJiM0MzsgaW5zbi1cdTAwM2VpbW0pKEJQRl9SMSwgQlBGX1IyLCBCUEZfUjMsXG5rZXJuZWwvYnBmL2NvcmUuYy0yMDg5LVx0XHRcdFx0XHRcdCAgICAgICBCUEZfUjQsIEJQRl9SNSk7XG4tLVxua2VybmVsL2JwZi9maXh1cHMuYz0xMDI4PXN0YXRpYyBpbnQgaml0X3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0xMDU2LVx0XHRlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtpXS5jYWxsX2ltbSA9IGluc24tXHUwMDNlaW1tO1xua2VybmVsL2JwZi9maXh1cHMuYzoxMDU3Olx0XHQvKiBwb2ludCBpbW0gdG8gX19icGZfY2FsbF9iYXNlJiM0MzsxIGZyb20gSklUcyBwb2ludCBvZiB2aWV3ICovXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTEwNTgtXHRcdGluc24tXHUwMDNlaW1tID0gMTtcbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTExOTYtXHRcdCAqIG1pZ2h0IG5vdCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCB0aGUgb2Zmc2V0IG9mIHRoZSBzdGFydFxua2VybmVsL2JwZi9maXh1cHMuYzoxMTk3Olx0XHQgKiBhZGRyZXNzIG9mIHRoZSBjYWxsZWUmIzM5O3MgSklUZWQgaW1hZ2UgZnJvbSBfX2JwZl9jYWxsX2Jhc2Vcbmtlcm5lbC9icGYvZml4dXBzLmMtMTE5OC1cdFx0ICpcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1OTk9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MTItXHQvKiBpbnNuLVx1MDAzZWltbSBoYXMgdGhlIGJ0ZiBmdW5jX2lkLiBSZXBsYWNlIGl0IHdpdGggYW4gb2Zmc2V0IHJlbGF0aXZlIHRvXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2MTM6XHQgKiBfX2JwZl9jYWxsX2Jhc2UsIHVubGVzcyB0aGUgSklUIG5lZWRzIHRvIGNhbGwgZnVuY3Rpb25zIHRoYXQgYXJlXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MTQtXHQgKiBmdXJ0aGVyIHRoYW4gMzIgYml0cyBhd2F5IChicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKCkpLlxuLS1cbmxpYi90ZXN0X2JwZi5jPTE1NjIwPXN0YXRpYyBfX2luaXQgaW50IHByZXBhcmVfdGFpbF9jYWxsX3Rlc3RzKHN0cnVjdCBicGZfYXJyYXkgKipwcHJvZ3MpXG4tLVxubGliL3Rlc3RfYnBmLmMtMTU3MTAtXHRcdFx0XHQqaW5zbiA9IEJQRl9FTUlUX0NBTEwoYWRkcik7XG5saWIvdGVzdF9icGYuYzoxNTcxMTpcdFx0XHRcdGlmICgobG9uZylfX2JwZl9jYWxsX2Jhc2UgJiM0MzsgaW5zbi1cdTAwM2VpbW0gIT0gYWRkcilcbmxpYi90ZXN0X2JwZi5jLTE1NzEyLVx0XHRcdFx0XHQqaW5zbiA9IEJQRl9KTVBfQSgwKTsgLyogU2tpcDogTk9QICovXG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9MzYxPXN0YXRpYyBib29sIGNvbnZlcnRfYnBmX2V4dGVuc2lvbnMoc3RydWN0IHNvY2tfZmlsdGVyICpmcCxcbi0tXG5uZXQvY29yZS9maWx0ZXIuYy00NzktXHRcdC8qIFRoaXMgaXMganVzdCBhIGR1bW15IGNhbGwgdG8gYXZvaWQgbGV0dGluZyB0aGUgY29tcGlsZXJcbm5ldC9jb3JlL2ZpbHRlci5jOjQ4MDpcdFx0ICogZXZpY3QgX19icGZfY2FsbF9iYXNlKCkgYXMgYW4gb3B0aW1pemF0aW9uLiBQbGFjZWQgaGVyZVxubmV0L2NvcmUvZmlsdGVyLmMtNDgxLVx0XHQgKiB3aGVyZSBuby1vbmUgYm90aGVycy5cbm5ldC9jb3JlL2ZpbHRlci5jLTQ4Mi1cdFx0ICovXG5uZXQvY29yZS9maWx0ZXIuYzo0ODM6XHRcdEJVR19PTihfX2JwZl9jYWxsX2Jhc2UoMCwgMCwgMCwgMCwgMCkgIT0gMCk7XG5uZXQvY29yZS9maWx0ZXIuYy00ODQtXHRcdHJldHVybiBmYWxzZTtcbi0tXG50b29scy9icGYvYnBmdG9vbC94bGF0ZWRfZHVtcGVyLmM9MjY9dm9pZCBrZXJuZWxfc3ltc19sb2FkKHN0cnVjdCBkdW1wX2RhdGEgKmRkKVxuLS1cbnRvb2xzL2JwZi9icGZ0b29sL3hsYXRlZF9kdW1wZXIuYy01NS1cdFx0c3ltLVx1MDAzZWFkZHJlc3MgPSAodW5zaWduZWQgbG9uZylhZGRyZXNzO1xudG9vbHMvYnBmL2JwZnRvb2wveGxhdGVkX2R1bXBlci5jOjU2Olx0XHRpZiAoIXN0cmNtcChzeW0tXHUwMDNlbmFtZSwgXCYjMzQ7X19icGZfY2FsbF9iYXNlXCYjMzQ7KSkge1xudG9vbHMvYnBmL2JwZnRvb2wveGxhdGVkX2R1bXBlci5jLTU3LVx0XHRcdGRkLVx1MDAzZWFkZHJlc3NfY2FsbF9iYXNlID0gc3ltLVx1MDAzZWFkZHJlc3M7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA5OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjE0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNzA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIENhbGwgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0IHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gYF9fYnBmX2NhbGxfYmFzZWAsIHdoaWNoIGlzIGRlZmluZWQgYXMgYSBzaW1wbGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIDAuICBUaGVuIHRoZXJlJiMzOTtzIHRoaXMgbWFjcm8sIGBCUEZfQ0FMTF9JTU0oeClgLCB3aGljaCBpcyBkZWZpbmVkIGFzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYCh2b2lkICopKHgpYCBhbmQgYCh2b2lkICopX19icGZfY2FsbF9iYXNlYC4gVGhlIHBhdGNoIGl0c2VsZiByZXBsYWNlcyBgaW5zbi0mZ3Q7aW1tID0gZm4tJmd0O2Z1bmMgLSBfX2JwZl9jYWxsX2Jhc2U7YCB3aXRoIGBpbnNuLSZndDtpbW0gPSBCUEZfQ0FMTF9JTU0oZm4tJmd0O2Z1bmMpO2AuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgZm4tJmd0O2Z1bmNgIGlzIGEgZnVuY3Rpb24gcG9pbnRlci4gIEFuZCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIHN1YnRyYWN0aW5nIHR3byBmdW5jdGlvbiBwb2ludGVycyBkaXJlY3RseSBpbiBzdGFuZGFyZCBDIGlzIG5vdCB2YWxpZCBwb2ludGVyIGFyaXRobWV0aWMuIEl0JiMzOTtzIGVpdGhlciBhIEdOVSBleHRlbnNpb24gb3IgdW5kZWZpbmVkIGJlaGF2aW9yLiBTbywgdGhlIG9sZCBjb2RlLCBgZm4tJmd0O2Z1bmMgLSBfX2JwZl9jYWxsX2Jhc2VgLCBzZWVtcyBzdXNwZWN0LiBIb3dldmVyLCB0aGUgbWFjcm8gY2FzdHMgYm90aCBmdW5jdGlvbiBwb2ludGVycyB0byBgdm9pZCAqYCBiZWZvcmUgdGhlIHN1YnRyYWN0aW9uLgoKTm93LCBHQ0MgZG9lcyBhbGxvdyBwb2ludGVyIGFyaXRobWV0aWMgb24gYHZvaWQgKmAsIHRyZWF0aW5nIGl0IGFzIGEgYnl0ZSBvZmZzZXQuIFNvLCBgKHZvaWQgKilmbi0mZ3Q7ZnVuYyAtICh2b2lkICopX19icGZfY2FsbF9iYXNlYCBjb21wdXRlcyB0aGUgYnl0ZSBvZmZzZXQgYmV0d2VlbiB0aGUgdHdvLiBIb3dldmVyLCB3aGF0IGlmIHdlIGRpZG4mIzM5O3QgaGF2ZSB0aGUgY2FzdHM/IFdoYXQgd291bGQgYmUgdGhlIHR5cGUgb2YgdGhlIHN1YnRyYWN0aW9uLCBpZiBHQ0MgYWxsb3dzIGZ1bmN0aW9uIHBvaW50ZXIgc3VidHJhY3Rpb24/IExldCYjMzk7cyB2ZXJpZnkgd2hhdCBgZm4tJmd0O2Z1bmNgIGlzLiBBaCwgaXQmIzM5O3MgYSBmdW5jdGlvbiBwb2ludGVyLCBzcGVjaWZpY2FsbHksIGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZSBgdTY0ICgqKSh1NjQsIHU2NCwgdTY0LCB1NjQsIHU2NClgLgoKTm93LCBpZiBJIHN1YnRyYWN0IHR3byBmdW5jdGlvbiBwb2ludGVycyBpbiBHQ0MsIGRvZXMgaXQgZ2l2ZSBtZSB0aGUgZGlmZmVyZW5jZSBpbiBieXRlcywgb3IgZG9lcyBpdCBnaXZlIGFuIGVycm9yPyBJdCBtaWdodCBjb21wbGFpbiBvciBpdCBtaWdodCBnaXZlIHRoZSBkaWZmZXJlbmNlIGluIGJ5dGVzLiBCdXQgZnVuY3Rpb25hbGx5LCB3aXRob3V0IHRoZSBjYXN0cywgYHggLSB5YCB3b3VsZCBnaXZlIHRoZSBzYW1lIGJ5dGUgb2Zmc2V0IGFzIHRoZSB2ZXJzaW9uIHdpdGggdGhlIGNhc3RzLCBpZiBHQ0MgYWxsb3dzIGl0IGFuZCB0cmVhdHMgZnVuY3Rpb24gcG9pbnRlcnMgYXMgc2l6ZSAxLgoKV2FpdCwgaXMgdGhlcmUgYW55IGFjdHVhbCBmdW5jdGlvbmFsIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgb2xkIGNvZGUgYW5kIHRoZSBuZXcgY29kZT8gTGV0JiMzOTtzIHNlZS4uLiBgaW5zbi0mZ3Q7aW1tYCBpcyBhIHNpZ25lZCAzMi1iaXQgaW50ZWdlciAoYHMzMmApLiBgZm4tJmd0O2Z1bmNgIGFuZCBgX19icGZfY2FsbF9iYXNlYCBhcmUgYm90aCBwb2ludGVycyB0byB0aGUgc2FtZSBmdW5jdGlvbiB0eXBlLiBTbyBzdWJ0cmFjdGluZyB0d28gcG9pbnRlcnMgb2YgdGhlIHNhbWUgdHlwZSBnaXZlcyB0aGUgZGlmZmVyZW5jZSBpbiBieXRlcywgZGl2aWRlZCBieSB0aGUgc2l6ZSBvZiB0aGUgdHlwZS4gV2hhdCBpcyB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIHR5cGUgaW4gR0NDPyBHQ0MgaGFzIGFuIGV4dGVuc2lvbiwgYHNpemVvZihmdW5jdGlvbilgIHdoaWNoIGlzIDEuIFNvLCBzdWJ0cmFjdGluZyBgZm4tJmd0O2Z1bmMgLSBfX2JwZl9jYWxsX2Jhc2VgIGdpdmVzIHRoZSBkaWZmZXJlbmNlIGluIGJ5dGVzISBBbmQgdGhlIGAodm9pZCAqKWZuLSZndDtmdW5jIC0gKHZvaWQgKilfX2JwZl9jYWxsX2Jhc2VgIGFsc28gZ2l2ZXMgdGhlIGRpZmZlcmVuY2UgaW4gYnl0ZXMhCgpTbywgdGhlIHZhbHVlcyBjb21wdXRlZCBhcmUgaWRlbnRpY2FsLiBUaGUgcGF0Y2ggaXMgc2ltcGx5IGEgY2xlYW51cCwgdXNpbmcgdGhlIGBCUEZfQ0FMTF9JTU1gIG1hY3JvIGluc3RlYWQgb2Ygb3Blbi1jb2RpbmcgaXQuIEl0IHByb2JhYmx5IGF2b2lkcyBjb21waWxlciB3YXJuaW5ncyBvbiBzb21lIGNvbXBpbGVycyBhbmQgcHJvdmlkZXMgY29uc2lzdGVuY3kuIEkmIzM5O2xsIHZlcmlmeSB0aGlzIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDk6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnNuLVx1MDAzZWltbSA9IGZuLVx1MDAzZWZ1bmMgLSBfX2JwZl9jYWxsX2Jhc2U7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9maXh1cHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA5OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjMyCgkJCQkJCQlvdXRwdXQ6IDg4CgkJCQkJCQl0aG91Z2h0czogNjQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvc21ldGljIEJQRiBQYXRjaCoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCB0aGUgYGdpdCBsb2dgIHRvIHNlZSBpZiB0aGUgYXV0aG9yJiMzOTtzIHJhdGlvbmFsZSBpcyByZWFkaWx5IGF2YWlsYWJsZS4gSG1tLCBubyBgZ2l0IGxvZ2AgZGlyZWN0bHksIGJ1dCBJIGNhbiBwcm9iYWJseSBnZXQgdGhlIGdpc3QgdXNpbmcgYGdyZXBwZXJgLCBvciwgY29uc2lkZXJpbmcgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBpdOKAmXMgbGlrZWx5IGp1c3QgY29zbWV0aWMgcmVmYWN0b3JpbmcuIExldCYjMzk7cyBkaWcgaW4gYW5kIGV4YW1pbmUgdGhlIGRpZmYgaXRzZWxmLgoKQWxyaWdodCwgdGhlIG9ubHkgY2hhbmdlIGlzIGluIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYC4gSSBzZWUgaXQgcmlnaHQgYXdheTogYSBsaW5lIGlzIGNoYW5nZWQgaW52b2x2aW5nIGBpbnNuLSZndDtpbW1gLiBQcmV2aW91c2x5IGl0IHdhcyBgaW5zbi0mZ3Q7aW1tID0gZm4tJmd0O2Z1bmMgLSBfX2JwZl9jYWxsX2Jhc2U7YCwgbm93IGl0JiMzOTtzIGBpbnNuLSZndDtpbW0gPSBCUEZfQ0FMTF9JTU0oZm4tJmd0O2Z1bmMpO2AuCgpOb3csIGxldCYjMzk7cyB1bnBhY2sgdGhpcy4uLiBgZm4tJmd0O2Z1bmNgIGFuZCBgX19icGZfY2FsbF9iYXNlYCBhcmUgZnVuY3Rpb24gcG9pbnRlcnMuIFRoZSBzdWJ0cmFjdGlvbiwgYXQgZmlyc3QgZ2xhbmNlLCBzZWVtcyB0byBqdXN0IGNvbXB1dGUgYW4gb2Zmc2V0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIHN1YnRsZSB0aG91Z2guIExldCYjMzk7cyBzZWUgaWYgdGhlIG90aGVyIGNoYW5nZSBpcyB0aGVyZSBpbiB0aGUgcGF0Y2guCgpXYWl0LCBsb29raW5nIGF0IHRoZSBjb2RlIGluIGBrZXJuZWwvYnBmL2NvcmUuY2AsIEkgc2VlIHRoYXQgYF9fYnBmX2NhbGxfYmFzZWAgaXMgKmFjdHVhbGx5KiBhIGZ1bmN0aW9uOiBgbm9pbmxpbmUgdTY0IF9fYnBmX2NhbGxfYmFzZSh1NjQgcjEsIHU2NCByMiwgdTY0IHIzLCB1NjQgcjQsIHU2NCByNSlgLiBCdXQsIHdoZW4gdXNlZCBpbiBhbiBleHByZXNzaW9uIHdpdGhvdXQgYCZhbXA7YCwgaXQgZGVjYXlzIHRvIGEgZnVuY3Rpb24gcG9pbnRlci4gU28sIGluIHRoZSBvcmlnaW5hbCBjb2RlLCB0aGUgc3VidHJhY3Rpb24gaXMgaW5kZWVkIHN1YnRyYWN0aW5nIHR3byBmdW5jdGlvbiBwb2ludGVycy4gTm93LCBpbiBHQ0MsIHBvaW50ZXIgYXJpdGhtZXRpYyBvbiBmdW5jdGlvbiBwb2ludGVycyBpcyBhbiBleHRlbnNpb24sIGFuZCB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIGlzIDEgYnl0ZSwganVzdCBsaWtlIGB2b2lkYC4gU28sIGVmZmVjdGl2ZWx5LCB0aGUgcmVzdWx0IHdpbGwgZXZhbHVhdGUgdG8gdGhlIGJ5dGUgb2Zmc2V0LgoKTm93IGxldCYjMzk7cyBsb29rIGF0IGBCUEZfQ0FMTF9JTU0oZm4tJmd0O2Z1bmMpYC4gVGhpcyBldmFsdWF0ZXMgdG8gYCgodm9pZCAqKShmbi0mZ3Q7ZnVuYykgLSAodm9pZCAqKV9fYnBmX2NhbGxfYmFzZSlgLiBUaGlzIGFsc28gY29tcHV0ZXMgdGhlIGJ5dGUgb2Zmc2V0LiBCaW5nbyEgSXQmIzM5O3MgdGhlIHNhbWUuCgpUaGVyZWZvcmUsIHRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMgcmVmYWN0b3JpbmcsIGEgc2ltcGxlIG1hY3JvIHJlcGxhY2VtZW50IGZvciBjb25zaXN0ZW5jeS4gTm8gZnVuY3Rpb25hbCBjaGFuZ2VzLgoKU28sIGluIGNvbmNsdXNpb24sIHRoaXMgcGF0Y2ggaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgY2hhbmdlIHJlcGxhY2VzIGEgZnVuY3Rpb24gcG9pbnRlciBzdWJ0cmFjdGlvbiB3aXRoIGFuIGVxdWl2YWxlbnQgbWFjcm8uIFNpbmNlIEdDQyB0cmVhdHMgdGhlIHNpemUgb2YgYSBmdW5jdGlvbiBhcyAxIChzYW1lIGFzIGB2b2lkYCksIHRoZSBjYWxjdWxhdGVkIGJ5dGUgb2Zmc2V0IGlzIGlkZW50aWNhbC4gVGhlIGNoYW5nZSBpcyBwdXJlbHkgY29zbWV0aWMsIHJlcHJlc2VudGluZyBhIHJlZmFjdG9yaW5nIHdpdGggbm8gb2JzZXJ2YWJsZSBmdW5jdGlvbmFsIGVmZmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDk6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhbiBvcGVuLWNvZGVkIGZ1bmN0aW9uIHBvaW50ZXIgc3VidHJhY3Rpb24gd2l0aCB0aGUgZXF1aXZhbGVudCBCUEZfQ0FMTF9JTU0gbWFjcm8uIFNpbmNlIEdDQyB0cmVhdHMgdGhlIHNpemUgb2YgYSBmdW5jdGlvbiBhcyAxIGJ5dGUgKHNhbWUgYXMgdm9pZCksIHRoZSBjb21wdXRlZCBieXRlIG9mZnNldCBpcyBpZGVudGljYWwuIFRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMgcmVmYWN0b3Jpbmcgd2l0aCBubyBmdW5jdGlvbmFsIGNoYW5nZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhbiBvcGVuLWNvZGVkIGZ1bmN0aW9uIHBvaW50ZXIgc3VidHJhY3Rpb24gd2l0aCB0aGUgZXF1aXZhbGVudCBCUEZfQ0FMTF9JTU0gbWFjcm8uIFNpbmNlIEdDQyB0cmVhdHMgdGhlIHNpemUgb2YgYSBmdW5jdGlvbiBhcyAxIGJ5dGUgKHNhbWUgYXMgdm9pZCksIHRoZSBjb21wdXRlZCBieXRlIG9mZnNldCBpcyBpZGVudGljYWwuIFRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMgcmVmYWN0b3Jpbmcgd2l0aCBubyBmdW5jdGlvbmFsIGNoYW5nZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDFUMDk6MDg6MTcuNzk4NjAxNTI0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkyMDYxNzY3MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGFuIG9wZW4tY29kZWQgZnVuY3Rpb24gcG9pbnRlciBzdWJ0cmFjdGlvbiB3aXRoIHRoZSBlcXVpdmFsZW50IEJQRl9DQUxMX0lNTSBtYWNyby4gU2luY2UgR0NDIHRyZWF0cyB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIGFzIDEgYnl0ZSAoc2FtZSBhcyB2b2lkKSwgdGhlIGNvbXB1dGVkIGJ5dGUgb2Zmc2V0IGlzIGlkZW50aWNhbC4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA5OjA4OjE3Ljc5ODYwODM1NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE4MTkxMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNGY1ZDQ4NmQ0ZWQ0MWZhMDhlMWEzZTFkNmRhNDlmZTg3NDZkNDA0MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDA5OjA4OjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvZml4dXBzLmMgYi9rZXJuZWwvYnBmL2ZpeHVwcy5jXFxuaW5kZXggM2NmMmNjNmUzYWI2NmEuLjEyYThhNGViNzU3ZjE4IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvZml4dXBzLmNcXG4rKysgYi9rZXJuZWwvYnBmL2ZpeHVwcy5jXFxuQEAgLTIzMzgsNyArMjMzOCw3IEBAIGludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4gXFx0XFx0XFx0XFx0ICAgICBmdW5jX2lkX25hbWUoaW5zbi1cXHUwMDNlaW1tKSwgaW5zbi1cXHUwMDNlaW1tKTtcXG4gXFx0XFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuIFxcdFxcdH1cXG4tXFx0XFx0aW5zbi1cXHUwMDNlaW1tID0gZm4tXFx1MDAzZWZ1bmMgLSBfX2JwZl9jYWxsX2Jhc2U7XFxuK1xcdFxcdGluc24tXFx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShmbi1cXHUwMDNlZnVuYyk7XFxuIG5leHRfaW5zbjpcXG4gXFx0XFx0aWYgKHN1YnByb2dzW2N1cl9zdWJwcm9nICsgMV0uc3RhcnQgPT0gaSArIGRlbHRhICsgMSkge1xcbiBcXHRcXHRcXHRzdWJwcm9nc1tjdXJfc3VicHJvZ10uc3RhY2tfZGVwdGggKz0gc3RhY2tfZGVwdGhfZXh0cmE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA5OjA4OjE4LjMxNzc0NTU2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg2ODcwMjYxNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGFuIG9wZW4tY29kZWQgZnVuY3Rpb24gcG9pbnRlciBzdWJ0cmFjdGlvbiB3aXRoIHRoZSBlcXVpdmFsZW50IEJQRl9DQUxMX0lNTSBtYWNyby4gU2luY2UgR0NDIHRyZWF0cyB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIGFzIDEgYnl0ZSAoc2FtZSBhcyB2b2lkKSwgdGhlIGNvbXB1dGVkIGJ5dGUgb2Zmc2V0IGlzIGlkZW50aWNhbC4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNGY1ZDQ4NmQ0ZWQ0MWZhMDhlMWEzZTFkNmRhNDlmZTg3NDZkNDA0MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMDk6MDg6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2ZpeHVwcy5jIGIva2VybmVsL2JwZi9maXh1cHMuY1xuaW5kZXggM2NmMmNjNmUzYWI2NmEuLjEyYThhNGViNzU3ZjE4IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9maXh1cHMuY1xuKysrIGIva2VybmVsL2JwZi9maXh1cHMuY1xuQEAgLTIzMzgsNyArMjMzOCw3IEBAIGludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcdFx0XHRcdCAgICAgZnVuY19pZF9uYW1lKGluc24tXHUwMDNlaW1tKSwgaW5zbi1cdTAwM2VpbW0pO1xuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHR9XG4tXHRcdGluc24tXHUwMDNlaW1tID0gZm4tXHUwMDNlZnVuYyAtIF9fYnBmX2NhbGxfYmFzZTtcbitcdFx0aW5zbi1cdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0oZm4tXHUwMDNlZnVuYyk7XG4gbmV4dF9pbnNuOlxuIFx0XHRpZiAoc3VicHJvZ3NbY3VyX3N1YnByb2cgKyAxXS5zdGFydCA9PSBpICsgZGVsdGEgKyAxKSB7XG4gXHRcdFx0c3VicHJvZ3NbY3VyX3N1YnByb2ddLnN0YWNrX2RlcHRoICs9IHN0YWNrX2RlcHRoX2V4dHJhO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDk6MDg6MTguMzE3NzQ4MTU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwMjY1OTcyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQlBGIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBga2VybmVsL2JwZi9maXh1cHMuY2AuIEl0IHNlZW1zIGxpa2UgdGhleSd2ZSBjaGFuZ2VkIHRoZSBpbW1lZGlhdGUgdmFsdWUgYXNzaWdubWVudCB3aXRoaW4gYGJwZl9kb19taXNjX2ZpeHVwc2AgZm9yIEJQRiBjYWxscy4gU3BlY2lmaWNhbGx5LCB0aGUgb2xkIGNvZGUgZGlyZWN0bHkgc3VidHJhY3RlZCBhIGJhc2UgYWRkcmVzcyAoYF9fYnBmX2NhbGxfYmFzZWApIGZyb20gdGhlIGZ1bmN0aW9uIHBvaW50ZXIgKGBmbi1cdTAwM2VmdW5jYCksIHdoaWxlIHRoZSBuZXcgY29kZSBpcyB1c2luZyBhIG1hY3JvLCBgQlBGX0NBTExfSU1NYCwgYXBwbGllZCB0byB0aGF0IHNhbWUgZnVuY3Rpb24gcG9pbnRlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgKndoeSogdGhpcyBjaGFuZ2Ugd2FzIG1hZGUuIFdhcyBpdCBhIHNpbXBsZSBzdHlsaXN0aWMgY2hhbmdlLCBvciBkb2VzIHRoaXMgYEJQRl9DQUxMX0lNTWAgbWFjcm8gaW50cm9kdWNlIHNvbWUgYWRkaXRpb25hbCBiZWhhdmlvciBvciBsYXllciBvZiBhYnN0cmFjdGlvbj8gVG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgaW1wYWN0LCBJIG5lZWQgdG8gZGlnIGludG8gYGtlcm5lbC9icGYvZml4dXBzLmNgIGFuZCBmaWd1cmUgb3V0IHdoYXQgdGhpcyBgQlBGX0NBTExfSU1NYCBtYWNybyBleHBhbmRzIHRvLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlbnQgYW5kIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODc0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDk6MDg6MjIuMzIwNDEwNjMzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3ODc4MTI5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUEZfQ0FMTF9JTU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9maXh1cHMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2ZpeHVwcy5jPTg4PXN0YXRpYyBpbnQgc2V0X2tmdW5jX2Rlc2NfaW1tKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfZGVzYyAqZGVzYylcXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmMtOTQtXFx0fSBlbHNlIHtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjk1OlxcdFxcdGNhbGxfaW1tID0gQlBGX0NBTExfSU1NKGRlc2MtXFx1MDAzZWFkZHIpO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtOTYtXFx0XFx0LyogQ2hlY2sgd2hldGhlciB0aGUgcmVsYXRpdmUgb2Zmc2V0IG92ZXJmbG93cyBkZXNjLVxcdTAwM2VpbW0gKi9cXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmM9MTAyOD1zdGF0aWMgaW50IGppdF9zdWJwcm9ncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0xMTg4LVxcdFxcdFxcdHN1YnByb2cgPSBpbnNuLVxcdTAwM2VvZmY7XFxua2VybmVsL2JwZi9maXh1cHMuYzoxMTg5OlxcdFxcdFxcdGluc24tXFx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShmdW5jW3N1YnByb2ddLVxcdTAwM2VicGZfZnVuYyk7XFxua2VybmVsL2JwZi9maXh1cHMuYy0xMTkwLVxcdFxcdH1cXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmM9MTQ4MT1pbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuLS1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNDctXFx0XFx0XFx0Y2FzZSBCUEZfRlVOQ19tYXBfbG9va3VwX2VsZW06XFxua2VybmVsL2JwZi9maXh1cHMuYzoyMDQ4OlxcdFxcdFxcdFxcdGluc24tXFx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShvcHMtXFx1MDAzZW1hcF9sb29rdXBfZWxlbSk7XFxua2VybmVsL2JwZi9maXh1cHMuYy0yMDQ5LVxcdFxcdFxcdFxcdGdvdG8gbmV4dF9pbnNuO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA1MC1cXHRcXHRcXHRjYXNlIEJQRl9GVU5DX21hcF91cGRhdGVfZWxlbTpcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIwNTE6XFx0XFx0XFx0XFx0aW5zbi1cXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKG9wcy1cXHUwMDNlbWFwX3VwZGF0ZV9lbGVtKTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNTItXFx0XFx0XFx0XFx0Z290byBuZXh0X2luc247XFxua2VybmVsL2JwZi9maXh1cHMuYy0yMDUzLVxcdFxcdFxcdGNhc2UgQlBGX0ZVTkNfbWFwX2RlbGV0ZV9lbGVtOlxcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA1NDpcXHRcXHRcXHRcXHRpbnNuLVxcdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVxcdTAwM2VtYXBfZGVsZXRlX2VsZW0pO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA1NS1cXHRcXHRcXHRcXHRnb3RvIG5leHRfaW5zbjtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNTYtXFx0XFx0XFx0Y2FzZSBCUEZfRlVOQ19tYXBfcHVzaF9lbGVtOlxcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA1NzpcXHRcXHRcXHRcXHRpbnNuLVxcdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVxcdTAwM2VtYXBfcHVzaF9lbGVtKTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNTgtXFx0XFx0XFx0XFx0Z290byBuZXh0X2luc247XFxua2VybmVsL2JwZi9maXh1cHMuYy0yMDU5LVxcdFxcdFxcdGNhc2UgQlBGX0ZVTkNfbWFwX3BvcF9lbGVtOlxcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA2MDpcXHRcXHRcXHRcXHRpbnNuLVxcdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVxcdTAwM2VtYXBfcG9wX2VsZW0pO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA2MS1cXHRcXHRcXHRcXHRnb3RvIG5leHRfaW5zbjtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNjItXFx0XFx0XFx0Y2FzZSBCUEZfRlVOQ19tYXBfcGVla19lbGVtOlxcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA2MzpcXHRcXHRcXHRcXHRpbnNuLVxcdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVxcdTAwM2VtYXBfcGVla19lbGVtKTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNjQtXFx0XFx0XFx0XFx0Z290byBuZXh0X2luc247XFxua2VybmVsL2JwZi9maXh1cHMuYy0yMDY1LVxcdFxcdFxcdGNhc2UgQlBGX0ZVTkNfcmVkaXJlY3RfbWFwOlxcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA2NjpcXHRcXHRcXHRcXHRpbnNuLVxcdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0ob3BzLVxcdTAwM2VtYXBfcmVkaXJlY3QpO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtMjA2Ny1cXHRcXHRcXHRcXHRnb3RvIG5leHRfaW5zbjtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNjgtXFx0XFx0XFx0Y2FzZSBCUEZfRlVOQ19mb3JfZWFjaF9tYXBfZWxlbTpcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIwNjk6XFx0XFx0XFx0XFx0aW5zbi1cXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKG9wcy1cXHUwMDNlbWFwX2Zvcl9lYWNoX2NhbGxiYWNrKTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNzAtXFx0XFx0XFx0XFx0Z290byBuZXh0X2luc247XFxua2VybmVsL2JwZi9maXh1cHMuYy0yMDcxLVxcdFxcdFxcdGNhc2UgQlBGX0ZVTkNfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbTpcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIwNzI6XFx0XFx0XFx0XFx0aW5zbi1cXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKG9wcy1cXHUwMDNlbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSk7XFxua2VybmVsL2JwZi9maXh1cHMuYy0yMDczLVxcdFxcdFxcdFxcdGdvdG8gbmV4dF9pbnNuO1xcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0yMzQwLVxcdFxcdH1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIzNDE6XFx0XFx0aW5zbi1cXHUwMDNlaW1tID0gQlBGX0NBTExfSU1NKGZuLVxcdTAwM2VmdW5jKTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIzNDItbmV4dF9pbnNuOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwOTowODoyMi40OTkxOTc3MjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODUwODU4MTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgYEJQRl9DQUxMX0lNTWAqKlxuXG5Pa2F5LCBob2xkIG9uIGEgbWludXRlLiBgQlBGX0NBTExfSU1NYC4uLiB0aGF0J3MgYSBtYWNybywgaXNuJ3QgaXQ/IFJpZ2h0LiBNYWNyb3MgYXJlIGp1c3QgZ2xvcmlmaWVkIHRleHQgcmVwbGFjZW1lbnRzLCB3aGljaCBtZWFucyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0IGFjdHVhbGx5IGV4cGFuZHMgdG8uIEl04oCZcyBub3QgZ29pbmcgdG8gdGVsbCBtZSBhbnl0aGluZyB1c2VmdWwgdW50aWwgSSByZXNvbHZlIHdoYXQgdGhlIHVuZGVybHlpbmcgY29kZSBpcyBkb2luZy4gSSBuZWVkIHRvIHRyYWNrIGRvd24gaXRzIGRlZmluaXRpb24gdG8gdW5kZXJzdGFuZCB0aGUgdHJ1ZSBpbnRlbnQgaGVyZS4gVGltZSB0byBnbyBodW50aW5nIGZvciB3aGVyZSB0aGlzIG1hY3JvIGxpdmVzLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIHRoZSBzb3VyY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MDYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwOTowODoyNy4zNTAwNzA2MjJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMyMTczNDg1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIEJQRl9DQUxMX0lNTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9maWx0ZXIuaD0yNTk9c3RhdGljIGlubGluZSBib29sIGluc25faXNfY2FzdF91c2VyKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbilcXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtNDY2LVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6NDY3OiNkZWZpbmUgQlBGX0NBTExfSU1NKHgpXFx0KCh2b2lkICopKHgpIC0gKHZvaWQgKilfX2JwZl9jYWxsX2Jhc2UpXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC00NjgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA5OjA4OjMwLjY3MTgxNDU0N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwOTg0MjU0MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgQ29kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEJQRiBjb2RlIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIHJlcGxhY2VkIGAtIGluc24tXHUwMDNlaW1tID0gZm4tXHUwMDNlZnVuYyAtIF9fYnBmX2NhbGxfYmFzZTtgIHdpdGggYCsgaW5zbi1cdTAwM2VpbW0gPSBCUEZfQ0FMTF9JTU0oZm4tXHUwMDNlZnVuYyk7YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIldlbGwsIHRoYXQncyBqdXN0IGEgbWFjcm8gc3Vic3RpdHV0aW9uLiBgQlBGX0NBTExfSU1NKHgpYCBpcyBkZWZpbmVkIGFzIGAoKHZvaWQgKikoeCkgLSAodm9pZCAqKV9fYnBmX2NhbGxfYmFzZSlgLCB3aGljaCBleHBhbmRzIHRvIHRoZSBleGFjdCBzYW1lIGNhbGN1bGF0aW9uIGFzIHRoZSBvbGQgY29kZS4gU28sIHRoZSBlZmZlY3QgaXMgcHJvYmFibHkgbnVsbC4gSXQncyBqdXN0IGEgc3R5bGlzdGljIGNoYW5nZSwgcGVyaGFwcyBmb3IgcmVhZGFiaWxpdHksIGJ1dCBmdW5jdGlvbmFsbHkgaWRlbnRpY2FsLCB3aGljaCwgaWYgdHJ1ZSwgaXMgbm90IGEgdmVyeSBleGNpdGluZyBjaGFuZ2UuXG5cbldhaXQgYSBzZWNvbmQsIGBmbi1cdTAwM2VmdW5jYCBpcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIGlzbid0IGl0PyBPa2F5LCBJIHdhbnQgdG8gY29uZmlybSBJIGhhdmVuJ3QgbWlzc2VkIHNvbWV0aGluZy4gTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIHR5cGUgb2YgYGZuLVx1MDAzZWZ1bmNgLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgbWFjcm8gaXMgYWN0dWFsbHkgZG9pbmcgd2hhdCBpdCBzYXlzIGl0IGlzLCBhbmQgaXMgdHlwZS1zYWZlLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwOTowODozNC43NzAyNDI2ODdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4ODg5OTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBicGZfZnVuY19wcm90b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2JwZi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmLmg9OTYyPXN0YXRpY19hc3NlcnQoX19CUEZfUkVUX1RZUEVfTUFYIFxcdTAwM2M9IEJQRl9CQVNFX1RZUEVfTElNSVQpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC05NjctICovXFxuaW5jbHVkZS9saW51eC9icGYuaDo5Njg6c3RydWN0IGJwZl9mdW5jX3Byb3RvIHtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTk2OS1cXHR1NjQgKCpmdW5jKSh1NjQgcjEsIHU2NCByMiwgdTY0IHIzLCB1NjQgcjQsIHU2NCByNSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTExNDI9c3RydWN0IGJwZl92ZXJpZmllcl9vcHMge1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMTE0My1cXHQvKiByZXR1cm4gZUJQRiBmdW5jdGlvbiBwcm90b3R5cGUgZm9yIHZlcmlmaWNhdGlvbiAqL1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MTE0NDpcXHRjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKlxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTE0NS1cXHQoKmdldF9mdW5jX3Byb3RvKShlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTI0NTY9aW50IGJwZl9wcm9nX2NhbGNfdGFnKHN0cnVjdCBicGZfcHJvZyAqZnApO1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMjQ1Ny1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjI0NTg6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICpicGZfZ2V0X3RyYWNlX3ByaW50a19wcm90byh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjI0NTk6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICpicGZfZ2V0X3RyYWNlX3ZwcmludGtfcHJvdG8odm9pZCk7XFxuaW5jbHVkZS9saW51eC9icGYuaC0yNDYwLVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MjQ2MTpjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKmJwZl9nZXRfcGVyZl9ldmVudF9yZWFkX3ZhbHVlX3Byb3RvKHZvaWQpO1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMjQ2Mi1cXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9Mjk2OT10eXBlZGVmIGludCAoKmJwZl9pdGVyX2ZpbGxfbGlua19pbmZvX3QpKGNvbnN0IHN0cnVjdCBicGZfaXRlcl9hdXhfaW5mbyAqYXV4LFxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjk3MC1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGJwZl9saW5rX2luZm8gKmluZm8pO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mjk3MTp0eXBlZGVmIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byAqXFxuaW5jbHVkZS9saW51eC9icGYuaC0yOTcyLSgqYnBmX2l0ZXJfZ2V0X2Z1bmNfcHJvdG9fdCkoZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0zMDA4PWludCBicGZfaXRlcl9wcm9nX3N1cHBvcnRlZChzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzAwOTpjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKlxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzAxMC1icGZfaXRlcl9nZXRfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTMxNjc9c3RydWN0IGJwZl9saW5rICpicGZfbGlua19ieV9pZCh1MzIgaWQpO1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMzE2OC1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjMxNjk6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICpicGZfYmFzZV9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCxcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTMxNzAtXFx0XFx0XFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTM0OTM9c3RhdGljIGlubGluZSBpbnQgYnRmX3N0cnVjdF9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzUwMS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM1MDI6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKlxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzUwMy1icGZfYmFzZV9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0zODU0PXN0YXRpYyBpbmxpbmUgczMyIGJwZl9rZXlfc2VyaWFsKGNvbnN0IHN0cnVjdCBicGZfa2V5ICprZXkpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM4NjAtLyogdmVyaWZpZXIgcHJvdG90eXBlcyBmb3IgaGVscGVyIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBlQlBGIHByb2dyYW1zICovXFxuaW5jbHVkZS9saW51eC9icGYuaDozODYxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF9sb29rdXBfZWxlbV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NjI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX3VwZGF0ZV9lbGVtX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg2MzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfZGVsZXRlX2VsZW1fcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODY0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF9wdXNoX2VsZW1fcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODY1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF9wb3BfZWxlbV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NjY6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX3BlZWtfZWxlbV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4Njc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM4NjgtXFxuaW5jbHVkZS9saW51eC9icGYuaDozODY5OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9wcmFuZG9tX3UzMl9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NzA6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODcxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9udW1hX25vZGVfaWRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODcyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3RhaWxfY2FsbF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NzM6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X25zX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3NDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfYm9vdF9uc19wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NzU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X3RhaV9uc19wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NzY6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODc3OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jdXJyZW50X3VpZF9naWRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODc4OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jdXJyZW50X2NvbW1fcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODc5OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja2lkX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg4MDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfc3RhY2tfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODgxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja19zbGVlcGFibGVfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODgyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF90YXNrX3N0YWNrX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg4MzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfdGFza19zdGFja19zbGVlcGFibGVfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODg0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja2lkX3Byb3RvX3BlO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg4NTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfc3RhY2tfcHJvdG9fcGU7XFxuaW5jbHVkZS9saW51eC9icGYuaDozODg2OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NvY2tfbWFwX3VwZGF0ZV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4ODc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc29ja19oYXNoX3VwZGF0ZV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4ODg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfY2dyb3VwX2lkX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg4OTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF9hbmNlc3Rvcl9jZ3JvdXBfaWRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODkwOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jZ3JvdXBfY2xhc3NpZF9jdXJyX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg5MTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9jdXJyZW50X3Rhc2tfdW5kZXJfY2dyb3VwX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg5MjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tc2dfcmVkaXJlY3RfaGFzaF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTM6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbXNnX3JlZGlyZWN0X21hcF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2tfcmVkaXJlY3RfaGFzaF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2tfcmVkaXJlY3RfbWFwX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg5NjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9zcGluX2xvY2tfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozODk3OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NwaW5fdW5sb2NrX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg5ODpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfbG9jYWxfc3RvcmFnZV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4OTk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc3RydG9sX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkwMDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9zdHJ0b3VsX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkwMTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl90Y3Bfc29ja19wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MDI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfamlmZmllczY0X3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkwMzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfbnNfY3VycmVudF9waWRfdGdpZF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MDQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZXZlbnRfb3V0cHV0X2RhdGFfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTA1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfb3V0cHV0X3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkwNjpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9yaW5nYnVmX3Jlc2VydmVfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTA3OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfc3VibWl0X3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkwODpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9yaW5nYnVmX2Rpc2NhcmRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTA5OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfcXVlcnlfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTEwOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfcmVzZXJ2ZV9keW5wdHJfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTExOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3JpbmdidWZfc3VibWl0X2R5bnB0cl9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MTI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfcmluZ2J1Zl9kaXNjYXJkX2R5bnB0cl9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MTM6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2tjX3RvX3RjcDZfc29ja19wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MTQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc2tjX3RvX3RjcF9zb2NrX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxNTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za2NfdG9fdGNwX3RpbWV3YWl0X3NvY2tfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTE2OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrY190b190Y3BfcmVxdWVzdF9zb2NrX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxNzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za2NfdG9fdWRwNl9zb2NrX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxODpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za2NfdG9fdW5peF9zb2NrX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkxOTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za2NfdG9fbXB0Y3Bfc29ja19wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MjA6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfY29weV9mcm9tX3VzZXJfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTIxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NucHJpbnRmX2J0Zl9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5MjI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc25wcmludGZfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTIzOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3Blcl9jcHVfcHRyX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkyNDpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl90aGlzX2NwdV9wdHJfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTI1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2t0aW1lX2dldF9jb2Fyc2VfbnNfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTI2OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NvY2tfZnJvbV9maWxlX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkyNzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfc29ja2V0X3B0cl9jb29raWVfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTI4OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3Rhc2tfc3RvcmFnZV9nZXRfcmVjdXJfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTI5OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3Rhc2tfc3RvcmFnZV9nZXRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTMwOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3Rhc2tfc3RvcmFnZV9kZWxldGVfcmVjdXJfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTMxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3Rhc2tfc3RvcmFnZV9kZWxldGVfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTMyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2Zvcl9lYWNoX21hcF9lbGVtX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MzkzMzpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9idGZfZmluZF9ieV9uYW1lX2tpbmRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTM0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrX3NldHNvY2tvcHRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTM1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrX2dldHNvY2tvcHRfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTM2OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrX3NldHNvY2tvcHRfbm9kZWxheV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5Mzc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfdW5sb2NrZWRfc2tfc2V0c29ja29wdF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5Mzg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfdW5sb2NrZWRfc2tfZ2V0c29ja29wdF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5Mzk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZmluZF92bWFfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTQwOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2xvb3BfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTQxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTQyOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NldF9yZXR2YWxfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTQzOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9yZXR2YWxfcHJvdG87XFxuaW5jbHVkZS9saW51eC9icGYuaDozOTQ0OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3VzZXJfcmluZ2J1Zl9kcmFpbl9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5NDU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfY2dycF9zdG9yYWdlX2dldF9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM5NDY6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfY2dycF9zdG9yYWdlX2RlbGV0ZV9wcm90bztcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM5NDctXFxuaW5jbHVkZS9saW51eC9icGYuaDozOTQ4OmNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byAqdHJhY2luZ19wcm9nX2Z1bmNfcHJvdG8oXFxuaW5jbHVkZS9saW51eC9icGYuaC0zOTQ5LSAgZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwOTowODozNC44NzkxMzg5NjdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDk5MTIyMjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIENvZGUgQ2hhbmdlKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBgZm4tXHUwMDNlZnVuY2AgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uIHBvaW50ZXIsIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIGtleSBjaGFuZ2UgaGVyZSBpcyBtb3ZpbmcgZnJvbSB0aGlzOiBgLSBpbnNuLVx1MDAzZWltbSA9IGZuLVx1MDAzZWZ1bmMgLSBfX2JwZl9jYWxsX2Jhc2U7YCB0byB0aGlzOiBgKyBpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShmbi1cdTAwM2VmdW5jKTtgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgb3B0aW1pemF0aW9uLCBidXQgbGV0J3MgZGlnIGRlZXBlci5cblxuUmlnaHQsIGBCUEZfQ0FMTF9JTU0oeClgIGV4cGFuZHMgdG8gYCgodm9pZCAqKSh4KSAtICh2b2lkICopX19icGZfY2FsbF9iYXNlKWAuIEltbWVkaWF0ZWx5LCB0aGUgdXNlIG9mIGB2b2lkICpgIGNhc3RzIGlzIHJhaXNpbmcgYSBmbGFnLiBBbmQsICppbnNuLVx1MDAzZWltbSogaXMgYW4gKnMzMiogbWVhbmluZyBhIHNpZ25lZCAzMiBiaXQgaW50ZWdlci4gVGhlIHN1YnRyYWN0aW9uIG9mIHBvaW50ZXJzLCBpZiBgX19icGZfY2FsbF9iYXNlYCBpcyB0aGUgc2FtZSBwb2ludGVyIHR5cGUgYXMgYGZuLVx1MDAzZWZ1bmNgLCB3aWxsIGdpdmUgYSBkaWZmZXJlbmNlIGluIG11bHRpcGxlcyBvZiB0aGUgcG9pbnRlciB0eXBlIHNpemUuIElmIHRoZXkgYXJlIGludGVnZXJzLCBpdCdzIHN0cmFpZ2h0Zm9yd2FyZCBpbnRlZ2VyIHN1YnRyYWN0aW9uLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBfX2JwZl9jYWxsX2Jhc2VgIGFjdHVhbGx5IGlzLiBUaGF0J3MgdGhlIGNydXggb2YgdGhpcyB3aG9sZSBvcGVyYXRpb24uIEl0IGxvb2tzIGxpa2UgaXQncyB1c2VkIGFzIGEgYmFzZSBhZGRyZXNzLCBidXQgd2h5IGFuZCB3aGF0IGRvZXMgaXQgcmVwcmVzZW50PyBMZXQncyBmaWd1cmUgdGhpcyBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNjcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDk6MDg6NDAuMzc4MjYzNjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NzY5ODMyNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19icGZfY2FsbF9iYXNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jPTE1ODk9c3RhdGljIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eClcXG4tLVxcbmFyY2gvYXJtL25ldC9icGZfaml0XzMyLmMtMjA1OC1cXHRcXHRjb25zdCBzOCAqcjUgPSBicGYyYTMyW0JQRl9SRUdfNV07XFxuYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYzoyMDU5OlxcdFxcdGNvbnN0IHUzMiBmdW5jID0gKHUzMilfX2JwZl9jYWxsX2Jhc2UgKyAodTMyKWltbTtcXG5hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jLTIwNjAtXFxuLS1cXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYz04OTU9c3RhdGljIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eClcXG4tLVxcbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jLTEyMTUtXFx0e1xcbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jOjEyMTY6XFx0XFx0dTggKmZ1bmMgPSAoKHU4ICopX19icGZfY2FsbF9iYXNlKSArIGltbTtcXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYy0xMjE3LVxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTIyMzc9c3Q6XFx0XFx0XFx0aW5zbl9vZmYgPSBpbnNuLVxcdTAwM2VvZmY7XFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMjU3OC1cXHRcXHRjYXNlIEJQRl9KTVAgfCBCUEZfQ0FMTDoge1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzoyNTc5OlxcdFxcdFxcdGZ1bmMgPSAodTggKikgX19icGZfY2FsbF9iYXNlICsgaW1tMzI7XFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTI1ODAtXFx0XFx0XFx0aWYgKHNyY19yZWcgPT0gQlBGX1BTRVVET19DQUxMIFxcdTAwMjZcXHUwMDI2IHRhaWxfY2FsbF9yZWFjaGFibGUpIHtcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAzMi5jPTE1Njk9c3RhdGljIGludCBlbWl0X2tmdW5jX2NhbGwoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpicGZfcHJvZywgdTggKmVuZF9hZGRyLFxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTYzMC1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNjMxOlxcdGptcF9vZmZzZXQgPSAodTggKilfX2JwZl9jYWxsX2Jhc2UgKyBpbnNuLVxcdTAwM2VpbW0gLSBlbmRfYWRkcjtcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjMyLVxcdGlmICghaXNfc2ltbTMyKGptcF9vZmZzZXQpKSB7XFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wMzIuYz0xNjU5PXN0YXRpYyBpbnQgZG9faml0KHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2csIGludCAqYWRkcnMsIHU4ICppbWFnZSxcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAzMi5jLTIxMDUtXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcDMyLmM6MjEwNjpcXHRcXHRcXHRmdW5jID0gKHU4ICopIF9fYnBmX2NhbGxfYmFzZSArIGltbTMyO1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAzMi5jLTIxMDctXFx0XFx0XFx0am1wX29mZnNldCA9IGZ1bmMgLSAoaW1hZ2UgKyBhZGRyc1tpXSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTI1OT1zdGF0aWMgaW5saW5lIGJvb2wgaW5zbl9pc19jYXN0X3VzZXIoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuKVxcbi0tXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC00NjYtXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDo0Njc6I2RlZmluZSBCUEZfQ0FMTF9JTU0oeClcXHQoKHZvaWQgKikoeCkgLSAodm9pZCAqKV9fYnBmX2NhbGxfYmFzZSlcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTQ2OC1cXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTE3Mz12b2lkIHNrX2ZpbHRlcl91bmNoYXJnZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19maWx0ZXIgKmZwKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTExNzQtXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMTc1OnU2NCBfX2JwZl9jYWxsX2Jhc2UodTY0IHIxLCB1NjQgcjIsIHU2NCByMywgdTY0IHI0LCB1NjQgcjUpO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTE3Ni1cXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTEyNDY9aW50IGJwZl9qaXRfZ2V0X2Z1bmNfYWRkcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjc0LVxcdFxcdC8qIEFkZHJlc3Mgb2YgYSBCUEYgaGVscGVyIGNhbGwuIFNpbmNlIHBhcnQgb2YgdGhlIGNvcmVcXG5rZXJuZWwvYnBmL2NvcmUuYzoxMjc1OlxcdFxcdCAqIGtlcm5lbCwgaXQncyBhbHdheXMgYXQgYSBmaXhlZCBsb2NhdGlvbi4gX19icGZfY2FsbF9iYXNlXFxua2VybmVsL2JwZi9jb3JlLmMtMTI3Ni1cXHRcXHQgKiBhbmQgdGhlIGhlbHBlciB3aXRoIGltbSByZWxhdGl2ZSB0byBpdCBhcmUgYm90aCBpbiBjb3JlXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjc4LVxcdFxcdCAqL1xcbmtlcm5lbC9icGYvY29yZS5jOjEyNzk6XFx0XFx0YWRkciA9ICh1OCAqKV9fYnBmX2NhbGxfYmFzZSArIGltbTtcXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjgwLVxcdH1cXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTE1ODY9dTE2IGJwZl9vdXRfc3RhY2tfYXJnX2NudChjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjAyLSAqL1xcbmtlcm5lbC9icGYvY29yZS5jOjE2MDM6bm9pbmxpbmUgdTY0IF9fYnBmX2NhbGxfYmFzZSh1NjQgcjEsIHU2NCByMiwgdTY0IHIzLCB1NjQgcjQsIHU2NCByNSlcXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjA0LXtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTE2MDYtfVxcbmtlcm5lbC9icGYvY29yZS5jOjE2MDc6RVhQT1JUX1NZTUJPTF9HUEwoX19icGZfY2FsbF9iYXNlKTtcXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjA4LVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MTc5Nj1zdGF0aWMgdTY0IF9fX2JwZl9wcm9nX3J1bih1NjQgKnJlZ3MsIGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbilcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTIwODctXFx0XFx0ICovXFxua2VybmVsL2JwZi9jb3JlLmM6MjA4ODpcXHRcXHRCUEZfUjAgPSAoX19icGZfY2FsbF9iYXNlICsgaW5zbi1cXHUwMDNlaW1tKShCUEZfUjEsIEJQRl9SMiwgQlBGX1IzLFxcbmtlcm5lbC9icGYvY29yZS5jLTIwODktXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIEJQRl9SNCwgQlBGX1I1KTtcXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmM9MTAyOD1zdGF0aWMgaW50IGppdF9zdWJwcm9ncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0xMDU2LVxcdFxcdGVudi1cXHUwMDNlaW5zbl9hdXhfZGF0YVtpXS5jYWxsX2ltbSA9IGluc24tXFx1MDAzZWltbTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjEwNTc6XFx0XFx0LyogcG9pbnQgaW1tIHRvIF9fYnBmX2NhbGxfYmFzZSsxIGZyb20gSklUcyBwb2ludCBvZiB2aWV3ICovXFxua2VybmVsL2JwZi9maXh1cHMuYy0xMDU4LVxcdFxcdGluc24tXFx1MDAzZWltbSA9IDE7XFxuLS1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTExOTYtXFx0XFx0ICogbWlnaHQgbm90IGJlIGxhcmdlIGVub3VnaCB0byBob2xkIHRoZSBvZmZzZXQgb2YgdGhlIHN0YXJ0XFxua2VybmVsL2JwZi9maXh1cHMuYzoxMTk3OlxcdFxcdCAqIGFkZHJlc3Mgb2YgdGhlIGNhbGxlZSdzIEpJVGVkIGltYWdlIGZyb20gX19icGZfY2FsbF9iYXNlXFxua2VybmVsL2JwZi9maXh1cHMuYy0xMTk4LVxcdFxcdCAqXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1OTk9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYxMi1cXHQvKiBpbnNuLVxcdTAwM2VpbW0gaGFzIHRoZSBidGYgZnVuY19pZC4gUmVwbGFjZSBpdCB3aXRoIGFuIG9mZnNldCByZWxhdGl2ZSB0b1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYxMzpcXHQgKiBfX2JwZl9jYWxsX2Jhc2UsIHVubGVzcyB0aGUgSklUIG5lZWRzIHRvIGNhbGwgZnVuY3Rpb25zIHRoYXQgYXJlXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjE0LVxcdCAqIGZ1cnRoZXIgdGhhbiAzMiBiaXRzIGF3YXkgKGJwZl9qaXRfc3VwcG9ydHNfZmFyX2tmdW5jX2NhbGwoKSkuXFxuLS1cXG5saWIvdGVzdF9icGYuYz0xNTYyMD1zdGF0aWMgX19pbml0IGludCBwcmVwYXJlX3RhaWxfY2FsbF90ZXN0cyhzdHJ1Y3QgYnBmX2FycmF5ICoqcHByb2dzKVxcbi0tXFxubGliL3Rlc3RfYnBmLmMtMTU3MTAtXFx0XFx0XFx0XFx0Kmluc24gPSBCUEZfRU1JVF9DQUxMKGFkZHIpO1xcbmxpYi90ZXN0X2JwZi5jOjE1NzExOlxcdFxcdFxcdFxcdGlmICgobG9uZylfX2JwZl9jYWxsX2Jhc2UgKyBpbnNuLVxcdTAwM2VpbW0gIT0gYWRkcilcXG5saWIvdGVzdF9icGYuYy0xNTcxMi1cXHRcXHRcXHRcXHRcXHQqaW5zbiA9IEJQRl9KTVBfQSgwKTsgLyogU2tpcDogTk9QICovXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYz0zNjE9c3RhdGljIGJvb2wgY29udmVydF9icGZfZXh0ZW5zaW9ucyhzdHJ1Y3Qgc29ja19maWx0ZXIgKmZwLFxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtNDc5LVxcdFxcdC8qIFRoaXMgaXMganVzdCBhIGR1bW15IGNhbGwgdG8gYXZvaWQgbGV0dGluZyB0aGUgY29tcGlsZXJcXG5uZXQvY29yZS9maWx0ZXIuYzo0ODA6XFx0XFx0ICogZXZpY3QgX19icGZfY2FsbF9iYXNlKCkgYXMgYW4gb3B0aW1pemF0aW9uLiBQbGFjZWQgaGVyZVxcbm5ldC9jb3JlL2ZpbHRlci5jLTQ4MS1cXHRcXHQgKiB3aGVyZSBuby1vbmUgYm90aGVycy5cXG5uZXQvY29yZS9maWx0ZXIuYy00ODItXFx0XFx0ICovXFxubmV0L2NvcmUvZmlsdGVyLmM6NDgzOlxcdFxcdEJVR19PTihfX2JwZl9jYWxsX2Jhc2UoMCwgMCwgMCwgMCwgMCkgIT0gMCk7XFxubmV0L2NvcmUvZmlsdGVyLmMtNDg0LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL3hsYXRlZF9kdW1wZXIuYz0yNj12b2lkIGtlcm5lbF9zeW1zX2xvYWQoc3RydWN0IGR1bXBfZGF0YSAqZGQpXFxuLS1cXG50b29scy9icGYvYnBmdG9vbC94bGF0ZWRfZHVtcGVyLmMtNTUtXFx0XFx0c3ltLVxcdTAwM2VhZGRyZXNzID0gKHVuc2lnbmVkIGxvbmcpYWRkcmVzcztcXG50b29scy9icGYvYnBmdG9vbC94bGF0ZWRfZHVtcGVyLmM6NTY6XFx0XFx0aWYgKCFzdHJjbXAoc3ltLVxcdTAwM2VuYW1lLCBcXFwiX19icGZfY2FsbF9iYXNlXFxcIikpIHtcXG50b29scy9icGYvYnBmdG9vbC94bGF0ZWRfZHVtcGVyLmMtNTctXFx0XFx0XFx0ZGQtXFx1MDAzZWFkZHJlc3NfY2FsbF9iYXNlID0gc3ltLVxcdTAwM2VhZGRyZXNzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwOTowODo0Mi45NTUyNTU1NThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI0NTQxNTEwMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgQ2FsbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0IHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gYF9fYnBmX2NhbGxfYmFzZWAsIHdoaWNoIGlzIGRlZmluZWQgYXMgYSBzaW1wbGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIDAuICBUaGVuIHRoZXJlJ3MgdGhpcyBtYWNybywgYEJQRl9DQUxMX0lNTSh4KWAsIHdoaWNoIGlzIGRlZmluZWQgYXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBgKHZvaWQgKikoeClgIGFuZCBgKHZvaWQgKilfX2JwZl9jYWxsX2Jhc2VgLiBUaGUgcGF0Y2ggaXRzZWxmIHJlcGxhY2VzIGBpbnNuLVx1MDAzZWltbSA9IGZuLVx1MDAzZWZ1bmMgLSBfX2JwZl9jYWxsX2Jhc2U7YCB3aXRoIGBpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShmbi1cdTAwM2VmdW5jKTtgLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgZm4tXHUwMDNlZnVuY2AgaXMgYSBmdW5jdGlvbiBwb2ludGVyLiAgQW5kIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgc3VidHJhY3RpbmcgdHdvIGZ1bmN0aW9uIHBvaW50ZXJzIGRpcmVjdGx5IGluIHN0YW5kYXJkIEMgaXMgbm90IHZhbGlkIHBvaW50ZXIgYXJpdGhtZXRpYy4gSXQncyBlaXRoZXIgYSBHTlUgZXh0ZW5zaW9uIG9yIHVuZGVmaW5lZCBiZWhhdmlvci4gU28sIHRoZSBvbGQgY29kZSwgYGZuLVx1MDAzZWZ1bmMgLSBfX2JwZl9jYWxsX2Jhc2VgLCBzZWVtcyBzdXNwZWN0LiBIb3dldmVyLCB0aGUgbWFjcm8gY2FzdHMgYm90aCBmdW5jdGlvbiBwb2ludGVycyB0byBgdm9pZCAqYCBiZWZvcmUgdGhlIHN1YnRyYWN0aW9uLlxuXG5Ob3csIEdDQyBkb2VzIGFsbG93IHBvaW50ZXIgYXJpdGhtZXRpYyBvbiBgdm9pZCAqYCwgdHJlYXRpbmcgaXQgYXMgYSBieXRlIG9mZnNldC4gU28sIGAodm9pZCAqKWZuLVx1MDAzZWZ1bmMgLSAodm9pZCAqKV9fYnBmX2NhbGxfYmFzZWAgY29tcHV0ZXMgdGhlIGJ5dGUgb2Zmc2V0IGJldHdlZW4gdGhlIHR3by4gSG93ZXZlciwgd2hhdCBpZiB3ZSBkaWRuJ3QgaGF2ZSB0aGUgY2FzdHM/IFdoYXQgd291bGQgYmUgdGhlIHR5cGUgb2YgdGhlIHN1YnRyYWN0aW9uLCBpZiBHQ0MgYWxsb3dzIGZ1bmN0aW9uIHBvaW50ZXIgc3VidHJhY3Rpb24/IExldCdzIHZlcmlmeSB3aGF0IGBmbi1cdTAwM2VmdW5jYCBpcy4gQWgsIGl0J3MgYSBmdW5jdGlvbiBwb2ludGVyLCBzcGVjaWZpY2FsbHksIGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZSBgdTY0ICgqKSh1NjQsIHU2NCwgdTY0LCB1NjQsIHU2NClgLlxuXG5Ob3csIGlmIEkgc3VidHJhY3QgdHdvIGZ1bmN0aW9uIHBvaW50ZXJzIGluIEdDQywgZG9lcyBpdCBnaXZlIG1lIHRoZSBkaWZmZXJlbmNlIGluIGJ5dGVzLCBvciBkb2VzIGl0IGdpdmUgYW4gZXJyb3I/IEl0IG1pZ2h0IGNvbXBsYWluIG9yIGl0IG1pZ2h0IGdpdmUgdGhlIGRpZmZlcmVuY2UgaW4gYnl0ZXMuIEJ1dCBmdW5jdGlvbmFsbHksIHdpdGhvdXQgdGhlIGNhc3RzLCBgeCAtIHlgIHdvdWxkIGdpdmUgdGhlIHNhbWUgYnl0ZSBvZmZzZXQgYXMgdGhlIHZlcnNpb24gd2l0aCB0aGUgY2FzdHMsIGlmIEdDQyBhbGxvd3MgaXQgYW5kIHRyZWF0cyBmdW5jdGlvbiBwb2ludGVycyBhcyBzaXplIDEuXG5cbldhaXQsIGlzIHRoZXJlIGFueSBhY3R1YWwgZnVuY3Rpb25hbCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG9sZCBjb2RlIGFuZCB0aGUgbmV3IGNvZGU/IExldCdzIHNlZS4uLiBgaW5zbi1cdTAwM2VpbW1gIGlzIGEgc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIChgczMyYCkuIGBmbi1cdTAwM2VmdW5jYCBhbmQgYF9fYnBmX2NhbGxfYmFzZWAgYXJlIGJvdGggcG9pbnRlcnMgdG8gdGhlIHNhbWUgZnVuY3Rpb24gdHlwZS4gU28gc3VidHJhY3RpbmcgdHdvIHBvaW50ZXJzIG9mIHRoZSBzYW1lIHR5cGUgZ2l2ZXMgdGhlIGRpZmZlcmVuY2UgaW4gYnl0ZXMsIGRpdmlkZWQgYnkgdGhlIHNpemUgb2YgdGhlIHR5cGUuIFdoYXQgaXMgdGhlIHNpemUgb2YgYSBmdW5jdGlvbiB0eXBlIGluIEdDQz8gR0NDIGhhcyBhbiBleHRlbnNpb24sIGBzaXplb2YoZnVuY3Rpb24pYCB3aGljaCBpcyAxLiBTbywgc3VidHJhY3RpbmcgYGZuLVx1MDAzZWZ1bmMgLSBfX2JwZl9jYWxsX2Jhc2VgIGdpdmVzIHRoZSBkaWZmZXJlbmNlIGluIGJ5dGVzISBBbmQgdGhlIGAodm9pZCAqKWZuLVx1MDAzZWZ1bmMgLSAodm9pZCAqKV9fYnBmX2NhbGxfYmFzZWAgYWxzbyBnaXZlcyB0aGUgZGlmZmVyZW5jZSBpbiBieXRlcyFcblxuU28sIHRoZSB2YWx1ZXMgY29tcHV0ZWQgYXJlIGlkZW50aWNhbC4gVGhlIHBhdGNoIGlzIHNpbXBseSBhIGNsZWFudXAsIHVzaW5nIHRoZSBgQlBGX0NBTExfSU1NYCBtYWNybyBpbnN0ZWFkIG9mIG9wZW4tY29kaW5nIGl0LiBJdCBwcm9iYWJseSBhdm9pZHMgY29tcGlsZXIgd2FybmluZ3Mgb24gc29tZSBjb21waWxlcnMgYW5kIHByb3ZpZGVzIGNvbnNpc3RlbmN5LiBJJ2xsIHZlcmlmeSB0aGlzIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyMTQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDk6MDg6NTUuNDA5NDA4OTMyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjc5MDE2MjQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImluc24tXFx1MDAzZWltbSA9IGZuLVxcdTAwM2VmdW5jIC0gX19icGZfY2FsbF9iYXNlO1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2ZpeHVwcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwOTowODo1NS43NzczMzAyODZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyMjc0MTEyMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29zbWV0aWMgQlBGIFBhdGNoKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQgbWUgcXVpY2tseSBnbGFuY2UgYXQgdGhlIGBnaXQgbG9nYCB0byBzZWUgaWYgdGhlIGF1dGhvcidzIHJhdGlvbmFsZSBpcyByZWFkaWx5IGF2YWlsYWJsZS4gSG1tLCBubyBgZ2l0IGxvZ2AgZGlyZWN0bHksIGJ1dCBJIGNhbiBwcm9iYWJseSBnZXQgdGhlIGdpc3QgdXNpbmcgYGdyZXBwZXJgLCBvciwgY29uc2lkZXJpbmcgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBpdOKAmXMgbGlrZWx5IGp1c3QgY29zbWV0aWMgcmVmYWN0b3JpbmcuIExldCdzIGRpZyBpbiBhbmQgZXhhbWluZSB0aGUgZGlmZiBpdHNlbGYuXG5cbkFscmlnaHQsIHRoZSBvbmx5IGNoYW5nZSBpcyBpbiBga2VybmVsL2JwZi9maXh1cHMuY2AuIEkgc2VlIGl0IHJpZ2h0IGF3YXk6IGEgbGluZSBpcyBjaGFuZ2VkIGludm9sdmluZyBgaW5zbi1cdTAwM2VpbW1gLiBQcmV2aW91c2x5IGl0IHdhcyBgaW5zbi1cdTAwM2VpbW0gPSBmbi1cdTAwM2VmdW5jIC0gX19icGZfY2FsbF9iYXNlO2AsIG5vdyBpdCdzIGBpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShmbi1cdTAwM2VmdW5jKTtgLlxuXG5Ob3csIGxldCdzIHVucGFjayB0aGlzLi4uIGBmbi1cdTAwM2VmdW5jYCBhbmQgYF9fYnBmX2NhbGxfYmFzZWAgYXJlIGZ1bmN0aW9uIHBvaW50ZXJzLiBUaGUgc3VidHJhY3Rpb24sIGF0IGZpcnN0IGdsYW5jZSwgc2VlbXMgdG8ganVzdCBjb21wdXRlIGFuIG9mZnNldC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIHN1YnRsZSB0aG91Z2guIExldCdzIHNlZSBpZiB0aGUgb3RoZXIgY2hhbmdlIGlzIHRoZXJlIGluIHRoZSBwYXRjaC5cblxuV2FpdCwgbG9va2luZyBhdCB0aGUgY29kZSBpbiBga2VybmVsL2JwZi9jb3JlLmNgLCBJIHNlZSB0aGF0IGBfX2JwZl9jYWxsX2Jhc2VgIGlzICphY3R1YWxseSogYSBmdW5jdGlvbjogYG5vaW5saW5lIHU2NCBfX2JwZl9jYWxsX2Jhc2UodTY0IHIxLCB1NjQgcjIsIHU2NCByMywgdTY0IHI0LCB1NjQgcjUpYC4gQnV0LCB3aGVuIHVzZWQgaW4gYW4gZXhwcmVzc2lvbiB3aXRob3V0IGBcdTAwMjZgLCBpdCBkZWNheXMgdG8gYSBmdW5jdGlvbiBwb2ludGVyLiBTbywgaW4gdGhlIG9yaWdpbmFsIGNvZGUsIHRoZSBzdWJ0cmFjdGlvbiBpcyBpbmRlZWQgc3VidHJhY3RpbmcgdHdvIGZ1bmN0aW9uIHBvaW50ZXJzLiBOb3csIGluIEdDQywgcG9pbnRlciBhcml0aG1ldGljIG9uIGZ1bmN0aW9uIHBvaW50ZXJzIGlzIGFuIGV4dGVuc2lvbiwgYW5kIHRoZSBzaXplIG9mIGEgZnVuY3Rpb24gaXMgMSBieXRlLCBqdXN0IGxpa2UgYHZvaWRgLiBTbywgZWZmZWN0aXZlbHksIHRoZSByZXN1bHQgd2lsbCBldmFsdWF0ZSB0byB0aGUgYnl0ZSBvZmZzZXQuXG5cbk5vdyBsZXQncyBsb29rIGF0IGBCUEZfQ0FMTF9JTU0oZm4tXHUwMDNlZnVuYylgLiBUaGlzIGV2YWx1YXRlcyB0byBgKCh2b2lkICopKGZuLVx1MDAzZWZ1bmMpIC0gKHZvaWQgKilfX2JwZl9jYWxsX2Jhc2UpYC4gVGhpcyBhbHNvIGNvbXB1dGVzIHRoZSBieXRlIG9mZnNldC4gQmluZ28hIEl0J3MgdGhlIHNhbWUuXG5cblRoZXJlZm9yZSwgdGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZywgYSBzaW1wbGUgbWFjcm8gcmVwbGFjZW1lbnQgZm9yIGNvbnNpc3RlbmN5LiBObyBmdW5jdGlvbmFsIGNoYW5nZXMuXG5cblNvLCBpbiBjb25jbHVzaW9uLCB0aGlzIHBhdGNoIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHRoYXQgdGhlIGNoYW5nZSByZXBsYWNlcyBhIGZ1bmN0aW9uIHBvaW50ZXIgc3VidHJhY3Rpb24gd2l0aCBhbiBlcXVpdmFsZW50IG1hY3JvLiBTaW5jZSBHQ0MgdHJlYXRzIHRoZSBzaXplIG9mIGEgZnVuY3Rpb24gYXMgMSAoc2FtZSBhcyBgdm9pZGApLCB0aGUgY2FsY3VsYXRlZCBieXRlIG9mZnNldCBpcyBpZGVudGljYWwuIFRoZSBjaGFuZ2UgaXMgcHVyZWx5IGNvc21ldGljLCByZXByZXNlbnRpbmcgYSByZWZhY3RvcmluZyB3aXRoIG5vIG9ic2VydmFibGUgZnVuY3Rpb25hbCBlZmZlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNjMyLCJPdXRwdXRUb2tlbnMiOjg4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA5OjA5OjA3LjAwNDc0NDMxOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGFuIG9wZW4tY29kZWQgZnVuY3Rpb24gcG9pbnRlciBzdWJ0cmFjdGlvbiB3aXRoIHRoZSBlcXVpdmFsZW50IEJQRl9DQUxMX0lNTSBtYWNyby4gU2luY2UgR0NDIHRyZWF0cyB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIGFzIDEgYnl0ZSAoc2FtZSBhcyB2b2lkKSwgdGhlIGNvbXB1dGVkIGJ5dGUgb2Zmc2V0IGlzIGlkZW50aWNhbC4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGFuIG9wZW4tY29kZWQgZnVuY3Rpb24gcG9pbnRlciBzdWJ0cmFjdGlvbiB3aXRoIHRoZSBlcXVpdmFsZW50IEJQRl9DQUxMX0lNTSBtYWNyby4gU2luY2UgR0NDIHRyZWF0cyB0aGUgc2l6ZSBvZiBhIGZ1bmN0aW9uIGFzIDEgYnl0ZSAoc2FtZSBhcyB2b2lkKSwgdGhlIGNvbXB1dGVkIGJ5dGUgb2Zmc2V0IGlzIGlkZW50aWNhbC4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpb5nq[1] Phase: Running StartedAt: 2026-07-01 09:09:31 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpb5nq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-01 09:09:31 +0000 UTC FinishedAt: 2026-07-01 09:10:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}