Name: series-workflowkrvxp Phase: Failed StartedAt: 2026-08-31 18:51:42 +0000 UTC FinishedAt: 2026-08-31 19:21:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkrvxp[0] Phase: Succeeded StartedAt: 2026-08-31 18:51:42 +0000 UTC FinishedAt: 2026-08-31 19:21:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkrvxp[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 18:51:42 +0000 UTC FinishedAt: 2026-08-31 19:21:24 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGlyZWN0IHJ1bGUgdGFibGUgZGVzdHJ1Y3Rpb24gbG9naWMgaW4gdGhlIG1seDUgaGFyZHdhcmUgc3RlZXJpbmcgKEhXUykgc3Vic3lzdGVtIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jYCkuIE1lbGxhbm94IENvbm5lY3RYIChtbHg1KSBkZXZpY2VzIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGFkYXB0ZXJzL1NtYXJ0TklDcyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBwYXRocyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3NmYxNjcyZWY3MGE2ODRlY2UyYTI1OWFhMGJhNjZkZjE0Nzg5ZjhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMTk6MjA6MzMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jXG5pbmRleCA2MTEzMzgzYWU0N2JiLi4wN2EzZGQxMjQ4Yzc3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNcbkBAIC0yODIsNiAmIzQzOzI4Miw5IEBAIGludCBtbHg1aHdzX3RhYmxlX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfdGFibGUgKnRibClcbiBcdFx0Z290byB1bmxvY2tfZXJyO1xuIFx0fVxuIFxuJiM0MztcdGlmICh0YmwtXHUwMDNlZGVmYXVsdF9taXNzLm1pc3NfdGJsKVxuJiM0MztcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0YmwtXHUwMDNlZGVmYXVsdF9taXNzLm5leHQpO1xuJiM0MztcbiBcdGxpc3RfZGVsX2luaXQoXHUwMDI2dGJsLVx1MDAzZXRibF9saXN0X25vZGUpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmN0eC1cdTAwM2VjdHJsX2xvY2spO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRpcmVjdCBydWxlIHRhYmxlIGRlc3RydWN0aW9uIGxvZ2ljIGluIHRoZSBtbHg1IGhhcmR3YXJlIHN0ZWVyaW5nIChIV1MpIHN1YnN5c3RlbSAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuY2ApLiBNZWxsYW5veCBDb25uZWN0WCAobWx4NSkgZGV2aWNlcyBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBhZGFwdGVycy9TbWFydE5JQ3MgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgcGF0aHMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzZmMTY3MmVmNzBhNjg0ZWNlMmEyNTlhYTBiYTY2ZGYxNDc4OWY4YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMxIDE5OjIwOjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jCmluZGV4IDYxMTMzODNhZTQ3YmIuLjA3YTNkZDEyNDhjNzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMKQEAgLTI4Miw2ICYjNDM7MjgyLDkgQEAgaW50IG1seDVod3NfdGFibGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGJsKQogCQlnb3RvIHVubG9ja19lcnI7CiAJfQogCiYjNDM7CWlmICh0YmwtJmd0O2RlZmF1bHRfbWlzcy5taXNzX3RibCkKJiM0MzsJCWxpc3RfZGVsX2luaXQoJmFtcDt0YmwtJmd0O2RlZmF1bHRfbWlzcy5uZXh0KTsKJiM0MzsKIAlsaXN0X2RlbF9pbml0KCZhbXA7dGJsLSZndDt0YmxfbGlzdF9ub2RlKTsKIAltdXRleF91bmxvY2soJmFtcDtjdHgtJmd0O2N0cmxfbG9jayk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzMQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDMxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIFdvcnRoaW5lc3MgZm9yIEZ1enppbmcqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoYXQgYG1seDVgIGlzIOKAkyBpdCYjMzk7cyB0aGUgTWVsbGFub3ggQ29ubmVjdFgtNCBhbmQgQ29ubmVjdFgtNSYjNDM7IE5JQyBkcml2ZXIsIHJpZ2h0PyBHb3QgaXQuIE5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb24g4oCTIGNhbiBJIGFjdHVhbGx5ICpyZWFjaCogdGhpcyBkcml2ZXIgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIHdpdGhvdXQgbmVlZGluZyBhIHBoeXNpY2FsIE1lbGxhbm94IGNhcmQ/IEkgbmVlZCB0byBjaGVjayB0aGUgY3JpdGVyaWEgd2UmIzM5O3ZlIGVzdGFibGlzaGVkLgoKTGV0IG1lIHNlZeKApiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgYWZmZWN0czogY29kZSBwYXRocyBpbXBvc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50czsgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmU7IG9yIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MuJiMzNDsgUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBtbHg1YCBvciBzcGVjaWZpY2FsbHkgdGhlIGBtbHg1aHdzYCBwYXJ0IGZhbGxzIGludG8gdGhhdCAmIzM0O3ZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSYjMzQ7IGNhdGVnb3J5LCBvciBpZiBpdCBoYXMgc29tZSBlbXVsYXRpb24gb3Igc29mdCBkZXZpY2UgcGF0aCB0aGF0IEkgY2FuIGV4cGxvaXQuIFRoZSBrZXkgaGVyZSBpcyBpZiBpdCByZXF1aXJlcyB0aGUgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUgY2FyZHMsIHdoaWNoIEkgY2FuJiMzOTt0IGd1YXJhbnRlZSBhY2Nlc3MgdG8uCgpBbHJpZ2h0LCBiZWZvcmUgSSBtYWtlIGEgY2FsbCBvbiB0aGlzLCBJIGhhZCBiZXR0ZXIgaW5zcGVjdCB0aGUgZmlsZXMgYW5kIHRoZSBtbHg1IGRyaXZlciBtb3JlIHRob3JvdWdobHkgdG8gYmUgY2VydGFpbi4gSSBkb24mIzM5O3Qgd2FudCB0byBydWxlIG91dCBzb21ldGhpbmcgdGhhdCBpcyByZWFjaGFibGUganVzdCBkdWUgdG8gYSBsYWNrIG9mIGNvbXBsZXRlIGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVod3NfdGFibGVfZGVzdHJveSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9MzQ3PWh3c19pc29sYXRlZF90YWJsZV9jcmVhdGUoY29uc3Qgc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy0zODItZGVzdHJveV90Ymw6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM6MzgzOlx0bWx4NWh3c190YWJsZV9kZXN0cm95KHRibCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtMzg0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz00MzM9c3RhdGljIGludCBod3Nfc3VibWF0Y2hlcl9pbml0KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlciwgaW50IGlkeCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNTA1LWRlc3Ryb3lfdGJsOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjUwNjpcdG1seDVod3NfdGFibGVfZGVzdHJveShzdWJtLVx1MDAzZXRibCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNTA3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz01MTE9c3RhdGljIHZvaWQgaHdzX3N1Ym1hdGNoZXJfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqY21hdGNoZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUzMC1cdFx0bWx4NWh3c19hY3Rpb25fZGVzdHJveShzdWJtLVx1MDAzZWFjdGlvbl90YmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjUzMTpcdFx0bWx4NWh3c190YWJsZV9kZXN0cm95KHN1Ym0tXHUwMDNldGJsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy01MzItXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYz0yNDE9c3RhdGljIGludCBtbHg1X2NtZF9od3NfY3JlYXRlX2Zsb3dfdGFibGUoc3RydWN0IG1seDVfZmxvd19yb290X25hbWVzcGFjZSAqbnMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYy0yOTUtZGVzdHJveV90YWJsZTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvZnNfaHdzLmM6Mjk2Olx0bWx4NWh3c190YWJsZV9kZXN0cm95KHRibCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2ZzX2h3cy5jLTI5Ny1cdGZ0LVx1MDAzZWZzX2h3c190YWJsZS5od3NfdGFibGUgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvZnNfaHdzLmM9MzAxPXN0YXRpYyBpbnQgbWx4NV9jbWRfaHdzX2Rlc3Ryb3lfZmxvd190YWJsZShzdHJ1Y3QgbWx4NV9mbG93X3Jvb3RfbmFtZXNwYWNlICpucyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2ZzX2h3cy5jLTMxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvZnNfaHdzLmM6MzE3Olx0ZXJyID0gbWx4NWh3c190YWJsZV9kZXN0cm95KGZ0LVx1MDAzZWZzX2h3c190YWJsZS5od3NfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYy0zMTgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWF0Y2hlci5jPTIxPXN0YXRpYyB2b2lkIGh3c19tYXRjaGVyX2Rlc3Ryb3lfZW5kX2Z0KHN0cnVjdCBtbHg1aHdzX21hdGNoZXIgKm1hdGNoZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21hdGNoZXIuYy0yMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21hdGNoZXIuYzoyMzpcdG1seDVod3NfdGFibGVfZGVzdHJveV9kZWZhdWx0X2Z0KG1hdGNoZXItXHUwMDNldGJsLCBtYXRjaGVyLVx1MDAzZWVuZF9mdF9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21hdGNoZXIuYy0yNC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tYXRjaGVyLmM9ODE9c3RhdGljIGludCBod3NfbWF0Y2hlcl9jcmVhdGVfZW5kX2Z0X2lzb2xhdGVkKHN0cnVjdCBtbHg1aHdzX21hdGNoZXIgKm1hdGNoZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tYXRjaGVyLmMtMTAzLWRlc3Ryb3lfZGVmYXVsdF9mdDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWF0Y2hlci5jOjEwNDpcdG1seDVod3NfdGFibGVfZGVzdHJveV9kZWZhdWx0X2Z0KHRibCwgbWF0Y2hlci1cdTAwM2VlbmRfZnRfaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tYXRjaGVyLmMtMTA1LVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21seDVod3MuaD0yOTM9bWx4NWh3c190YWJsZV9jcmVhdGUoc3RydWN0IG1seDVod3NfY29udGV4dCAqY3R4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWx4NWh3cy5oLTI5Ni0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWx4NWh3cy5oOjI5NzogKiBtbHg1aHdzX3RhYmxlX2Rlc3Ryb3kgLSBEZXN0cm95IGRpcmVjdCBydWxlIHRhYmxlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tbHg1aHdzLmgtMjk4LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tbHg1aHdzLmgtMzAyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tbHg1aHdzLmg6MzAzOmludCBtbHg1aHdzX3RhYmxlX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfdGFibGUgKnRibCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21seDVod3MuaC0zMDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jPTEyMz1pbnQgbWx4NWh3c190YWJsZV9jcmVhdGVfZGVmYXVsdF9mdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMtMTYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jOjE2Mjp2b2lkIG1seDVod3NfdGFibGVfZGVzdHJveV9kZWZhdWx0X2Z0KHN0cnVjdCBtbHg1aHdzX3RhYmxlICp0YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMtMTYzLVx0XHRcdFx0ICAgICAgdTMyIGZ0X2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYz0xODA9c3RhdGljIGludCBod3NfdGFibGVfaW5pdChzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGJsKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYy0yMTYtdGJsX2Rlc3Ryb3k6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmM6MjE3Olx0bWx4NWh3c190YWJsZV9kZXN0cm95X2RlZmF1bHRfZnQodGJsLCB0YmwtXHUwMDNlZnRfaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTIxOC1cdG11dGV4X3VubG9jayhcdTAwMjZjdHgtXHUwMDNlY3RybF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmM9MjIyPXN0YXRpYyB2b2lkIGh3c190YWJsZV91bmluaXQoc3RydWN0IG1seDVod3NfdGFibGUgKnRibClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMtMjI1LVx0bWx4NWh3c19hY3Rpb25fcHV0X2RlZmF1bHRfc3RjKHRibC1cdTAwM2VjdHgsIHRibC1cdTAwM2V0eXBlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYzoyMjY6XHRtbHg1aHdzX3RhYmxlX2Rlc3Ryb3lfZGVmYXVsdF9mdCh0YmwsIHRibC1cdTAwM2VmdF9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMtMjI3LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRibC1cdTAwM2VjdHgtXHUwMDNlY3RybF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmM9MjMwPXN0cnVjdCBtbHg1aHdzX3RhYmxlICptbHg1aHdzX3RhYmxlX2NyZWF0ZShzdHJ1Y3QgbWx4NWh3c19jb250ZXh0ICpjdHgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTI2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYzoyNjc6aW50IG1seDVod3NfdGFibGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGJsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTI2OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5oPTQ5PWludCBtbHg1aHdzX3RhYmxlX2NyZWF0ZV9kZWZhdWx0X2Z0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuaC01Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuaDo1Mzp2b2lkIG1seDVod3NfdGFibGVfZGVzdHJveV9kZWZhdWx0X2Z0KHN0cnVjdCBtbHg1aHdzX3RhYmxlICp0YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmgtNTQtXHRcdFx0XHQgICAgICB1MzIgZnRfaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMTkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgV29ydGhpbmVzcyBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NWAgaXMgYWxsIGFib3V0LiBSaWdodCwgYG1seDVgIGlzIHRoZSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBNZWxsYW5veCYjMzk7cyA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIOKAkyB0aGUgQ29ubmVjdFgtNCwgQ29ubmVjdFgtNSwgYW5kIHNvIG9uLiBUaGVzZSBhcmUgcHJvcGVyIFBDSWUgaGFyZHdhcmUgZGV2aWNlcywgaGlnaC1wZXJmb3JtYW5jZSBzdHVmZi4gVGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgdGhlc2UgY2FyZHMgYXJlICpwaHlzaWNhbCogZGV2aWNlcy4gU3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgZG9uJiMzOTt0IGVtdWxhdGUgdGhpcyBoYXJkd2FyZS4gU28sIHRoZXkgYXJlbiYjMzk7dCBkaXJlY3RseSB1c2VmdWwgZm9yIHRlc3RpbmcuCgpOb3csIGxldCYjMzk7cyBzZWUgd2hhdCB0aGUgaW5zdHJ1Y3Rpb25zIHNheSBhYm91dCBkZXRlcm1pbmluZyAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7LiBUaGUga2V5IGlzOiBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzICp0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSosIHRoZW4gaXQmIzM5O3MgYSBuby1nby4KCkFuZCBiaW5nbyEgTWVsbGFub3ggQ29ubmVjdFggKGBtbHg1YCkgKmlzKiBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIuIEl0IGFic29sdXRlbHkgcmVsaWVzIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBleGFjdGx5IHdoYXQmIzM5O3MgZXhjbHVkZWQgaGVyZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQmIzM5O3MgcmV2aXNpdCB0aGUgZXhjbHVzaW9uIGNyaXRlcmlhLiBJdCYjMzk7cyBub3QganVzdCBhYm91dCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEl0IGFsc28gaW5jbHVkZXMgY29kZSB0aGF0JiMzOTtzIHVucmVhY2hhYmxlIGluIHRoZXNlIHZpcnR1YWxpemVkIHNldHRpbmdzLiBUaGlzIG1ha2VzIHNlbnNlLiBJZiB0aGUgY29kZSBwYXRoIGNhbiYjMzk7dCBiZSBleGVjdXRlZCBpbiBvdXIgdGVzdGluZyBlbnZpcm9ubWVudCwgZnV6emluZyBpdCBpcyBwb2ludGxlc3MuIEZ1cnRoZXJtb3JlLCB0aGUgc2Vjb25kIGV4Y2x1c2lvbiBjcml0ZXJpb24gaW5jbHVkZXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycywganVzdCBsaWtlIGBtbHg1YC4KClRvIGJlIGV4dHJhIHRob3JvdWdoLCBJIG1pZ2h0IGdsYW5jZSBhdCBgS2NvbmZpZ2AgZm9yIGBtbHg1YCB0byBjb25maXJtIGl0cyBkZXBlbmRlbmNpZXMsIGJ1dCBpdCYjMzk7cyBhbHJlYWR5IHByZXR0eSBjbGVhci4gQmFzZWQgb24gdGhlIGluc3RydWN0aW9ucyBhbmQgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgYG1seDVgIGRyaXZlciwgdGhlIHBhdGNoIHNob3VsZCBiZSBmbGFnZ2VkIGFzICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsuIFdlIGRvbiYjMzk7dCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBwaHlzaWNhbCBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWVsbGFub3ggZHJpdmVyIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE1MWDVfQ09SRVxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoQ29ubmVjdFggc2VyaWVzKSBjb3JlIGRyaXZlclwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgIDk6XHRcdHNlbGVjdCBBVVhJTElBUllfQlVTXG4gIDEwOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTE6XHRcdGRlcGVuZHMgb24gTUxYRlcgfHwgIU1MWEZXXG4gIDEyOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDEzOlx0XHRkZXBlbmRzIG9uIFBDSV9IWVBFUlZfSU5URVJGQUNFIHx8ICFQQ0lfSFlQRVJWX0lOVEVSRkFDRVxuICAxNDpcdFx0ZGVwZW5kcyBvbiBIV01PTiB8fCAhSFdNT05cbiAgMTU6XHRcdGhlbHBcbiAgMTY6XHRcdCAgQ29yZSBkcml2ZXIgZm9yIGxvdyBsZXZlbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBDb25uZWN0WC00IGFuZFxuICAxNzpcdFx0ICBDb25uZWN0LUlCIGNhcmRzIGJ5IE1lbGxhbm94IFRlY2hub2xvZ2llcy5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTUxYNV9GUEdBXG4gIDIwOlx0XHRib29sIFwmIzM0O01lbGxhbm94IFRlY2hub2xvZ2llcyBJbm5vdmEgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0ZGVwZW5kcyBvbiBNTFg1X0NPUkVcbiAgMjI6XHRcdGhlbHBcbiAgMjM6XHRcdCAgQnVpbGQgc3VwcG9ydCBmb3IgdGhlIElubm92YSBmYW1pbHkgb2YgbmV0d29yayBjYXJkcyBieSBNZWxsYW5veFxuICAyNDpcdFx0ICBUZWNobm9sb2dpZXMuIElubm92YSBuZXR3b3JrIGNhcmRzIGFyZSBjb21wcmlzZWQgb2YgYSBDb25uZWN0WCBjaGlwXG4gIDI1Olx0XHQgIGFuZCBhbiBGUEdBIGNoaXAgb24gb25lIGJvYXJkLiBJZiB5b3Ugc2VsZWN0IHRoaXMgb3B0aW9uLCB0aGVcbiAgMjY6XHRcdCAgbWx4NV9jb3JlIGRyaXZlciB3aWxsIGluY2x1ZGUgdGhlIElubm92YSBGUEdBIGNvcmUgYW5kIGFsbG93IGJ1aWxkaW5nXG4gIDI3Olx0XHQgIHNhbmRib3gtc3BlY2lmaWMgY2xpZW50IGRyaXZlcnMuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIE1MWDVfQ09SRV9FTlxuICAzMDpcdFx0Ym9vbCBcJiMzNDtNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdGRlcGVuZHMgb24gTkVUREVWSUNFUyBcdTAwMjZcdTAwMjYgRVRIRVJORVQgXHUwMDI2XHUwMDI2IElORVQgXHUwMDI2XHUwMDI2IFBDSSBcdTAwMjZcdTAwMjYgTUxYNV9DT1JFXG4gIDMyOlx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDMzOlx0XHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXG4gIDM0Olx0XHRzZWxlY3QgRElNTElCXG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIEV0aGVybmV0IHN1cHBvcnQgaW4gTWVsbGFub3ggVGVjaG5vbG9naWVzIENvbm5lY3RYLTQgTklDLlxuICAzNzpcdFxuICAzODpcdGNvbmZpZyBNTFg1X0VOX0FSRlNcbiAgMzk6XHRcdGJvb2wgXCYjMzQ7TWVsbGFub3ggTUxYNSBldGhlcm5ldCBhY2NlbGVyYXRlZCByZWNlaXZlIGZsb3cgc3RlZXJpbmcgKEFSRlMpIHN1cHBvcnRcJiMzNDtcbiAgNDA6XHRcdGRlcGVuZHMgb24gTUxYNV9DT1JFX0VOIFx1MDAyNlx1MDAyNiBSRlNfQUNDRUxcbiAgNDE6XHRcdGRlZmF1bHQgeVxuICA0MjpcdFx0aGVscFxuICA0MzpcdFx0ICBNZWxsYW5veCBNTFg1IGV0aGVybmV0IGhhcmR3YXJlLWFjY2VsZXJhdGVkIHJlY2VpdmUgZmxvdyBzdGVlcmluZyBzdXBwb3J0LFxuICA0NDpcdFx0ICBFbmFibGVzIGV0aGVybmV0IG5ldGRldmljZSBhcmZzIHN1cHBvcnQgYW5kIG50dXBsZSBmaWx0ZXJpbmcuXG4gIDQ1Olx0XG4gIDQ2Olx0Y29uZmlnIE1MWDVfRU5fUlhORkNcbiAgNDc6XHRcdGJvb2wgXCYjMzQ7TWVsbGFub3ggTUxYNSBldGhlcm5ldCByeCBuZmMgZmxvdyBzdGVlcmluZyBzdXBwb3J0XCYjMzQ7XG4gIDQ4Olx0XHRkZXBlbmRzIG9uIE1MWDVfQ09SRV9FTlxuICA0OTpcdFx0ZGVmYXVsdCB5XG4gIDUwOlx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgzMwoJCQkJCQkJb3V0cHV0OiAxMjcKCQkJCQkJCXRob3VnaHRzOiAxNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBwaW5wb2ludGVkIHRoZSBjb2RlIEkgbmVlZCB0byBldmFsdWF0ZTogaXQmIzM5O3MgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuY2AuIFRoaXMgaXMgdGhlIG1seDUgaGFyZHdhcmUgc3RlZXJpbmcgKEhXUykgY29yZSBpbXBsZW1lbnRhdGlvbiBmb3IgTWVsbGFub3ggQ29ubmVjdFggTklDcy4gVGhpcyBpbW1lZGlhdGVseSB0cmlnZ2VycyBhIHJlZCBmbGFnOiB0aGlzIGNvZGUgKnJlcXVpcmVzKiBwaHlzaWNhbCBNZWxsYW5veCBoYXJkd2FyZS4gU3BlY2lmaWNhbGx5LCB0aGVzZSBhcmUgUENJZSBjYXJkcyB0aGF0IGFyZW4mIzM5O3QgZW11bGF0ZWQgcHJvcGVybHkgaW4gc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBldmVuIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4KCkdpdmVuIHRoaXMgZGVwZW5kZW5jeSBvbiBzcGVjaWFsaXplZCwgcGh5c2ljYWwgaGFyZHdhcmUsIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IFdvcnRoRnV6emluZyBpcyBnb2luZyB0byBiZSBmYWxzZSBoZXJlLiBTZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIHRydWUgaXMganVzdCBub3QgZ29pbmcgdG8gcHJvZHVjZSBtZWFuaW5nZnVsIHJlc3VsdHMuCgpUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8gY2FsbCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGFuZCBjb25maWd1cmUgaXQgd2l0aCBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBJJiMzOTtsbCBhbHNvIHNldCBgRm9jdXNTeW1ib2xzYCB0byBhbiBlbXB0eSBsaXN0LCBhbmQgYEVuYWJsZUNvbmZpZ3NgIHRvIGFuIGVtcHR5IGxpc3QgYXMgd2VsbCBiZWNhdXNlIHdlJiMzOTtyZSBub3QgcnVubmluZyB0aGlzLiBJbiB0aGUgYFJlYXNvbmluZ2AgZmllbGQsIEkmIzM5O2xsIGJlIGNyeXN0YWwgY2xlYXI6ICYjMzQ7VGhpcyBjb2RlIGlzIHBhcnQgb2YgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBNZWxsYW5veCBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy4mIzM0OyBUaGF0IHNob3VsZCBnaXZlIGEgY29uY2x1c2l2ZSByZWNvcmQgb2YgbXkgcmVhc29uaW5nLiBJdCYjMzk7cyBhIHdhc3RlIG9mIHJlc291cmNlcyB0byBkZWRpY2F0ZSBtb3JlIGFuYWx5c2lzIGhlcmUgd2l0aG91dCBwcm9wZXIgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBkaXJlY3QgcnVsZSB0YWJsZSBkZXN0cnVjdGlvbiBsb2dpYyBpbiB0aGUgbWx4NSBoYXJkd2FyZSBzdGVlcmluZyAoSFdTKSBzdWJzeXN0ZW0gKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNgKS4gTWVsbGFub3ggQ29ubmVjdFggKG1seDUpIGRldmljZXMgYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llIG5ldHdvcmsgYWRhcHRlcnMvU21hcnROSUNzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZXNlIHBhdGhzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGlyZWN0IHJ1bGUgdGFibGUgZGVzdHJ1Y3Rpb24gbG9naWMgaW4gdGhlIG1seDUgaGFyZHdhcmUgc3RlZXJpbmcgKEhXUykgc3Vic3lzdGVtIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jYCkuIE1lbGxhbm94IENvbm5lY3RYIChtbHg1KSBkZXZpY2VzIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGFkYXB0ZXJzL1NtYXJ0TklDcyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBwYXRocyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjIwOjM0LjI0NDE3MDg0OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NzQzNjYwNjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZGlyZWN0IHJ1bGUgdGFibGUgZGVzdHJ1Y3Rpb24gbG9naWMgaW4gdGhlIG1seDUgaGFyZHdhcmUgc3RlZXJpbmcgKEhXUykgc3Vic3lzdGVtIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jYCkuIE1lbGxhbm94IENvbm5lY3RYIChtbHg1KSBkZXZpY2VzIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGFkYXB0ZXJzL1NtYXJ0TklDcyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBwYXRocyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjIwOjM0LjI0NDE3NDk5OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk3NDU5NDExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzZmMTY3MmVmNzBhNjg0ZWNlMmEyNTlhYTBiYTY2ZGYxNDc4OWY4YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxOToyMDozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNcXG5pbmRleCA2MTEzMzgzYWU0N2JiLi4wN2EzZGQxMjQ4Yzc3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuY1xcbkBAIC0yODIsNiArMjgyLDkgQEAgaW50IG1seDVod3NfdGFibGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGJsKVxcbiBcXHRcXHRnb3RvIHVubG9ja19lcnI7XFxuIFxcdH1cXG4gXFxuK1xcdGlmICh0YmwtXFx1MDAzZWRlZmF1bHRfbWlzcy5taXNzX3RibClcXG4rXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2dGJsLVxcdTAwM2VkZWZhdWx0X21pc3MubmV4dCk7XFxuK1xcbiBcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZ0YmwtXFx1MDAzZXRibF9saXN0X25vZGUpO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmN0eC1cXHUwMDNlY3RybF9sb2NrKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjIwOjM0LjY0MjExNzQzOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzczNDU2OTkxNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRpcmVjdCBydWxlIHRhYmxlIGRlc3RydWN0aW9uIGxvZ2ljIGluIHRoZSBtbHg1IGhhcmR3YXJlIHN0ZWVyaW5nIChIV1MpIHN1YnN5c3RlbSAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuY2ApLiBNZWxsYW5veCBDb25uZWN0WCAobWx4NSkgZGV2aWNlcyBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBhZGFwdGVycy9TbWFydE5JQ3MgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgcGF0aHMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NmYxNjcyZWY3MGE2ODRlY2UyYTI1OWFhMGJhNjZkZjE0Nzg5ZjhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMTk6MjA6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNcbmluZGV4IDYxMTMzODNhZTQ3YmIuLjA3YTNkZDEyNDhjNzcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuY1xuQEAgLTI4Miw2ICsyODIsOSBAQCBpbnQgbWx4NWh3c190YWJsZV9kZXN0cm95KHN0cnVjdCBtbHg1aHdzX3RhYmxlICp0YmwpXG4gXHRcdGdvdG8gdW5sb2NrX2VycjtcbiBcdH1cbiBcbitcdGlmICh0YmwtXHUwMDNlZGVmYXVsdF9taXNzLm1pc3NfdGJsKVxuK1x0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnRibC1cdTAwM2VkZWZhdWx0X21pc3MubmV4dCk7XG4rXG4gXHRsaXN0X2RlbF9pbml0KFx1MDAyNnRibC1cdTAwM2V0YmxfbGlzdF9ub2RlKTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZjdHgtXHUwMDNlY3RybF9sb2NrKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjIwOjM0LjY0MjExOTEzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwMTkzODA2Mjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBXb3J0aGluZXNzIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoYXQgYG1seDVgIGlzIOKAkyBpdCdzIHRoZSBNZWxsYW5veCBDb25uZWN0WC00IGFuZCBDb25uZWN0WC01KyBOSUMgZHJpdmVyLCByaWdodD8gR290IGl0LiBOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIOKAkyBjYW4gSSBhY3R1YWxseSAqcmVhY2gqIHRoaXMgZHJpdmVyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSB3aXRob3V0IG5lZWRpbmcgYSBwaHlzaWNhbCBNZWxsYW5veCBjYXJkPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGNyaXRlcmlhIHdlJ3ZlIGVzdGFibGlzaGVkLlxuXG5MZXQgbWUgc2Vl4oCmIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBhZmZlY3RzOiBjb2RlIHBhdGhzIGltcG9zc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzOyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgUENJZSBoYXJkd2FyZTsgb3IgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcy5cIiBSaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYG1seDVgIG9yIHNwZWNpZmljYWxseSB0aGUgYG1seDVod3NgIHBhcnQgZmFsbHMgaW50byB0aGF0IFwidmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlXCIgY2F0ZWdvcnksIG9yIGlmIGl0IGhhcyBzb21lIGVtdWxhdGlvbiBvciBzb2Z0IGRldmljZSBwYXRoIHRoYXQgSSBjYW4gZXhwbG9pdC4gVGhlIGtleSBoZXJlIGlzIGlmIGl0IHJlcXVpcmVzIHRoZSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBoYXJkd2FyZSBjYXJkcywgd2hpY2ggSSBjYW4ndCBndWFyYW50ZWUgYWNjZXNzIHRvLlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBtYWtlIGEgY2FsbCBvbiB0aGlzLCBJIGhhZCBiZXR0ZXIgaW5zcGVjdCB0aGUgZmlsZXMgYW5kIHRoZSBtbHg1IGRyaXZlciBtb3JlIHRob3JvdWdobHkgdG8gYmUgY2VydGFpbi4gSSBkb24ndCB3YW50IHRvIHJ1bGUgb3V0IHNvbWV0aGluZyB0aGF0IGlzIHJlYWNoYWJsZSBqdXN0IGR1ZSB0byBhIGxhY2sgb2YgY29tcGxldGUgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOToyMDo0NC44MzU5Mjc0ODZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2NTQ5MTMyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1aHdzX3RhYmxlX2Rlc3Ryb3lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTM0Nz1od3NfaXNvbGF0ZWRfdGFibGVfY3JlYXRlKGNvbnN0IHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy0zODItZGVzdHJveV90Ymw6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjM4MzpcXHRtbHg1aHdzX3RhYmxlX2Rlc3Ryb3kodGJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtMzg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTQzMz1zdGF0aWMgaW50IGh3c19zdWJtYXRjaGVyX2luaXQoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyLCBpbnQgaWR4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUwNS1kZXN0cm95X3RibDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM6NTA2OlxcdG1seDVod3NfdGFibGVfZGVzdHJveShzdWJtLVxcdTAwM2V0YmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy01MDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9NTExPXN0YXRpYyB2b2lkIGh3c19zdWJtYXRjaGVyX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUzMC1cXHRcXHRtbHg1aHdzX2FjdGlvbl9kZXN0cm95KHN1Ym0tXFx1MDAzZWFjdGlvbl90YmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo1MzE6XFx0XFx0bWx4NWh3c190YWJsZV9kZXN0cm95KHN1Ym0tXFx1MDAzZXRibCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUzMi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2ZzX2h3cy5jPTI0MT1zdGF0aWMgaW50IG1seDVfY21kX2h3c19jcmVhdGVfZmxvd190YWJsZShzdHJ1Y3QgbWx4NV9mbG93X3Jvb3RfbmFtZXNwYWNlICpucyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvZnNfaHdzLmMtMjk1LWRlc3Ryb3lfdGFibGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYzoyOTY6XFx0bWx4NWh3c190YWJsZV9kZXN0cm95KHRibCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYy0yOTctXFx0ZnQtXFx1MDAzZWZzX2h3c190YWJsZS5od3NfdGFibGUgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYz0zMDE9c3RhdGljIGludCBtbHg1X2NtZF9od3NfZGVzdHJveV9mbG93X3RhYmxlKHN0cnVjdCBtbHg1X2Zsb3dfcm9vdF9uYW1lc3BhY2UgKm5zLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYy0zMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYzozMTc6XFx0ZXJyID0gbWx4NWh3c190YWJsZV9kZXN0cm95KGZ0LVxcdTAwM2Vmc19od3NfdGFibGUuaHdzX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2ZzX2h3cy5jLTMxOC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tYXRjaGVyLmM9MjE9c3RhdGljIHZvaWQgaHdzX21hdGNoZXJfZGVzdHJveV9lbmRfZnQoc3RydWN0IG1seDVod3NfbWF0Y2hlciAqbWF0Y2hlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21hdGNoZXIuYy0yMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tYXRjaGVyLmM6MjM6XFx0bWx4NWh3c190YWJsZV9kZXN0cm95X2RlZmF1bHRfZnQobWF0Y2hlci1cXHUwMDNldGJsLCBtYXRjaGVyLVxcdTAwM2VlbmRfZnRfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWF0Y2hlci5jLTI0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWF0Y2hlci5jPTgxPXN0YXRpYyBpbnQgaHdzX21hdGNoZXJfY3JlYXRlX2VuZF9mdF9pc29sYXRlZChzdHJ1Y3QgbWx4NWh3c19tYXRjaGVyICptYXRjaGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tYXRjaGVyLmMtMTAzLWRlc3Ryb3lfZGVmYXVsdF9mdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21hdGNoZXIuYzoxMDQ6XFx0bWx4NWh3c190YWJsZV9kZXN0cm95X2RlZmF1bHRfZnQodGJsLCBtYXRjaGVyLVxcdTAwM2VlbmRfZnRfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWF0Y2hlci5jLTEwNS1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tbHg1aHdzLmg9MjkzPW1seDVod3NfdGFibGVfY3JlYXRlKHN0cnVjdCBtbHg1aHdzX2NvbnRleHQgKmN0eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWx4NWh3cy5oLTI5Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21seDVod3MuaDoyOTc6ICogbWx4NWh3c190YWJsZV9kZXN0cm95IC0gRGVzdHJveSBkaXJlY3QgcnVsZSB0YWJsZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21seDVod3MuaC0yOTgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWx4NWh3cy5oLTMwMi0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21seDVod3MuaDozMDM6aW50IG1seDVod3NfdGFibGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21seDVod3MuaC0zMDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmM9MTIzPWludCBtbHg1aHdzX3RhYmxlX2NyZWF0ZV9kZWZhdWx0X2Z0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTE2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmM6MTYyOnZvaWQgbWx4NWh3c190YWJsZV9kZXN0cm95X2RlZmF1bHRfZnQoc3RydWN0IG1seDVod3NfdGFibGUgKnRibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMtMTYzLVxcdFxcdFxcdFxcdCAgICAgIHUzMiBmdF9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYz0xODA9c3RhdGljIGludCBod3NfdGFibGVfaW5pdChzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGJsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTIxNi10YmxfZGVzdHJveTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmM6MjE3OlxcdG1seDVod3NfdGFibGVfZGVzdHJveV9kZWZhdWx0X2Z0KHRibCwgdGJsLVxcdTAwM2VmdF9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTIxOC1cXHRtdXRleF91bmxvY2soXFx1MDAyNmN0eC1cXHUwMDNlY3RybF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYz0yMjI9c3RhdGljIHZvaWQgaHdzX3RhYmxlX3VuaW5pdChzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGJsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTIyNS1cXHRtbHg1aHdzX2FjdGlvbl9wdXRfZGVmYXVsdF9zdGModGJsLVxcdTAwM2VjdHgsIHRibC1cXHUwMDNldHlwZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jOjIyNjpcXHRtbHg1aHdzX3RhYmxlX2Rlc3Ryb3lfZGVmYXVsdF9mdCh0YmwsIHRibC1cXHUwMDNlZnRfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYy0yMjctXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ0YmwtXFx1MDAzZWN0eC1cXHUwMDNlY3RybF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYz0yMzA9c3RydWN0IG1seDVod3NfdGFibGUgKm1seDVod3NfdGFibGVfY3JlYXRlKHN0cnVjdCBtbHg1aHdzX2NvbnRleHQgKmN0eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYy0yNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jOjI2NzppbnQgbWx4NWh3c190YWJsZV9kZXN0cm95KHN0cnVjdCBtbHg1aHdzX3RhYmxlICp0YmwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTI2OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmg9NDk9aW50IG1seDVod3NfdGFibGVfY3JlYXRlX2RlZmF1bHRfZnQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmgtNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5oOjUzOnZvaWQgbWx4NWh3c190YWJsZV9kZXN0cm95X2RlZmF1bHRfZnQoc3RydWN0IG1seDVod3NfdGFibGUgKnRibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmgtNTQtXFx0XFx0XFx0XFx0ICAgICAgdTMyIGZ0X2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MjA6NDYuNjAxNDIzMDYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTA4NDMwMTcwNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBXb3J0aGluZXNzIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NWAgaXMgYWxsIGFib3V0LiBSaWdodCwgYG1seDVgIGlzIHRoZSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBNZWxsYW5veCdzIDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMg4oCTIHRoZSBDb25uZWN0WC00LCBDb25uZWN0WC01LCBhbmQgc28gb24uIFRoZXNlIGFyZSBwcm9wZXIgUENJZSBoYXJkd2FyZSBkZXZpY2VzLCBoaWdoLXBlcmZvcm1hbmNlIHN0dWZmLiBUaGUgY3JpdGljYWwgcG9pbnQgaXMgdGhhdCB0aGVzZSBjYXJkcyBhcmUgKnBoeXNpY2FsKiBkZXZpY2VzLiBTdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBkb24ndCBlbXVsYXRlIHRoaXMgaGFyZHdhcmUuIFNvLCB0aGV5IGFyZW4ndCBkaXJlY3RseSB1c2VmdWwgZm9yIHRlc3RpbmcuXG5cbk5vdywgbGV0J3Mgc2VlIHdoYXQgdGhlIGluc3RydWN0aW9ucyBzYXkgYWJvdXQgZGV0ZXJtaW5pbmcgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIi4gVGhlIGtleSBpczogaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAqdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUqLCB0aGVuIGl0J3MgYSBuby1nby5cblxuQW5kIGJpbmdvISBNZWxsYW5veCBDb25uZWN0WCAoYG1seDVgKSAqaXMqIGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIGRyaXZlci4gSXQgYWJzb2x1dGVseSByZWxpZXMgb24gcGh5c2ljYWwgaGFyZHdhcmUsIGV4YWN0bHkgd2hhdCdzIGV4Y2x1ZGVkIGhlcmUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQncyByZXZpc2l0IHRoZSBleGNsdXNpb24gY3JpdGVyaWEuIEl0J3Mgbm90IGp1c3QgYWJvdXQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJdCBhbHNvIGluY2x1ZGVzIGNvZGUgdGhhdCdzIHVucmVhY2hhYmxlIGluIHRoZXNlIHZpcnR1YWxpemVkIHNldHRpbmdzLiBUaGlzIG1ha2VzIHNlbnNlLiBJZiB0aGUgY29kZSBwYXRoIGNhbid0IGJlIGV4ZWN1dGVkIGluIG91ciB0ZXN0aW5nIGVudmlyb25tZW50LCBmdXp6aW5nIGl0IGlzIHBvaW50bGVzcy4gRnVydGhlcm1vcmUsIHRoZSBzZWNvbmQgZXhjbHVzaW9uIGNyaXRlcmlvbiBpbmNsdWRlcyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzLCBqdXN0IGxpa2UgYG1seDVgLlxuXG5UbyBiZSBleHRyYSB0aG9yb3VnaCwgSSBtaWdodCBnbGFuY2UgYXQgYEtjb25maWdgIGZvciBgbWx4NWAgdG8gY29uZmlybSBpdHMgZGVwZW5kZW5jaWVzLCBidXQgaXQncyBhbHJlYWR5IHByZXR0eSBjbGVhci4gQmFzZWQgb24gdGhlIGluc3RydWN0aW9ucyBhbmQgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgYG1seDVgIGRyaXZlciwgdGhlIHBhdGNoIHNob3VsZCBiZSBmbGFnZ2VkIGFzIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIuIFdlIGRvbid0IGhhdmUgdGhlIGFwcHJvcHJpYXRlIHBoeXNpY2FsIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzE5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjIwOjU3LjQ0NDQ0MTc4MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1lbGxhbm94IGRyaXZlciBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBNTFg1X0NPUkVcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIGNvcmUgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gICA5OlxcdFxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuICAxMDpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gTUxYRlcgfHwgIU1MWEZXXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAxMzpcXHRcXHRkZXBlbmRzIG9uIFBDSV9IWVBFUlZfSU5URVJGQUNFIHx8ICFQQ0lfSFlQRVJWX0lOVEVSRkFDRVxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBIV01PTiB8fCAhSFdNT05cXG4gIDE1OlxcdFxcdGhlbHBcXG4gIDE2OlxcdFxcdCAgQ29yZSBkcml2ZXIgZm9yIGxvdyBsZXZlbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBDb25uZWN0WC00IGFuZFxcbiAgMTc6XFx0XFx0ICBDb25uZWN0LUlCIGNhcmRzIGJ5IE1lbGxhbm94IFRlY2hub2xvZ2llcy5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIE1MWDVfRlBHQVxcbiAgMjA6XFx0XFx0Ym9vbCBcXFwiTWVsbGFub3ggVGVjaG5vbG9naWVzIElubm92YSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0ZGVwZW5kcyBvbiBNTFg1X0NPUkVcXG4gIDIyOlxcdFxcdGhlbHBcXG4gIDIzOlxcdFxcdCAgQnVpbGQgc3VwcG9ydCBmb3IgdGhlIElubm92YSBmYW1pbHkgb2YgbmV0d29yayBjYXJkcyBieSBNZWxsYW5veFxcbiAgMjQ6XFx0XFx0ICBUZWNobm9sb2dpZXMuIElubm92YSBuZXR3b3JrIGNhcmRzIGFyZSBjb21wcmlzZWQgb2YgYSBDb25uZWN0WCBjaGlwXFxuICAyNTpcXHRcXHQgIGFuZCBhbiBGUEdBIGNoaXAgb24gb25lIGJvYXJkLiBJZiB5b3Ugc2VsZWN0IHRoaXMgb3B0aW9uLCB0aGVcXG4gIDI2OlxcdFxcdCAgbWx4NV9jb3JlIGRyaXZlciB3aWxsIGluY2x1ZGUgdGhlIElubm92YSBGUEdBIGNvcmUgYW5kIGFsbG93IGJ1aWxkaW5nXFxuICAyNzpcXHRcXHQgIHNhbmRib3gtc3BlY2lmaWMgY2xpZW50IGRyaXZlcnMuXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBNTFg1X0NPUkVfRU5cXG4gIDMwOlxcdFxcdGJvb2wgXFxcIk1lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDMxOlxcdFxcdGRlcGVuZHMgb24gTkVUREVWSUNFUyBcXHUwMDI2XFx1MDAyNiBFVEhFUk5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUIFxcdTAwMjZcXHUwMDI2IFBDSSBcXHUwMDI2XFx1MDAyNiBNTFg1X0NPUkVcXG4gIDMyOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDMzOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG4gIDM0OlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgRXRoZXJuZXQgc3VwcG9ydCBpbiBNZWxsYW5veCBUZWNobm9sb2dpZXMgQ29ubmVjdFgtNCBOSUMuXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZyBNTFg1X0VOX0FSRlNcXG4gIDM5OlxcdFxcdGJvb2wgXFxcIk1lbGxhbm94IE1MWDUgZXRoZXJuZXQgYWNjZWxlcmF0ZWQgcmVjZWl2ZSBmbG93IHN0ZWVyaW5nIChBUkZTKSBzdXBwb3J0XFxcIlxcbiAgNDA6XFx0XFx0ZGVwZW5kcyBvbiBNTFg1X0NPUkVfRU4gXFx1MDAyNlxcdTAwMjYgUkZTX0FDQ0VMXFxuICA0MTpcXHRcXHRkZWZhdWx0IHlcXG4gIDQyOlxcdFxcdGhlbHBcXG4gIDQzOlxcdFxcdCAgTWVsbGFub3ggTUxYNSBldGhlcm5ldCBoYXJkd2FyZS1hY2NlbGVyYXRlZCByZWNlaXZlIGZsb3cgc3RlZXJpbmcgc3VwcG9ydCxcXG4gIDQ0OlxcdFxcdCAgRW5hYmxlcyBldGhlcm5ldCBuZXRkZXZpY2UgYXJmcyBzdXBwb3J0IGFuZCBudHVwbGUgZmlsdGVyaW5nLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRjb25maWcgTUxYNV9FTl9SWE5GQ1xcbiAgNDc6XFx0XFx0Ym9vbCBcXFwiTWVsbGFub3ggTUxYNSBldGhlcm5ldCByeCBuZmMgZmxvdyBzdGVlcmluZyBzdXBwb3J0XFxcIlxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBNTFg1X0NPUkVfRU5cXG4gIDQ5OlxcdFxcdGRlZmF1bHQgeVxcbiAgNTA6XFx0XFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOToyMDo1Ny40NDQ1MTQ4NjJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNDU0MzI3MjMyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBwaW5wb2ludGVkIHRoZSBjb2RlIEkgbmVlZCB0byBldmFsdWF0ZTogaXQncyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jYC4gVGhpcyBpcyB0aGUgbWx4NSBoYXJkd2FyZSBzdGVlcmluZyAoSFdTKSBjb3JlIGltcGxlbWVudGF0aW9uIGZvciBNZWxsYW5veCBDb25uZWN0WCBOSUNzLiBUaGlzIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgcmVkIGZsYWc6IHRoaXMgY29kZSAqcmVxdWlyZXMqIHBoeXNpY2FsIE1lbGxhbm94IGhhcmR3YXJlLiBTcGVjaWZpY2FsbHksIHRoZXNlIGFyZSBQQ0llIGNhcmRzIHRoYXQgYXJlbid0IGVtdWxhdGVkIHByb3Blcmx5IGluIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgZXZlbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUuXG5cbkdpdmVuIHRoaXMgZGVwZW5kZW5jeSBvbiBzcGVjaWFsaXplZCwgcGh5c2ljYWwgaGFyZHdhcmUsIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgV29ydGhGdXp6aW5nIGlzIGdvaW5nIHRvIGJlIGZhbHNlIGhlcmUuIFNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gdHJ1ZSBpcyBqdXN0IG5vdCBnb2luZyB0byBwcm9kdWNlIG1lYW5pbmdmdWwgcmVzdWx0cy5cblxuVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gY2FsbCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGFuZCBjb25maWd1cmUgaXQgd2l0aCBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBJJ2xsIGFsc28gc2V0IGBGb2N1c1N5bWJvbHNgIHRvIGFuIGVtcHR5IGxpc3QsIGFuZCBgRW5hYmxlQ29uZmlnc2AgdG8gYW4gZW1wdHkgbGlzdCBhcyB3ZWxsIGJlY2F1c2Ugd2UncmUgbm90IHJ1bm5pbmcgdGhpcy4gSW4gdGhlIGBSZWFzb25pbmdgIGZpZWxkLCBJJ2xsIGJlIGNyeXN0YWwgY2xlYXI6IFwiVGhpcyBjb2RlIGlzIHBhcnQgb2YgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBNZWxsYW5veCBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy5cIiBUaGF0IHNob3VsZCBnaXZlIGEgY29uY2x1c2l2ZSByZWNvcmQgb2YgbXkgcmVhc29uaW5nLiBJdCdzIGEgd2FzdGUgb2YgcmVzb3VyY2VzIHRvIGRlZGljYXRlIG1vcmUgYW5hbHlzaXMgaGVyZSB3aXRob3V0IHByb3BlciBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgzMywiT3V0cHV0VG9rZW5zIjoxMjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOToyMToxMS45ODc3ODkxNzNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRpcmVjdCBydWxlIHRhYmxlIGRlc3RydWN0aW9uIGxvZ2ljIGluIHRoZSBtbHg1IGhhcmR3YXJlIHN0ZWVyaW5nIChIV1MpIHN1YnN5c3RlbSAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuY2ApLiBNZWxsYW5veCBDb25uZWN0WCAobWx4NSkgZGV2aWNlcyBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBhZGFwdGVycy9TbWFydE5JQ3MgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgcGF0aHMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkaXJlY3QgcnVsZSB0YWJsZSBkZXN0cnVjdGlvbiBsb2dpYyBpbiB0aGUgbWx4NSBoYXJkd2FyZSBzdGVlcmluZyAoSFdTKSBzdWJzeXN0ZW0gKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNgKS4gTWVsbGFub3ggQ29ubmVjdFggKG1seDUpIGRldmljZXMgYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llIG5ldHdvcmsgYWRhcHRlcnMvU21hcnROSUNzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZXNlIHBhdGhzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MjE6MTEuOTg3ODE4NjAzWiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkrvxp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 18:51:42 +0000 UTC FinishedAt: 2026-08-31 19:21:14 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGlyZWN0IHJ1bGUgdGFibGUgZGVzdHJ1Y3Rpb24gbG9naWMgaW4gdGhlIG1seDUgaGFyZHdhcmUgc3RlZXJpbmcgKEhXUykgc3Vic3lzdGVtIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jYCkuIE1lbGxhbm94IENvbm5lY3RYIChtbHg1KSBkZXZpY2VzIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGFkYXB0ZXJzL1NtYXJ0TklDcyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBwYXRocyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3NmYxNjcyZWY3MGE2ODRlY2UyYTI1OWFhMGJhNjZkZjE0Nzg5ZjhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMTk6MjA6MzMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jXG5pbmRleCA2MTEzMzgzYWU0N2JiLi4wN2EzZGQxMjQ4Yzc3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNcbkBAIC0yODIsNiAmIzQzOzI4Miw5IEBAIGludCBtbHg1aHdzX3RhYmxlX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfdGFibGUgKnRibClcbiBcdFx0Z290byB1bmxvY2tfZXJyO1xuIFx0fVxuIFxuJiM0MztcdGlmICh0YmwtXHUwMDNlZGVmYXVsdF9taXNzLm1pc3NfdGJsKVxuJiM0MztcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0YmwtXHUwMDNlZGVmYXVsdF9taXNzLm5leHQpO1xuJiM0MztcbiBcdGxpc3RfZGVsX2luaXQoXHUwMDI2dGJsLVx1MDAzZXRibF9saXN0X25vZGUpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmN0eC1cdTAwM2VjdHJsX2xvY2spO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRpcmVjdCBydWxlIHRhYmxlIGRlc3RydWN0aW9uIGxvZ2ljIGluIHRoZSBtbHg1IGhhcmR3YXJlIHN0ZWVyaW5nIChIV1MpIHN1YnN5c3RlbSAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuY2ApLiBNZWxsYW5veCBDb25uZWN0WCAobWx4NSkgZGV2aWNlcyBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBhZGFwdGVycy9TbWFydE5JQ3MgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgcGF0aHMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzZmMTY3MmVmNzBhNjg0ZWNlMmEyNTlhYTBiYTY2ZGYxNDc4OWY4YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMxIDE5OjIwOjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jCmluZGV4IDYxMTMzODNhZTQ3YmIuLjA3YTNkZDEyNDhjNzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMKQEAgLTI4Miw2ICYjNDM7MjgyLDkgQEAgaW50IG1seDVod3NfdGFibGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGJsKQogCQlnb3RvIHVubG9ja19lcnI7CiAJfQogCiYjNDM7CWlmICh0YmwtJmd0O2RlZmF1bHRfbWlzcy5taXNzX3RibCkKJiM0MzsJCWxpc3RfZGVsX2luaXQoJmFtcDt0YmwtJmd0O2RlZmF1bHRfbWlzcy5uZXh0KTsKJiM0MzsKIAlsaXN0X2RlbF9pbml0KCZhbXA7dGJsLSZndDt0YmxfbGlzdF9ub2RlKTsKIAltdXRleF91bmxvY2soJmFtcDtjdHgtJmd0O2N0cmxfbG9jayk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzMQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDMxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIFdvcnRoaW5lc3MgZm9yIEZ1enppbmcqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoYXQgYG1seDVgIGlzIOKAkyBpdCYjMzk7cyB0aGUgTWVsbGFub3ggQ29ubmVjdFgtNCBhbmQgQ29ubmVjdFgtNSYjNDM7IE5JQyBkcml2ZXIsIHJpZ2h0PyBHb3QgaXQuIE5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb24g4oCTIGNhbiBJIGFjdHVhbGx5ICpyZWFjaCogdGhpcyBkcml2ZXIgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIHdpdGhvdXQgbmVlZGluZyBhIHBoeXNpY2FsIE1lbGxhbm94IGNhcmQ/IEkgbmVlZCB0byBjaGVjayB0aGUgY3JpdGVyaWEgd2UmIzM5O3ZlIGVzdGFibGlzaGVkLgoKTGV0IG1lIHNlZeKApiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgYWZmZWN0czogY29kZSBwYXRocyBpbXBvc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50czsgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmU7IG9yIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MuJiMzNDsgUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBtbHg1YCBvciBzcGVjaWZpY2FsbHkgdGhlIGBtbHg1aHdzYCBwYXJ0IGZhbGxzIGludG8gdGhhdCAmIzM0O3ZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSYjMzQ7IGNhdGVnb3J5LCBvciBpZiBpdCBoYXMgc29tZSBlbXVsYXRpb24gb3Igc29mdCBkZXZpY2UgcGF0aCB0aGF0IEkgY2FuIGV4cGxvaXQuIFRoZSBrZXkgaGVyZSBpcyBpZiBpdCByZXF1aXJlcyB0aGUgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUgY2FyZHMsIHdoaWNoIEkgY2FuJiMzOTt0IGd1YXJhbnRlZSBhY2Nlc3MgdG8uCgpBbHJpZ2h0LCBiZWZvcmUgSSBtYWtlIGEgY2FsbCBvbiB0aGlzLCBJIGhhZCBiZXR0ZXIgaW5zcGVjdCB0aGUgZmlsZXMgYW5kIHRoZSBtbHg1IGRyaXZlciBtb3JlIHRob3JvdWdobHkgdG8gYmUgY2VydGFpbi4gSSBkb24mIzM5O3Qgd2FudCB0byBydWxlIG91dCBzb21ldGhpbmcgdGhhdCBpcyByZWFjaGFibGUganVzdCBkdWUgdG8gYSBsYWNrIG9mIGNvbXBsZXRlIGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVod3NfdGFibGVfZGVzdHJveSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9MzQ3PWh3c19pc29sYXRlZF90YWJsZV9jcmVhdGUoY29uc3Qgc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy0zODItZGVzdHJveV90Ymw6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM6MzgzOlx0bWx4NWh3c190YWJsZV9kZXN0cm95KHRibCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtMzg0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz00MzM9c3RhdGljIGludCBod3Nfc3VibWF0Y2hlcl9pbml0KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlciwgaW50IGlkeCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNTA1LWRlc3Ryb3lfdGJsOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjUwNjpcdG1seDVod3NfdGFibGVfZGVzdHJveShzdWJtLVx1MDAzZXRibCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNTA3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz01MTE9c3RhdGljIHZvaWQgaHdzX3N1Ym1hdGNoZXJfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqY21hdGNoZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUzMC1cdFx0bWx4NWh3c19hY3Rpb25fZGVzdHJveShzdWJtLVx1MDAzZWFjdGlvbl90YmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjUzMTpcdFx0bWx4NWh3c190YWJsZV9kZXN0cm95KHN1Ym0tXHUwMDNldGJsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy01MzItXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYz0yNDE9c3RhdGljIGludCBtbHg1X2NtZF9od3NfY3JlYXRlX2Zsb3dfdGFibGUoc3RydWN0IG1seDVfZmxvd19yb290X25hbWVzcGFjZSAqbnMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYy0yOTUtZGVzdHJveV90YWJsZTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvZnNfaHdzLmM6Mjk2Olx0bWx4NWh3c190YWJsZV9kZXN0cm95KHRibCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2ZzX2h3cy5jLTI5Ny1cdGZ0LVx1MDAzZWZzX2h3c190YWJsZS5od3NfdGFibGUgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvZnNfaHdzLmM9MzAxPXN0YXRpYyBpbnQgbWx4NV9jbWRfaHdzX2Rlc3Ryb3lfZmxvd190YWJsZShzdHJ1Y3QgbWx4NV9mbG93X3Jvb3RfbmFtZXNwYWNlICpucyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2ZzX2h3cy5jLTMxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvZnNfaHdzLmM6MzE3Olx0ZXJyID0gbWx4NWh3c190YWJsZV9kZXN0cm95KGZ0LVx1MDAzZWZzX2h3c190YWJsZS5od3NfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYy0zMTgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWF0Y2hlci5jPTIxPXN0YXRpYyB2b2lkIGh3c19tYXRjaGVyX2Rlc3Ryb3lfZW5kX2Z0KHN0cnVjdCBtbHg1aHdzX21hdGNoZXIgKm1hdGNoZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21hdGNoZXIuYy0yMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21hdGNoZXIuYzoyMzpcdG1seDVod3NfdGFibGVfZGVzdHJveV9kZWZhdWx0X2Z0KG1hdGNoZXItXHUwMDNldGJsLCBtYXRjaGVyLVx1MDAzZWVuZF9mdF9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21hdGNoZXIuYy0yNC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tYXRjaGVyLmM9ODE9c3RhdGljIGludCBod3NfbWF0Y2hlcl9jcmVhdGVfZW5kX2Z0X2lzb2xhdGVkKHN0cnVjdCBtbHg1aHdzX21hdGNoZXIgKm1hdGNoZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tYXRjaGVyLmMtMTAzLWRlc3Ryb3lfZGVmYXVsdF9mdDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWF0Y2hlci5jOjEwNDpcdG1seDVod3NfdGFibGVfZGVzdHJveV9kZWZhdWx0X2Z0KHRibCwgbWF0Y2hlci1cdTAwM2VlbmRfZnRfaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tYXRjaGVyLmMtMTA1LVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21seDVod3MuaD0yOTM9bWx4NWh3c190YWJsZV9jcmVhdGUoc3RydWN0IG1seDVod3NfY29udGV4dCAqY3R4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWx4NWh3cy5oLTI5Ni0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWx4NWh3cy5oOjI5NzogKiBtbHg1aHdzX3RhYmxlX2Rlc3Ryb3kgLSBEZXN0cm95IGRpcmVjdCBydWxlIHRhYmxlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tbHg1aHdzLmgtMjk4LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tbHg1aHdzLmgtMzAyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tbHg1aHdzLmg6MzAzOmludCBtbHg1aHdzX3RhYmxlX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfdGFibGUgKnRibCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21seDVod3MuaC0zMDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jPTEyMz1pbnQgbWx4NWh3c190YWJsZV9jcmVhdGVfZGVmYXVsdF9mdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMtMTYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jOjE2Mjp2b2lkIG1seDVod3NfdGFibGVfZGVzdHJveV9kZWZhdWx0X2Z0KHN0cnVjdCBtbHg1aHdzX3RhYmxlICp0YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMtMTYzLVx0XHRcdFx0ICAgICAgdTMyIGZ0X2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYz0xODA9c3RhdGljIGludCBod3NfdGFibGVfaW5pdChzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGJsKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYy0yMTYtdGJsX2Rlc3Ryb3k6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmM6MjE3Olx0bWx4NWh3c190YWJsZV9kZXN0cm95X2RlZmF1bHRfZnQodGJsLCB0YmwtXHUwMDNlZnRfaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTIxOC1cdG11dGV4X3VubG9jayhcdTAwMjZjdHgtXHUwMDNlY3RybF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmM9MjIyPXN0YXRpYyB2b2lkIGh3c190YWJsZV91bmluaXQoc3RydWN0IG1seDVod3NfdGFibGUgKnRibClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMtMjI1LVx0bWx4NWh3c19hY3Rpb25fcHV0X2RlZmF1bHRfc3RjKHRibC1cdTAwM2VjdHgsIHRibC1cdTAwM2V0eXBlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYzoyMjY6XHRtbHg1aHdzX3RhYmxlX2Rlc3Ryb3lfZGVmYXVsdF9mdCh0YmwsIHRibC1cdTAwM2VmdF9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMtMjI3LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRibC1cdTAwM2VjdHgtXHUwMDNlY3RybF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmM9MjMwPXN0cnVjdCBtbHg1aHdzX3RhYmxlICptbHg1aHdzX3RhYmxlX2NyZWF0ZShzdHJ1Y3QgbWx4NWh3c19jb250ZXh0ICpjdHgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTI2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYzoyNjc6aW50IG1seDVod3NfdGFibGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGJsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTI2OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5oPTQ5PWludCBtbHg1aHdzX3RhYmxlX2NyZWF0ZV9kZWZhdWx0X2Z0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuaC01Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuaDo1Mzp2b2lkIG1seDVod3NfdGFibGVfZGVzdHJveV9kZWZhdWx0X2Z0KHN0cnVjdCBtbHg1aHdzX3RhYmxlICp0YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmgtNTQtXHRcdFx0XHQgICAgICB1MzIgZnRfaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMTkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgV29ydGhpbmVzcyBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NWAgaXMgYWxsIGFib3V0LiBSaWdodCwgYG1seDVgIGlzIHRoZSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBNZWxsYW5veCYjMzk7cyA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIOKAkyB0aGUgQ29ubmVjdFgtNCwgQ29ubmVjdFgtNSwgYW5kIHNvIG9uLiBUaGVzZSBhcmUgcHJvcGVyIFBDSWUgaGFyZHdhcmUgZGV2aWNlcywgaGlnaC1wZXJmb3JtYW5jZSBzdHVmZi4gVGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgdGhlc2UgY2FyZHMgYXJlICpwaHlzaWNhbCogZGV2aWNlcy4gU3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgZG9uJiMzOTt0IGVtdWxhdGUgdGhpcyBoYXJkd2FyZS4gU28sIHRoZXkgYXJlbiYjMzk7dCBkaXJlY3RseSB1c2VmdWwgZm9yIHRlc3RpbmcuCgpOb3csIGxldCYjMzk7cyBzZWUgd2hhdCB0aGUgaW5zdHJ1Y3Rpb25zIHNheSBhYm91dCBkZXRlcm1pbmluZyAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7LiBUaGUga2V5IGlzOiBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzICp0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSosIHRoZW4gaXQmIzM5O3MgYSBuby1nby4KCkFuZCBiaW5nbyEgTWVsbGFub3ggQ29ubmVjdFggKGBtbHg1YCkgKmlzKiBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIuIEl0IGFic29sdXRlbHkgcmVsaWVzIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBleGFjdGx5IHdoYXQmIzM5O3MgZXhjbHVkZWQgaGVyZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQmIzM5O3MgcmV2aXNpdCB0aGUgZXhjbHVzaW9uIGNyaXRlcmlhLiBJdCYjMzk7cyBub3QganVzdCBhYm91dCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEl0IGFsc28gaW5jbHVkZXMgY29kZSB0aGF0JiMzOTtzIHVucmVhY2hhYmxlIGluIHRoZXNlIHZpcnR1YWxpemVkIHNldHRpbmdzLiBUaGlzIG1ha2VzIHNlbnNlLiBJZiB0aGUgY29kZSBwYXRoIGNhbiYjMzk7dCBiZSBleGVjdXRlZCBpbiBvdXIgdGVzdGluZyBlbnZpcm9ubWVudCwgZnV6emluZyBpdCBpcyBwb2ludGxlc3MuIEZ1cnRoZXJtb3JlLCB0aGUgc2Vjb25kIGV4Y2x1c2lvbiBjcml0ZXJpb24gaW5jbHVkZXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycywganVzdCBsaWtlIGBtbHg1YC4KClRvIGJlIGV4dHJhIHRob3JvdWdoLCBJIG1pZ2h0IGdsYW5jZSBhdCBgS2NvbmZpZ2AgZm9yIGBtbHg1YCB0byBjb25maXJtIGl0cyBkZXBlbmRlbmNpZXMsIGJ1dCBpdCYjMzk7cyBhbHJlYWR5IHByZXR0eSBjbGVhci4gQmFzZWQgb24gdGhlIGluc3RydWN0aW9ucyBhbmQgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgYG1seDVgIGRyaXZlciwgdGhlIHBhdGNoIHNob3VsZCBiZSBmbGFnZ2VkIGFzICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsuIFdlIGRvbiYjMzk7dCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBwaHlzaWNhbCBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWVsbGFub3ggZHJpdmVyIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE1MWDVfQ09SRVxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoQ29ubmVjdFggc2VyaWVzKSBjb3JlIGRyaXZlclwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgIDk6XHRcdHNlbGVjdCBBVVhJTElBUllfQlVTXG4gIDEwOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTE6XHRcdGRlcGVuZHMgb24gTUxYRlcgfHwgIU1MWEZXXG4gIDEyOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDEzOlx0XHRkZXBlbmRzIG9uIFBDSV9IWVBFUlZfSU5URVJGQUNFIHx8ICFQQ0lfSFlQRVJWX0lOVEVSRkFDRVxuICAxNDpcdFx0ZGVwZW5kcyBvbiBIV01PTiB8fCAhSFdNT05cbiAgMTU6XHRcdGhlbHBcbiAgMTY6XHRcdCAgQ29yZSBkcml2ZXIgZm9yIGxvdyBsZXZlbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBDb25uZWN0WC00IGFuZFxuICAxNzpcdFx0ICBDb25uZWN0LUlCIGNhcmRzIGJ5IE1lbGxhbm94IFRlY2hub2xvZ2llcy5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTUxYNV9GUEdBXG4gIDIwOlx0XHRib29sIFwmIzM0O01lbGxhbm94IFRlY2hub2xvZ2llcyBJbm5vdmEgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0ZGVwZW5kcyBvbiBNTFg1X0NPUkVcbiAgMjI6XHRcdGhlbHBcbiAgMjM6XHRcdCAgQnVpbGQgc3VwcG9ydCBmb3IgdGhlIElubm92YSBmYW1pbHkgb2YgbmV0d29yayBjYXJkcyBieSBNZWxsYW5veFxuICAyNDpcdFx0ICBUZWNobm9sb2dpZXMuIElubm92YSBuZXR3b3JrIGNhcmRzIGFyZSBjb21wcmlzZWQgb2YgYSBDb25uZWN0WCBjaGlwXG4gIDI1Olx0XHQgIGFuZCBhbiBGUEdBIGNoaXAgb24gb25lIGJvYXJkLiBJZiB5b3Ugc2VsZWN0IHRoaXMgb3B0aW9uLCB0aGVcbiAgMjY6XHRcdCAgbWx4NV9jb3JlIGRyaXZlciB3aWxsIGluY2x1ZGUgdGhlIElubm92YSBGUEdBIGNvcmUgYW5kIGFsbG93IGJ1aWxkaW5nXG4gIDI3Olx0XHQgIHNhbmRib3gtc3BlY2lmaWMgY2xpZW50IGRyaXZlcnMuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIE1MWDVfQ09SRV9FTlxuICAzMDpcdFx0Ym9vbCBcJiMzNDtNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdGRlcGVuZHMgb24gTkVUREVWSUNFUyBcdTAwMjZcdTAwMjYgRVRIRVJORVQgXHUwMDI2XHUwMDI2IElORVQgXHUwMDI2XHUwMDI2IFBDSSBcdTAwMjZcdTAwMjYgTUxYNV9DT1JFXG4gIDMyOlx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDMzOlx0XHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXG4gIDM0Olx0XHRzZWxlY3QgRElNTElCXG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIEV0aGVybmV0IHN1cHBvcnQgaW4gTWVsbGFub3ggVGVjaG5vbG9naWVzIENvbm5lY3RYLTQgTklDLlxuICAzNzpcdFxuICAzODpcdGNvbmZpZyBNTFg1X0VOX0FSRlNcbiAgMzk6XHRcdGJvb2wgXCYjMzQ7TWVsbGFub3ggTUxYNSBldGhlcm5ldCBhY2NlbGVyYXRlZCByZWNlaXZlIGZsb3cgc3RlZXJpbmcgKEFSRlMpIHN1cHBvcnRcJiMzNDtcbiAgNDA6XHRcdGRlcGVuZHMgb24gTUxYNV9DT1JFX0VOIFx1MDAyNlx1MDAyNiBSRlNfQUNDRUxcbiAgNDE6XHRcdGRlZmF1bHQgeVxuICA0MjpcdFx0aGVscFxuICA0MzpcdFx0ICBNZWxsYW5veCBNTFg1IGV0aGVybmV0IGhhcmR3YXJlLWFjY2VsZXJhdGVkIHJlY2VpdmUgZmxvdyBzdGVlcmluZyBzdXBwb3J0LFxuICA0NDpcdFx0ICBFbmFibGVzIGV0aGVybmV0IG5ldGRldmljZSBhcmZzIHN1cHBvcnQgYW5kIG50dXBsZSBmaWx0ZXJpbmcuXG4gIDQ1Olx0XG4gIDQ2Olx0Y29uZmlnIE1MWDVfRU5fUlhORkNcbiAgNDc6XHRcdGJvb2wgXCYjMzQ7TWVsbGFub3ggTUxYNSBldGhlcm5ldCByeCBuZmMgZmxvdyBzdGVlcmluZyBzdXBwb3J0XCYjMzQ7XG4gIDQ4Olx0XHRkZXBlbmRzIG9uIE1MWDVfQ09SRV9FTlxuICA0OTpcdFx0ZGVmYXVsdCB5XG4gIDUwOlx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgzMwoJCQkJCQkJb3V0cHV0OiAxMjcKCQkJCQkJCXRob3VnaHRzOiAxNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBwaW5wb2ludGVkIHRoZSBjb2RlIEkgbmVlZCB0byBldmFsdWF0ZTogaXQmIzM5O3MgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuY2AuIFRoaXMgaXMgdGhlIG1seDUgaGFyZHdhcmUgc3RlZXJpbmcgKEhXUykgY29yZSBpbXBsZW1lbnRhdGlvbiBmb3IgTWVsbGFub3ggQ29ubmVjdFggTklDcy4gVGhpcyBpbW1lZGlhdGVseSB0cmlnZ2VycyBhIHJlZCBmbGFnOiB0aGlzIGNvZGUgKnJlcXVpcmVzKiBwaHlzaWNhbCBNZWxsYW5veCBoYXJkd2FyZS4gU3BlY2lmaWNhbGx5LCB0aGVzZSBhcmUgUENJZSBjYXJkcyB0aGF0IGFyZW4mIzM5O3QgZW11bGF0ZWQgcHJvcGVybHkgaW4gc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBldmVuIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4KCkdpdmVuIHRoaXMgZGVwZW5kZW5jeSBvbiBzcGVjaWFsaXplZCwgcGh5c2ljYWwgaGFyZHdhcmUsIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IFdvcnRoRnV6emluZyBpcyBnb2luZyB0byBiZSBmYWxzZSBoZXJlLiBTZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIHRydWUgaXMganVzdCBub3QgZ29pbmcgdG8gcHJvZHVjZSBtZWFuaW5nZnVsIHJlc3VsdHMuCgpUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8gY2FsbCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGFuZCBjb25maWd1cmUgaXQgd2l0aCBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBJJiMzOTtsbCBhbHNvIHNldCBgRm9jdXNTeW1ib2xzYCB0byBhbiBlbXB0eSBsaXN0LCBhbmQgYEVuYWJsZUNvbmZpZ3NgIHRvIGFuIGVtcHR5IGxpc3QgYXMgd2VsbCBiZWNhdXNlIHdlJiMzOTtyZSBub3QgcnVubmluZyB0aGlzLiBJbiB0aGUgYFJlYXNvbmluZ2AgZmllbGQsIEkmIzM5O2xsIGJlIGNyeXN0YWwgY2xlYXI6ICYjMzQ7VGhpcyBjb2RlIGlzIHBhcnQgb2YgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBNZWxsYW5veCBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy4mIzM0OyBUaGF0IHNob3VsZCBnaXZlIGEgY29uY2x1c2l2ZSByZWNvcmQgb2YgbXkgcmVhc29uaW5nLiBJdCYjMzk7cyBhIHdhc3RlIG9mIHJlc291cmNlcyB0byBkZWRpY2F0ZSBtb3JlIGFuYWx5c2lzIGhlcmUgd2l0aG91dCBwcm9wZXIgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBkaXJlY3QgcnVsZSB0YWJsZSBkZXN0cnVjdGlvbiBsb2dpYyBpbiB0aGUgbWx4NSBoYXJkd2FyZSBzdGVlcmluZyAoSFdTKSBzdWJzeXN0ZW0gKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNgKS4gTWVsbGFub3ggQ29ubmVjdFggKG1seDUpIGRldmljZXMgYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llIG5ldHdvcmsgYWRhcHRlcnMvU21hcnROSUNzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZXNlIHBhdGhzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGlyZWN0IHJ1bGUgdGFibGUgZGVzdHJ1Y3Rpb24gbG9naWMgaW4gdGhlIG1seDUgaGFyZHdhcmUgc3RlZXJpbmcgKEhXUykgc3Vic3lzdGVtIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jYCkuIE1lbGxhbm94IENvbm5lY3RYIChtbHg1KSBkZXZpY2VzIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGFkYXB0ZXJzL1NtYXJ0TklDcyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBwYXRocyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjIwOjM0LjI0NDE3MDg0OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NzQzNjYwNjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZGlyZWN0IHJ1bGUgdGFibGUgZGVzdHJ1Y3Rpb24gbG9naWMgaW4gdGhlIG1seDUgaGFyZHdhcmUgc3RlZXJpbmcgKEhXUykgc3Vic3lzdGVtIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jYCkuIE1lbGxhbm94IENvbm5lY3RYIChtbHg1KSBkZXZpY2VzIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGFkYXB0ZXJzL1NtYXJ0TklDcyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBwYXRocyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjIwOjM0LjI0NDE3NDk5OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk3NDU5NDExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzZmMTY3MmVmNzBhNjg0ZWNlMmEyNTlhYTBiYTY2ZGYxNDc4OWY4YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxOToyMDozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNcXG5pbmRleCA2MTEzMzgzYWU0N2JiLi4wN2EzZGQxMjQ4Yzc3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuY1xcbkBAIC0yODIsNiArMjgyLDkgQEAgaW50IG1seDVod3NfdGFibGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGJsKVxcbiBcXHRcXHRnb3RvIHVubG9ja19lcnI7XFxuIFxcdH1cXG4gXFxuK1xcdGlmICh0YmwtXFx1MDAzZWRlZmF1bHRfbWlzcy5taXNzX3RibClcXG4rXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2dGJsLVxcdTAwM2VkZWZhdWx0X21pc3MubmV4dCk7XFxuK1xcbiBcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZ0YmwtXFx1MDAzZXRibF9saXN0X25vZGUpO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmN0eC1cXHUwMDNlY3RybF9sb2NrKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjIwOjM0LjY0MjExNzQzOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzczNDU2OTkxNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRpcmVjdCBydWxlIHRhYmxlIGRlc3RydWN0aW9uIGxvZ2ljIGluIHRoZSBtbHg1IGhhcmR3YXJlIHN0ZWVyaW5nIChIV1MpIHN1YnN5c3RlbSAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuY2ApLiBNZWxsYW5veCBDb25uZWN0WCAobWx4NSkgZGV2aWNlcyBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBhZGFwdGVycy9TbWFydE5JQ3MgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgcGF0aHMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NmYxNjcyZWY3MGE2ODRlY2UyYTI1OWFhMGJhNjZkZjE0Nzg5ZjhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMTk6MjA6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNcbmluZGV4IDYxMTMzODNhZTQ3YmIuLjA3YTNkZDEyNDhjNzcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuY1xuQEAgLTI4Miw2ICsyODIsOSBAQCBpbnQgbWx4NWh3c190YWJsZV9kZXN0cm95KHN0cnVjdCBtbHg1aHdzX3RhYmxlICp0YmwpXG4gXHRcdGdvdG8gdW5sb2NrX2VycjtcbiBcdH1cbiBcbitcdGlmICh0YmwtXHUwMDNlZGVmYXVsdF9taXNzLm1pc3NfdGJsKVxuK1x0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnRibC1cdTAwM2VkZWZhdWx0X21pc3MubmV4dCk7XG4rXG4gXHRsaXN0X2RlbF9pbml0KFx1MDAyNnRibC1cdTAwM2V0YmxfbGlzdF9ub2RlKTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZjdHgtXHUwMDNlY3RybF9sb2NrKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjIwOjM0LjY0MjExOTEzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwMTkzODA2Mjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBXb3J0aGluZXNzIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoYXQgYG1seDVgIGlzIOKAkyBpdCdzIHRoZSBNZWxsYW5veCBDb25uZWN0WC00IGFuZCBDb25uZWN0WC01KyBOSUMgZHJpdmVyLCByaWdodD8gR290IGl0LiBOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIOKAkyBjYW4gSSBhY3R1YWxseSAqcmVhY2gqIHRoaXMgZHJpdmVyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSB3aXRob3V0IG5lZWRpbmcgYSBwaHlzaWNhbCBNZWxsYW5veCBjYXJkPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGNyaXRlcmlhIHdlJ3ZlIGVzdGFibGlzaGVkLlxuXG5MZXQgbWUgc2Vl4oCmIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBhZmZlY3RzOiBjb2RlIHBhdGhzIGltcG9zc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzOyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgUENJZSBoYXJkd2FyZTsgb3IgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcy5cIiBSaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYG1seDVgIG9yIHNwZWNpZmljYWxseSB0aGUgYG1seDVod3NgIHBhcnQgZmFsbHMgaW50byB0aGF0IFwidmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlXCIgY2F0ZWdvcnksIG9yIGlmIGl0IGhhcyBzb21lIGVtdWxhdGlvbiBvciBzb2Z0IGRldmljZSBwYXRoIHRoYXQgSSBjYW4gZXhwbG9pdC4gVGhlIGtleSBoZXJlIGlzIGlmIGl0IHJlcXVpcmVzIHRoZSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBoYXJkd2FyZSBjYXJkcywgd2hpY2ggSSBjYW4ndCBndWFyYW50ZWUgYWNjZXNzIHRvLlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBtYWtlIGEgY2FsbCBvbiB0aGlzLCBJIGhhZCBiZXR0ZXIgaW5zcGVjdCB0aGUgZmlsZXMgYW5kIHRoZSBtbHg1IGRyaXZlciBtb3JlIHRob3JvdWdobHkgdG8gYmUgY2VydGFpbi4gSSBkb24ndCB3YW50IHRvIHJ1bGUgb3V0IHNvbWV0aGluZyB0aGF0IGlzIHJlYWNoYWJsZSBqdXN0IGR1ZSB0byBhIGxhY2sgb2YgY29tcGxldGUgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOToyMDo0NC44MzU5Mjc0ODZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2NTQ5MTMyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1aHdzX3RhYmxlX2Rlc3Ryb3lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTM0Nz1od3NfaXNvbGF0ZWRfdGFibGVfY3JlYXRlKGNvbnN0IHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy0zODItZGVzdHJveV90Ymw6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjM4MzpcXHRtbHg1aHdzX3RhYmxlX2Rlc3Ryb3kodGJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtMzg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTQzMz1zdGF0aWMgaW50IGh3c19zdWJtYXRjaGVyX2luaXQoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyLCBpbnQgaWR4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUwNS1kZXN0cm95X3RibDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM6NTA2OlxcdG1seDVod3NfdGFibGVfZGVzdHJveShzdWJtLVxcdTAwM2V0YmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy01MDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9NTExPXN0YXRpYyB2b2lkIGh3c19zdWJtYXRjaGVyX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUzMC1cXHRcXHRtbHg1aHdzX2FjdGlvbl9kZXN0cm95KHN1Ym0tXFx1MDAzZWFjdGlvbl90YmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo1MzE6XFx0XFx0bWx4NWh3c190YWJsZV9kZXN0cm95KHN1Ym0tXFx1MDAzZXRibCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUzMi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2ZzX2h3cy5jPTI0MT1zdGF0aWMgaW50IG1seDVfY21kX2h3c19jcmVhdGVfZmxvd190YWJsZShzdHJ1Y3QgbWx4NV9mbG93X3Jvb3RfbmFtZXNwYWNlICpucyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvZnNfaHdzLmMtMjk1LWRlc3Ryb3lfdGFibGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYzoyOTY6XFx0bWx4NWh3c190YWJsZV9kZXN0cm95KHRibCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYy0yOTctXFx0ZnQtXFx1MDAzZWZzX2h3c190YWJsZS5od3NfdGFibGUgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYz0zMDE9c3RhdGljIGludCBtbHg1X2NtZF9od3NfZGVzdHJveV9mbG93X3RhYmxlKHN0cnVjdCBtbHg1X2Zsb3dfcm9vdF9uYW1lc3BhY2UgKm5zLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYy0zMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9mc19od3MuYzozMTc6XFx0ZXJyID0gbWx4NWh3c190YWJsZV9kZXN0cm95KGZ0LVxcdTAwM2Vmc19od3NfdGFibGUuaHdzX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2ZzX2h3cy5jLTMxOC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tYXRjaGVyLmM9MjE9c3RhdGljIHZvaWQgaHdzX21hdGNoZXJfZGVzdHJveV9lbmRfZnQoc3RydWN0IG1seDVod3NfbWF0Y2hlciAqbWF0Y2hlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21hdGNoZXIuYy0yMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tYXRjaGVyLmM6MjM6XFx0bWx4NWh3c190YWJsZV9kZXN0cm95X2RlZmF1bHRfZnQobWF0Y2hlci1cXHUwMDNldGJsLCBtYXRjaGVyLVxcdTAwM2VlbmRfZnRfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWF0Y2hlci5jLTI0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWF0Y2hlci5jPTgxPXN0YXRpYyBpbnQgaHdzX21hdGNoZXJfY3JlYXRlX2VuZF9mdF9pc29sYXRlZChzdHJ1Y3QgbWx4NWh3c19tYXRjaGVyICptYXRjaGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tYXRjaGVyLmMtMTAzLWRlc3Ryb3lfZGVmYXVsdF9mdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21hdGNoZXIuYzoxMDQ6XFx0bWx4NWh3c190YWJsZV9kZXN0cm95X2RlZmF1bHRfZnQodGJsLCBtYXRjaGVyLVxcdTAwM2VlbmRfZnRfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWF0Y2hlci5jLTEwNS1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9tbHg1aHdzLmg9MjkzPW1seDVod3NfdGFibGVfY3JlYXRlKHN0cnVjdCBtbHg1aHdzX2NvbnRleHQgKmN0eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWx4NWh3cy5oLTI5Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21seDVod3MuaDoyOTc6ICogbWx4NWh3c190YWJsZV9kZXN0cm95IC0gRGVzdHJveSBkaXJlY3QgcnVsZSB0YWJsZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21seDVod3MuaC0yOTgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvbWx4NWh3cy5oLTMwMi0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21seDVod3MuaDozMDM6aW50IG1seDVod3NfdGFibGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL21seDVod3MuaC0zMDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmM9MTIzPWludCBtbHg1aHdzX3RhYmxlX2NyZWF0ZV9kZWZhdWx0X2Z0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTE2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmM6MTYyOnZvaWQgbWx4NWh3c190YWJsZV9kZXN0cm95X2RlZmF1bHRfZnQoc3RydWN0IG1seDVod3NfdGFibGUgKnRibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmMtMTYzLVxcdFxcdFxcdFxcdCAgICAgIHUzMiBmdF9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYz0xODA9c3RhdGljIGludCBod3NfdGFibGVfaW5pdChzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGJsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTIxNi10YmxfZGVzdHJveTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmM6MjE3OlxcdG1seDVod3NfdGFibGVfZGVzdHJveV9kZWZhdWx0X2Z0KHRibCwgdGJsLVxcdTAwM2VmdF9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTIxOC1cXHRtdXRleF91bmxvY2soXFx1MDAyNmN0eC1cXHUwMDNlY3RybF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYz0yMjI9c3RhdGljIHZvaWQgaHdzX3RhYmxlX3VuaW5pdChzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGJsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTIyNS1cXHRtbHg1aHdzX2FjdGlvbl9wdXRfZGVmYXVsdF9zdGModGJsLVxcdTAwM2VjdHgsIHRibC1cXHUwMDNldHlwZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jOjIyNjpcXHRtbHg1aHdzX3RhYmxlX2Rlc3Ryb3lfZGVmYXVsdF9mdCh0YmwsIHRibC1cXHUwMDNlZnRfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYy0yMjctXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ0YmwtXFx1MDAzZWN0eC1cXHUwMDNlY3RybF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYz0yMzA9c3RydWN0IG1seDVod3NfdGFibGUgKm1seDVod3NfdGFibGVfY3JlYXRlKHN0cnVjdCBtbHg1aHdzX2NvbnRleHQgKmN0eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuYy0yNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jOjI2NzppbnQgbWx4NWh3c190YWJsZV9kZXN0cm95KHN0cnVjdCBtbHg1aHdzX3RhYmxlICp0YmwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jLTI2OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmg9NDk9aW50IG1seDVod3NfdGFibGVfY3JlYXRlX2RlZmF1bHRfZnQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmgtNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5oOjUzOnZvaWQgbWx4NWh3c190YWJsZV9kZXN0cm95X2RlZmF1bHRfZnQoc3RydWN0IG1seDVod3NfdGFibGUgKnRibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmgtNTQtXFx0XFx0XFx0XFx0ICAgICAgdTMyIGZ0X2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MjA6NDYuNjAxNDIzMDYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTA4NDMwMTcwNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBXb3J0aGluZXNzIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NWAgaXMgYWxsIGFib3V0LiBSaWdodCwgYG1seDVgIGlzIHRoZSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBNZWxsYW5veCdzIDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMg4oCTIHRoZSBDb25uZWN0WC00LCBDb25uZWN0WC01LCBhbmQgc28gb24uIFRoZXNlIGFyZSBwcm9wZXIgUENJZSBoYXJkd2FyZSBkZXZpY2VzLCBoaWdoLXBlcmZvcm1hbmNlIHN0dWZmLiBUaGUgY3JpdGljYWwgcG9pbnQgaXMgdGhhdCB0aGVzZSBjYXJkcyBhcmUgKnBoeXNpY2FsKiBkZXZpY2VzLiBTdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBkb24ndCBlbXVsYXRlIHRoaXMgaGFyZHdhcmUuIFNvLCB0aGV5IGFyZW4ndCBkaXJlY3RseSB1c2VmdWwgZm9yIHRlc3RpbmcuXG5cbk5vdywgbGV0J3Mgc2VlIHdoYXQgdGhlIGluc3RydWN0aW9ucyBzYXkgYWJvdXQgZGV0ZXJtaW5pbmcgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIi4gVGhlIGtleSBpczogaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAqdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUqLCB0aGVuIGl0J3MgYSBuby1nby5cblxuQW5kIGJpbmdvISBNZWxsYW5veCBDb25uZWN0WCAoYG1seDVgKSAqaXMqIGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIGRyaXZlci4gSXQgYWJzb2x1dGVseSByZWxpZXMgb24gcGh5c2ljYWwgaGFyZHdhcmUsIGV4YWN0bHkgd2hhdCdzIGV4Y2x1ZGVkIGhlcmUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQncyByZXZpc2l0IHRoZSBleGNsdXNpb24gY3JpdGVyaWEuIEl0J3Mgbm90IGp1c3QgYWJvdXQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJdCBhbHNvIGluY2x1ZGVzIGNvZGUgdGhhdCdzIHVucmVhY2hhYmxlIGluIHRoZXNlIHZpcnR1YWxpemVkIHNldHRpbmdzLiBUaGlzIG1ha2VzIHNlbnNlLiBJZiB0aGUgY29kZSBwYXRoIGNhbid0IGJlIGV4ZWN1dGVkIGluIG91ciB0ZXN0aW5nIGVudmlyb25tZW50LCBmdXp6aW5nIGl0IGlzIHBvaW50bGVzcy4gRnVydGhlcm1vcmUsIHRoZSBzZWNvbmQgZXhjbHVzaW9uIGNyaXRlcmlvbiBpbmNsdWRlcyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzLCBqdXN0IGxpa2UgYG1seDVgLlxuXG5UbyBiZSBleHRyYSB0aG9yb3VnaCwgSSBtaWdodCBnbGFuY2UgYXQgYEtjb25maWdgIGZvciBgbWx4NWAgdG8gY29uZmlybSBpdHMgZGVwZW5kZW5jaWVzLCBidXQgaXQncyBhbHJlYWR5IHByZXR0eSBjbGVhci4gQmFzZWQgb24gdGhlIGluc3RydWN0aW9ucyBhbmQgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgYG1seDVgIGRyaXZlciwgdGhlIHBhdGNoIHNob3VsZCBiZSBmbGFnZ2VkIGFzIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIuIFdlIGRvbid0IGhhdmUgdGhlIGFwcHJvcHJpYXRlIHBoeXNpY2FsIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzE5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjIwOjU3LjQ0NDQ0MTc4MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1lbGxhbm94IGRyaXZlciBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBNTFg1X0NPUkVcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIGNvcmUgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gICA5OlxcdFxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuICAxMDpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gTUxYRlcgfHwgIU1MWEZXXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAxMzpcXHRcXHRkZXBlbmRzIG9uIFBDSV9IWVBFUlZfSU5URVJGQUNFIHx8ICFQQ0lfSFlQRVJWX0lOVEVSRkFDRVxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBIV01PTiB8fCAhSFdNT05cXG4gIDE1OlxcdFxcdGhlbHBcXG4gIDE2OlxcdFxcdCAgQ29yZSBkcml2ZXIgZm9yIGxvdyBsZXZlbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBDb25uZWN0WC00IGFuZFxcbiAgMTc6XFx0XFx0ICBDb25uZWN0LUlCIGNhcmRzIGJ5IE1lbGxhbm94IFRlY2hub2xvZ2llcy5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIE1MWDVfRlBHQVxcbiAgMjA6XFx0XFx0Ym9vbCBcXFwiTWVsbGFub3ggVGVjaG5vbG9naWVzIElubm92YSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0ZGVwZW5kcyBvbiBNTFg1X0NPUkVcXG4gIDIyOlxcdFxcdGhlbHBcXG4gIDIzOlxcdFxcdCAgQnVpbGQgc3VwcG9ydCBmb3IgdGhlIElubm92YSBmYW1pbHkgb2YgbmV0d29yayBjYXJkcyBieSBNZWxsYW5veFxcbiAgMjQ6XFx0XFx0ICBUZWNobm9sb2dpZXMuIElubm92YSBuZXR3b3JrIGNhcmRzIGFyZSBjb21wcmlzZWQgb2YgYSBDb25uZWN0WCBjaGlwXFxuICAyNTpcXHRcXHQgIGFuZCBhbiBGUEdBIGNoaXAgb24gb25lIGJvYXJkLiBJZiB5b3Ugc2VsZWN0IHRoaXMgb3B0aW9uLCB0aGVcXG4gIDI2OlxcdFxcdCAgbWx4NV9jb3JlIGRyaXZlciB3aWxsIGluY2x1ZGUgdGhlIElubm92YSBGUEdBIGNvcmUgYW5kIGFsbG93IGJ1aWxkaW5nXFxuICAyNzpcXHRcXHQgIHNhbmRib3gtc3BlY2lmaWMgY2xpZW50IGRyaXZlcnMuXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBNTFg1X0NPUkVfRU5cXG4gIDMwOlxcdFxcdGJvb2wgXFxcIk1lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDMxOlxcdFxcdGRlcGVuZHMgb24gTkVUREVWSUNFUyBcXHUwMDI2XFx1MDAyNiBFVEhFUk5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUIFxcdTAwMjZcXHUwMDI2IFBDSSBcXHUwMDI2XFx1MDAyNiBNTFg1X0NPUkVcXG4gIDMyOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDMzOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG4gIDM0OlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgRXRoZXJuZXQgc3VwcG9ydCBpbiBNZWxsYW5veCBUZWNobm9sb2dpZXMgQ29ubmVjdFgtNCBOSUMuXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZyBNTFg1X0VOX0FSRlNcXG4gIDM5OlxcdFxcdGJvb2wgXFxcIk1lbGxhbm94IE1MWDUgZXRoZXJuZXQgYWNjZWxlcmF0ZWQgcmVjZWl2ZSBmbG93IHN0ZWVyaW5nIChBUkZTKSBzdXBwb3J0XFxcIlxcbiAgNDA6XFx0XFx0ZGVwZW5kcyBvbiBNTFg1X0NPUkVfRU4gXFx1MDAyNlxcdTAwMjYgUkZTX0FDQ0VMXFxuICA0MTpcXHRcXHRkZWZhdWx0IHlcXG4gIDQyOlxcdFxcdGhlbHBcXG4gIDQzOlxcdFxcdCAgTWVsbGFub3ggTUxYNSBldGhlcm5ldCBoYXJkd2FyZS1hY2NlbGVyYXRlZCByZWNlaXZlIGZsb3cgc3RlZXJpbmcgc3VwcG9ydCxcXG4gIDQ0OlxcdFxcdCAgRW5hYmxlcyBldGhlcm5ldCBuZXRkZXZpY2UgYXJmcyBzdXBwb3J0IGFuZCBudHVwbGUgZmlsdGVyaW5nLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRjb25maWcgTUxYNV9FTl9SWE5GQ1xcbiAgNDc6XFx0XFx0Ym9vbCBcXFwiTWVsbGFub3ggTUxYNSBldGhlcm5ldCByeCBuZmMgZmxvdyBzdGVlcmluZyBzdXBwb3J0XFxcIlxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBNTFg1X0NPUkVfRU5cXG4gIDQ5OlxcdFxcdGRlZmF1bHQgeVxcbiAgNTA6XFx0XFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOToyMDo1Ny40NDQ1MTQ4NjJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNDU0MzI3MjMyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBwaW5wb2ludGVkIHRoZSBjb2RlIEkgbmVlZCB0byBldmFsdWF0ZTogaXQncyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy90YWJsZS5jYC4gVGhpcyBpcyB0aGUgbWx4NSBoYXJkd2FyZSBzdGVlcmluZyAoSFdTKSBjb3JlIGltcGxlbWVudGF0aW9uIGZvciBNZWxsYW5veCBDb25uZWN0WCBOSUNzLiBUaGlzIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgcmVkIGZsYWc6IHRoaXMgY29kZSAqcmVxdWlyZXMqIHBoeXNpY2FsIE1lbGxhbm94IGhhcmR3YXJlLiBTcGVjaWZpY2FsbHksIHRoZXNlIGFyZSBQQ0llIGNhcmRzIHRoYXQgYXJlbid0IGVtdWxhdGVkIHByb3Blcmx5IGluIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgZXZlbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUuXG5cbkdpdmVuIHRoaXMgZGVwZW5kZW5jeSBvbiBzcGVjaWFsaXplZCwgcGh5c2ljYWwgaGFyZHdhcmUsIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgV29ydGhGdXp6aW5nIGlzIGdvaW5nIHRvIGJlIGZhbHNlIGhlcmUuIFNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gdHJ1ZSBpcyBqdXN0IG5vdCBnb2luZyB0byBwcm9kdWNlIG1lYW5pbmdmdWwgcmVzdWx0cy5cblxuVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gY2FsbCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGFuZCBjb25maWd1cmUgaXQgd2l0aCBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBJJ2xsIGFsc28gc2V0IGBGb2N1c1N5bWJvbHNgIHRvIGFuIGVtcHR5IGxpc3QsIGFuZCBgRW5hYmxlQ29uZmlnc2AgdG8gYW4gZW1wdHkgbGlzdCBhcyB3ZWxsIGJlY2F1c2Ugd2UncmUgbm90IHJ1bm5pbmcgdGhpcy4gSW4gdGhlIGBSZWFzb25pbmdgIGZpZWxkLCBJJ2xsIGJlIGNyeXN0YWwgY2xlYXI6IFwiVGhpcyBjb2RlIGlzIHBhcnQgb2YgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBNZWxsYW5veCBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy5cIiBUaGF0IHNob3VsZCBnaXZlIGEgY29uY2x1c2l2ZSByZWNvcmQgb2YgbXkgcmVhc29uaW5nLiBJdCdzIGEgd2FzdGUgb2YgcmVzb3VyY2VzIHRvIGRlZGljYXRlIG1vcmUgYW5hbHlzaXMgaGVyZSB3aXRob3V0IHByb3BlciBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgzMywiT3V0cHV0VG9rZW5zIjoxMjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOToyMToxMS45ODc3ODkxNzNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRpcmVjdCBydWxlIHRhYmxlIGRlc3RydWN0aW9uIGxvZ2ljIGluIHRoZSBtbHg1IGhhcmR3YXJlIHN0ZWVyaW5nIChIV1MpIHN1YnN5c3RlbSAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvdGFibGUuY2ApLiBNZWxsYW5veCBDb25uZWN0WCAobWx4NSkgZGV2aWNlcyBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBhZGFwdGVycy9TbWFydE5JQ3MgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgcGF0aHMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkaXJlY3QgcnVsZSB0YWJsZSBkZXN0cnVjdGlvbiBsb2dpYyBpbiB0aGUgbWx4NSBoYXJkd2FyZSBzdGVlcmluZyAoSFdTKSBzdWJzeXN0ZW0gKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3RhYmxlLmNgKS4gTWVsbGFub3ggQ29ubmVjdFggKG1seDUpIGRldmljZXMgYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llIG5ldHdvcmsgYWRhcHRlcnMvU21hcnROSUNzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZXNlIHBhdGhzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MjE6MTEuOTg3ODE4NjAzWiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkrvxp[1] Phase: Running StartedAt: 2026-08-31 19:21:24 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkrvxp[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-31 19:21:24 +0000 UTC FinishedAt: 2026-08-31 19:21:28 +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,}