Name: series-workflowg5hsx Phase: Failed StartedAt: 2026-08-25 14:21:59 +0000 UTC FinishedAt: 2026-08-25 14:25:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg5hsx[0] Phase: Succeeded StartedAt: 2026-08-25 14:21:59 +0000 UTC FinishedAt: 2026-08-25 14:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg5hsx[0].run-triage Phase: Succeeded StartedAt: 2026-08-25 14:21:59 +0000 UTC FinishedAt: 2026-08-25 14:24:54 +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+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVIgdG8gdGhlIEx5bnggUENTIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVycyAoZS5nLiwgTlhQIEVORVRDLCBEUEFBMiwgT2NlbG90IERTQSwgQWx0ZXJhIFRTRSwgU09DRlBHQSBEV01BQykgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSB0cml2aWFsIGFkZGl0aW9ucyB0byBzd2l0Y2ggc3RhdGVtZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6MjM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxMGI3ZDlkY2E4MjYzMjlkNjQ4ZGJiZjA0NDQxYWFkNWVhZTNhYjYwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMTQ6MjM6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguY1xuaW5kZXggYTkyMDgxNTYwZTY0MS4uZGE0Zjk5MDU5ZWVmNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguY1xuQEAgLTQ2LDYgJiM0Mzs0Niw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbHlueF9wY3NfaW5iYW5kX2NhcHMoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG4gXHRcdHJldHVybiBMSU5LX0lOQkFORF9ESVNBQkxFIHwgTElOS19JTkJBTkRfRU5BQkxFO1xuIFxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVI6XG4gXHRcdHJldHVybiBMSU5LX0lOQkFORF9ESVNBQkxFO1xuIFxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcbkBAIC05Nyw2ICYjNDM7OTgsNyBAQCBzdGF0aWMgdm9pZCBseW54X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbiBcdFx0bHlueF9wY3NfZ2V0X3N0YXRlX3VzeGdtaWkobHlueC1cdTAwM2VtZGlvLCBzdGF0ZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVI6XG4gXHRcdHBoeWxpbmtfbWlpX2M0NV9wY3NfZ2V0X3N0YXRlKGx5bngtXHUwMDNlbWRpbywgc3RhdGUpO1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG5AQCAtMTg4LDcgJiM0MzsxOTAsOCBAQCBzdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuIFx0XHRyZXR1cm4gbHlueF9wY3NfY29uZmlnX3VzeGdtaWkobHlueC1cdTAwM2VtZGlvLCBpZm1vZGUsIGFkdmVydGlzaW5nLFxuIFx0XHRcdFx0XHQgICAgICAgbmVnX21vZGUpO1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XG4tXHRcdC8qIE5vdGhpbmcgdG8gZG8gaGVyZSBmb3IgMTBHQkFTRVIgKi9cbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUjpcbiYjNDM7XHRcdC8qIE5vdGhpbmcgdG8gZG8gaGVyZSBmb3IgMTBHQkFTRVIgYW5kIDI1R0JBU0VSICovXG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuQEAgLTI3OSw2ICYjNDM7MjgyLDcgQEAgc3RhdGljIGNvbnN0IHBoeV9pbnRlcmZhY2VfdCBseW54X2ludGVyZmFjZXNbXSA9IHtcbiBcdFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgsXG4gXHRQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLFxuIFx0UEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSLFxuJiM0MztcdFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUixcbiBcdFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJLFxuIFx0UEhZX0lOVEVSRkFDRV9NT0RFXzEwR19RWEdNSUksXG4gfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNDoyMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVIgdG8gdGhlIEx5bnggUENTIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVycyAoZS5nLiwgTlhQIEVORVRDLCBEUEFBMiwgT2NlbG90IERTQSwgQWx0ZXJhIFRTRSwgU09DRlBHQSBEV01BQykgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSB0cml2aWFsIGFkZGl0aW9ucyB0byBzd2l0Y2ggc3RhdGVtZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMGI3ZDlkY2E4MjYzMjlkNjQ4ZGJiZjA0NDQxYWFkNWVhZTNhYjYwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMjUgMTQ6MjM6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jCmluZGV4IGE5MjA4MTU2MGU2NDEuLmRhNGY5OTA1OWVlZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jCkBAIC00Niw2ICYjNDM7NDYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGx5bnhfcGNzX2luYmFuZF9jYXBzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLAogCQlyZXR1cm4gTElOS19JTkJBTkRfRElTQUJMRSB8IExJTktfSU5CQU5EX0VOQUJMRTsKIAogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSOgomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUjoKIAkJcmV0dXJuIExJTktfSU5CQU5EX0RJU0FCTEU7CiAKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOgpAQCAtOTcsNiAmIzQzOzk4LDcgQEAgc3RhdGljIHZvaWQgbHlueF9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsCiAJCWx5bnhfcGNzX2dldF9zdGF0ZV91c3hnbWlpKGx5bngtJmd0O21kaW8sIHN0YXRlKTsKIAkJYnJlYWs7CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSOgogCQlwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZShseW54LSZndDttZGlvLCBzdGF0ZSk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CkBAIC0xODgsNyAmIzQzOzE5MCw4IEBAIHN0YXRpYyBpbnQgbHlueF9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsCiAJCXJldHVybiBseW54X3Bjc19jb25maWdfdXN4Z21paShseW54LSZndDttZGlvLCBpZm1vZGUsIGFkdmVydGlzaW5nLAogCQkJCQkgICAgICAgbmVnX21vZGUpOwogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSOgotCQkvKiBOb3RoaW5nIHRvIGRvIGhlcmUgZm9yIDEwR0JBU0VSICovCiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSOgomIzQzOwkJLyogTm90aGluZyB0byBkbyBoZXJlIGZvciAxMEdCQVNFUiBhbmQgMjVHQkFTRVIgKi8KIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwpAQCAtMjc5LDYgJiM0MzsyODIsNyBAQCBzdGF0aWMgY29uc3QgcGh5X2ludGVyZmFjZV90IGx5bnhfaW50ZXJmYWNlc1tdID0gewogCVBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgsCiAJUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCwKIAlQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIsCiYjNDM7CVBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUiwKIAlQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSSwKIAlQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSSwKIH07CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDAKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUENTLUx5bnggRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgcGNzLWx5bnguY2AgZHJpdmVyLiBJdCBzZWVtcyBsaWtlIHNvbWVvbmUmIzM5O3MgYWRkZWQgYFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUmAgdG8gc2V2ZXJhbCBzZWN0aW9uczogYGx5bnhfcGNzX2luYmFuZF9jYXBzYCwgYGx5bnhfcGNzX2dldF9zdGF0ZWAsIGBseW54X3Bjc19jb25maWdgLCBhbmQgYGx5bnhfaW50ZXJmYWNlc2AuIFJpZ2h0IGF3YXksIG15IGV4cGVydCBleWUgdGVsbHMgbWUgdGhpcyBpcyBhYm91dCBlbmFibGluZyBvciBjb25maWd1cmluZyAyNUdCQVNFLVIgc3VwcG9ydCwgcHJvYmFibHkgb24gYW4gRXRoZXJuZXQgUEhZIG9yIE1BQy4gSSBrbm93IHRoaXMgZHJpdmVyIGlzIGZvciBhIFBoeXNpY2FsIENvZGluZyBTdWJsYXllciwgc28gaXQgZGVhbHMgd2l0aCB0aGUgbG93LWxldmVsIHBoeXNpY2FsIGxheWVyIHNpZ25hbGluZy4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIHBsYXlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENvbnNpZGVyaW5nIGl0JiMzOTtzIGEgUENTIGRyaXZlciwgYW5kIHRob3NlIGFyZSBvZnRlbiBwYWlyZWQgd2l0aCBFdGhlcm5ldCBNQUMgZHJpdmVycywgSSBuZWVkIHRvIGtub3cgaWYgd2UgY2FuIGFjdHVhbGx5IHJlYWNoIGBwY3MtbHlueC5jYCBpbiBhIHZpcnR1YWxpemVkIHNpdHVhdGlvbi4gQXJlIHRoZSBkZXBlbmRlbmNpZXMgY29ycmVjdD8gV2hhdCBtb2R1bGVzIGFyZSBjYWxsaW5nIHRoaXMgZHJpdmVyPyBMZXQgbWUgY2hlY2sgd2hhdCB1c2VzIGBwY3MtbHlueGAgdG8gZGV0ZXJtaW5lIHRoZSBpbXBhY3QuIEdvdHRhIHRyYWNlIGl0cyBkZXBlbmRlbmNpZXMgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZS4gVGhpcyBjb3VsZCBiZSBhbiBpbXBvcnRhbnQgYWRkaXRpb24sIGFuZCBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Bjcy1seW54JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O01BSU5UQUlORVJTPTE1NTU0PVM6XHRTdXBwb3J0ZWRcbk1BSU5UQUlORVJTOjE1NTU1OkY6XHRkcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguY1xuTUFJTlRBSU5FUlM6MTU1NTY6RjpcdGluY2x1ZGUvbGludXgvcGNzLWx5bnguaFxuTUFJTlRBSU5FUlMtMTU1NTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTQtI2luY2x1ZGUgXHUwMDNjbGludXgvZHNhL29jZWxvdC5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxNTojaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtbHlueC5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xNi0jaW5jbHVkZSBcdTAwM2NuZXQvcGt0X3NjaGVkLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTExLSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX21kaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzoxMjojaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtbHlueC5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTEzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2RzYS9vY2Vsb3QuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0zNC0jaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9uZXQuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjM1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0zNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2FjcGkuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjU6I2luY2x1ZGUgXHUwMDNjbGludXgvcGNzLWx5bnguaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYtI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5L3BoeS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9uZXQuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTojaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtbHlueC5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy0xMC0jaW5jbHVkZSBcJiMzNDtlbmV0Y19pZXJiLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX21lbWFjLmMtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jOjE0OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYy0xNS0jaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmg9MTIwOT1zdHJ1Y3QgbXRrX3NvY19kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oLTEyNjQtICogICAgICAgICAgICAgICAgICAgICAgU0dNSUkgYW5kIEdlUEhZIHBhdGhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmg6MTI2NTogKiBAc2dtaWlfcGNzOlx0XHRQb2ludGVycyB0byBtdGstcGNzLWx5bnhpIHBoeWxpbmtfcGNzIGluc3RhbmNlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaC0xMjY2LSAqIEBwY3RsOlx0XHRUaGUgcmVnaXN0ZXIgbWFwIHBvaW50aW5nIGF0IHRoZSByYW5nZSB1c2VkIHRvIHNldHVwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTE0LSNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8vbWRpby1yZWdtYXAuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjE1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy0xNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9yZXNldC5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1BDU19YUENTKVx0XHQmIzQzOz0gcGNzX3hwY3Mub1xuZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX1BDU19MWU5YKVx0XHQmIzQzOz0gcGNzLWx5bngub1xuZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX1BDU19NVEtfTFlOWEkpXHQmIzQzOz0gcGNzLW10ay1seW54aS5vXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtNy0jaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjg6I2luY2x1ZGUgXHUwMDNjbGludXgvcGNzLWx5bnguaFx1MDAzZVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtOS0jaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwOQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDQwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgcGNzLWx5bnguY2AqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHBjcy1seW54LmNgIGRyaXZlci4gVGhlIGNvZGUgc2hvd3MgaXQmIzM5O3MgdXNlZCBieSBxdWl0ZSBhIGZldyBvdGhlciBkcml2ZXJzOiBgZmVsaXhfdnNjOTk1OS5jYCwgYHNldmlsbGVfdnNjOTk1My5jYCwgYGFsdGVyYV90c2VfbWFpbi5jYCwgYGRwYWEyLW1hYy5jYCwgYGVuZXRjX3BmLmNgLCBgZm1hbl9tZW1hYy5jYCwgYW5kIGBkd21hYy1zb2NmcGdhLmNgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGVzZSBhcmUgYWxsIHNwZWNpZmljIHRvIHBhcnRpY3VsYXIgaGFyZHdhcmU6IE5YUCYjMzk7cyBPY2Vsb3QgRFNBLCBBbHRlcmEmIzM5O3MgVFNFLCBGcmVlc2NhbGUmIzM5O3MgRFBBQTIvRU5FVEMvRk1BTiwgYW5kIFNUTWljcm8mIzM5O3MgRFdNQUMgU09DRlBHQS4KClRoZSBvYnZpb3VzIHF1ZXN0aW9uIHBvcHMgdXA6IENhbiBJIGV2ZW4gcmVhY2ggdGhpcyBjb2RlIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IEdpdmVuIHRoYXQgaXQmIzM5O3MgYWxsIGhhcmR3YXJlLWRlcGVuZGVudCBldGhlcm5ldCBkcml2ZXJzLCB0aGUgY2hhbmNlcyBmZWVsIHNsaW0uIEhvbGQgb24sIHRoZSBgcGNzLWx5bnhgIGRyaXZlciBpdHNlbGYgaXMgYWN0dWFsbHkgYSBQQ1MgbGlicmFyeS4gQ291bGQgSSBwb3RlbnRpYWxseSB0cmlnZ2VyIGl0IHRocm91Z2ggc29tZSBzb3J0IG9mIHZpcnR1YWwgZGV2aWNlPyBQcm9iYWJseSBub3QuIFRoZXNlIGRyaXZlcnMgYXJlIGludHJpbnNpY2FsbHkgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4KCkhtbSwgd2FpdCwgYGR3bWFjLXNvY2ZwZ2FgIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzdG1tYWMuIGBhbHRlcmFfdHNlYCBpcyBhbHNvIGEgcGxhdGZvcm0gZHJpdmVyLiBgZW5ldGNgIGlzIGEgUENJIGRyaXZlciBmb3IgTlhQIEVORVRDLCBhbmQgYGRwYWEyYCBpcyBmb3IgTlhQIERQQUEyLiBOb25lIG9mIHRoZXNlIGFyZSBzdGFuZGFyZCBlbXVsYXRlZCBkZXZpY2VzIGluIFFFTVUuIEJhY2sgdG8gc3F1YXJlIG9uZSAtIGNhbiBgcGNzLWx5bnhgIGJlIGluc3RhbnRpYXRlZCBieSBhIGR1bW15IGRldmljZT8gSSBuZWVkIHRvIGNoZWNrIGBwY3MtbHlueC5jYCBpdHNlbGYgdG8gc2VlICpob3cqIGl0JiMzOTtzIGJyb3VnaHQgdG8gbGlmZS4gVGhhdCB3aWxsIGJlIHRoZSBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bHlueF9wY3NfY3JlYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q9NzQ9dGhpcyBkb2N1bWVudGF0aW9uLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzExLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdDozMTI6ICAgICAgICBwcml2LVx1MDAzZXBjcyA9IGx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KGJ1cywgMCk7XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTMxMy1cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTMxNy1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzE4OiAgICAgICAgcHJpdi1cdTAwM2VwY3MgPSBseW54X3Bjc19jcmVhdGVfZndub2RlKG9mX2Z3bm9kZV9oYW5kbGUobm9kZSkpO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zMTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAzMi1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjEwMzM6XHRcdHBoeWxpbmtfcGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYoZmVsaXgtXHUwMDNlaW1kaW8sIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAzNC1cdFx0aWYgKElTX0VSUihwaHlsaW5rX3BjcykpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYz04Nzg9c3RhdGljIGludCB2c2M5OTUzX21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkyMi1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6OTIzOlx0XHRwaHlsaW5rX3BjcyA9IGx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KGZlbGl4LVx1MDAzZWltZGlvLCBhZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTI0LVx0XHRpZiAoSVNfRVJSKHBoeWxpbmtfcGNzKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTEyOD1zdGF0aWMgaW50IGFsdGVyYV90c2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTM5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxMzk1Olx0cHJpdi1cdTAwM2VwY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihwY3NfYnVzLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xMzk2LVx0aWYgKElTX0VSUihwcml2LVx1MDAzZXBjcykpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NDQ3PXN0YXRpYyBpbnQgZHBhYTJfcGNzX2NyZWF0ZShzdHJ1Y3QgZHBhYTJfbWFjICptYWMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTQ2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo0NjE6XHRwY3MgPSBseW54X3Bjc19jcmVhdGVfZndub2RlKG5vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTQ2Mi1cdGZ3bm9kZV9oYW5kbGVfcHV0KG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00NzUtXHRcdG5ldGRldl9lcnIobWFjLVx1MDAzZW5ldF9kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NDc2Olx0XHRcdCAgIFwmIzM0O2x5bnhfcGNzX2NyZWF0ZV9md25vZGUoKSBmYWlsZWQ6ICVwZVxcblwmIzM0OywgcGNzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00NzctXHRcdHJldHVybiBQVFJfRVJSKHBjcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9MzQ9c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqZW5ldGNfcGZfY3JlYXRlX3BjcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTM2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjM3Olx0cmV0dXJuIGx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KGJ1cywgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy0zOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jPTExMjI9c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbWVtYWNfcGNzX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm1hY19ub2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYy0xMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jOjExMzI6XHRwY3MgPSBseW54X3Bjc19jcmVhdGVfZndub2RlKG9mX2Z3bm9kZV9oYW5kbGUobm9kZSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jLTExMzMtXHRvZl9ub2RlX3B1dChub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM9NDk2PXN0YXRpYyBpbnQgc29jZnBnYV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTUzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo1MzI6XHRwY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihwY3NfYnVzLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01MzMtXHRpZiAoSVNfRVJSKHBjcykpXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM9Mjc5PXN0YXRpYyBjb25zdCBwaHlfaW50ZXJmYWNlX3QgbHlueF9pbnRlcmZhY2VzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMjg5LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MjkwOnN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW8pXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0yOTEte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMwOS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjMxMDpzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzExLXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMTgtXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozMTk6XHRwY3MgPSBseW54X3Bjc19jcmVhdGUobWRpbyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMjAtXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzMwLX1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjMzMTpFWFBPUlRfU1lNQk9MKGx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMzMi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMzMy0vKlxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzM0OiAqIGx5bnhfcGNzX2NyZWF0ZV9md25vZGUoKSBjcmVhdGVzIGEgbHlueCBQQ1MgaW5zdGFuY2UgZnJvbSB0aGUgZndub2RlXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMzUtICogZGV2aWNlIGluZGljYXRlZCBieSBub2RlLlxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM0Mi0gKi9cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjM0MzpzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9md25vZGUoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKm5vZGUpXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNDQte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM1NC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjM1NTpcdHBjcyA9IGx5bnhfcGNzX2NyZWF0ZShtZGlvKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM1Ni1cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNjYtfVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzY3OkVYUE9SVF9TWU1CT0xfR1BMKGx5bnhfcGNzX2NyZWF0ZV9md25vZGUpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzY4LVxuLS1cbmluY2x1ZGUvbGludXgvcGNzLWx5bnguaC0xMS1cbmluY2x1ZGUvbGludXgvcGNzLWx5bnguaDoxMjpzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKTtcbmluY2x1ZGUvbGludXgvcGNzLWx5bnguaDoxMzpzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9md25vZGUoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKm5vZGUpO1xuaW5jbHVkZS9saW51eC9wY3MtbHlueC5oLTE0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNjEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA4MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2VlIGlmIEkgY291bGQgdHJpZ2dlciB0aGUgYHBjcy1seW54YCBkcml2ZXIgdXNpbmcgYGR3bWFjLXNvY2ZwZ2EuY2AsIHdoaWNoLCBhcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYHN0bW1hY2AsIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQywgbWlnaHQgYmUgaW50ZXJlc3RpbmcuIEkga25vdyBgc3RtbWFjYCBpcyBkZXZpY2UgdHJlZS1pbnN0YW50aWFibGUuIEhvd2V2ZXIsIGBkd21hYy1zb2NmcGdhLmNgIHNwZWNpZmljYWxseSB0YXJnZXRzIEFsdGVyYSBTT0NGUEdBLiBDYW4gSSBldmVuIGdldCB0aGF0IHRvIHJ1biB1bmRlciBRRU1VPyBIbW0sIFFFTVUgaGFzIHNvbWUgQWx0ZXJhIGJvYXJkIHN1cHBvcnQsIGJ1dCByZWFsaXN0aWNhbGx5LCB3aXRoIGBzdG1tYWNgLCBJJiMzOTtkIGJlIGxvb2tpbmcgYXQgYSBkZXZpY2UgdHJlZSBvdmVybGF5IGlmIGl0ICppcyogYSBwbGF0Zm9ybSBkZXZpY2UuCgpOb3csIHRoZSBgcGNzLWx5bnhgIGRyaXZlciBpdHNlbGYuIElzIGl0IHVzZWQgZ2VuZXJpY2FsbHkgYnkgYHN0bW1hY2AsIG9yIGlzIGl0IHNwZWNpZmljPyBBaCwgb25seSBgZHdtYWMtc29jZnBnYS5jYCB1c2VzIGl0LiBMZXQgbWUgdHJ5IHRvIHNlZSBpZiBgZHdtYWMtc29jZnBnYWAgaXMgZXZlbiByZWFjaGFibGUuIENhbiBJIGdldCBgbHlueF9wY3NfY29uZmlnYCB0byBmaXJlIHRocm91Z2ggYHBoeWxpbmtgIHNvbWVob3c/IFRoZW9yZXRpY2FsbHksIHllcywgaWYgSSBjYW4gaW5zdGFudGlhdGUgYSBkZXZpY2UgdGhhdCB1c2VzIGBwY3MtbHlueGAuCgpCdXQgd2FpdCwgaXMgdGhpcyBjaGFuZ2UgcmVhbGx5IHdvcnRoIGZ1enppbmc/IEl0JiMzOTtzIGxpdGVyYWxseSBqdXN0IGFkZGluZyBzdXBwb3J0IGZvciBgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSYCB0byBhIGZldyBzd2l0Y2ggc3RhdGVtZW50cy4gVGhlIGNvZGUgaXMgbWluaW1hbDogZWl0aGVyIHJldHVybiBhIGNvbnN0YW50IGBMSU5LX0lOQkFORF9ESVNBQkxFYCBvciBjYWxsIGBwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZWAuIEJhc2ljYWxseSwgaXQmIzM5O3MgdGhlIHNhbWUgbG9naWMgYXMgMTBHQkFTRVIsIGp1c3QgZm9yIHRoZSBuZXcgbW9kZS4gTm93LCBkb2VzIHRoaXMgbmV3IFBIWSBtb2RlIHBvdGVudGlhbGx5IGVuYWJsZSBuZXcgcGF0aHMgaW4gYHBoeWxpbmtgPyBIb2xkIG9uLCBgcGh5bGlua2AgYWxyZWFkeSBzdXBwb3J0cyBgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSYC4gVGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IGNvbmZpbmVkIHRvIGBwY3MtbHlueC5jYC4KCkNvbnNpZGVyaW5nIGFsbCBvZiB0aGlzLCBJJiMzOTttIGxlYW5pbmcgdG93YXJkcyAmIzM0O25vLiYjMzQ7IEl0JiMzOTtzIGEgdHJpdmlhbCBhZGRpdGlvbiBvZiBhbiBlbnVtIHZhbHVlIHRvIGEgc3dpdGNoIHN0YXRlbWVudCB3aXRoaW4gYSBzcGVjaWZpYyBoYXJkd2FyZSBQQ1MgZHJpdmVyLgoKRnVydGhlcm1vcmUsIGl0JiMzOTtzIGhpZ2hseSB1bmxpa2VseSB0aGF0IEkgY2FuIHRyaWdnZXIgdGhpcyBpbiBhIHN0YW5kYXJkIHN5emthbGxlciBWTS4gYHBjcy1seW54YCBpcyB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlOiBOWFAgT2NlbG90LCBBbHRlcmEgVFNFLCBGcmVlc2NhbGUgRFBBQTIsIG9yIFNPQ0ZQR0EgRFdNQUMuIFN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aG9zZSwgb3IgaWYgaXQgZG9lcywgaXQmIzM5O3Mgd2l0aCBzcGVjaWZpYyBkZXZpY2UgdHJlZSBzZXR1cHMgdGhhdCBzeXprYWxsZXIgbGlrZWx5IHdvbiYjMzk7dCBoYXZlLiBTeXprYWxsZXIgdXN1YWxseSBmb2N1c2VzIG9uIGRyaXZlcnMgdGhhdCBjYW4gYmUgZW11bGF0ZWQsIGxpa2UgUENJIG9yIFVTQi4gVGhlIGBlbmV0Y2AgZHJpdmVyIGlzIGEgUENJIGRldmljZSwgc28gdGhhdCBtaWdodCBiZSB3b3J0aCBsb29raW5nIGludG8uIExldCBtZSBjaGVjayBgZW5ldGNfcGYuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5ldGNfcGZfcHJvYmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9Nzg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZW5ldGNfcGZfb3BzIGVuZXRjX3BmX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy03OTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo3OTU6c3RhdGljIGludCBlbmV0Y19wZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTc5Ni1cdFx0XHQgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9OTMzPXN0YXRpYyB2b2lkIGVuZXRjX2ZpeHVwX2NsZWFyX3Jzc19yZnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTM4LVx0LyogT25seSBhcHBseSBxdWlyayBmb3IgZGlzYWJsZWQgZnVuY3Rpb25zLiBGb3IgdGhlIG9uZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjkzOTpcdCAqIHRoYXQgYXJlIGVuYWJsZWQsIGVuZXRjX3BmX3Byb2JlKCkgd2lsbCBhcHBseSBpdC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0MC1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jPTk1Nz1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZW5ldGNfcGZfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk1OS1cdC5pZF90YWJsZSA9IGVuZXRjX3BmX2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTYwOlx0LnByb2JlID0gZW5ldGNfcGZfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NjEtXHQucmVtb3ZlID0gZW5ldGNfcGZfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5NDAKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogNTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogQSBRdWljayBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB0aGlzIGV2ZW4gKmJlKiBmdXp6ZWQgZWZmZWN0aXZlbHk/IEkmIzM5O20gZGVhbGluZyB3aXRoIGFuIGBlbmV0Y2AgUENJIGRyaXZlciwgYW5kIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciBgc3l6a2FsbGVyYCBjYW4gZXZlbiB0b3VjaCBpdC4gSSBrbm93IGl0ICpjYW4qIGZ1enogUENJIGRyaXZlcnMsIHVzaW5nIGBzeXpfcGNpX3ZwY2lgIG9yIHNpbWlsYXIsIGJ1dCB0eXBpY2FsbHkgdGhhdCByZXF1aXJlcyB0aGUgZHJpdmVyIHRvIGJlIGJvdW5kLiBIbW0sIHRoaXMgc3BlY2lmaWMgcGF0Y2ggbG9va3MgcHJldHR5IGJlbmlnbiwganVzdCBhZGRpbmcgYFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUmAgdG8gYSBzd2l0Y2ggc3RhdGVtZW50LiBJcyB0aGUgZnVuY3Rpb25hbCBjaGFuZ2UgaGVyZSByZWFsbHkgd29ydGggdGhlIGZ1enppbmcgZWZmb3J0PwoKTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXIgb24gdGhpczogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIC4uLiBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIC4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OwoKYGVuZXRjYCBpcyBhIEZyZWVzY2FsZS9OWFAgRU5FVEMgR2lnYWJpdCBFdGhlcm5ldCBDb250cm9sbGVyLiBUaGF0IHNvdW5kcyBsaWtlIHNwZWNpZmljIGhhcmR3YXJlIHRvIG1lLiBBbmQgbG9va2luZyBhdCB0aGUgcmVsYXRlZCBgcGNzLWx5bnhgIGRyaXZlciwgdGhhdCYjMzk7cyBhbHNvIE5YUC9GcmVlc2NhbGUgYW5kIEFsdGVyYSBoYXJkd2FyZSwgZGVmaW5pdGVseSBub3Qgc29tZXRoaW5nIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCgpTbywgYWNjb3JkaW5nIHRvIHRoZSBydWxlLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGlzIGZhbGxzIHVuZGVyIHRoZSBoYXJkd2FyZS1zcGVjaWZpYywgbm9uLWVtdWxhdGVkIGRyaXZlciBjYXRlZ29yeS4gSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIGBwY3MtbHlueGAgaXMgdXNlZCBieSBhbnl0aGluZyBlbHNlLiBBaGEsIEkgYWxyZWFkeSBncmVwcGVkIGZvciBpdCBhbmQgaXQmIzM5O3MgdXNlZCBieSBzZXZlcmFsIG90aGVyIGRyaXZlcnM6IGBkcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuY2AsIGBkcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jYCwgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNgLgoKWWVwLCBhbGwgdGhlc2UgYXJlIGFsc28gc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycywgZ2VuZXJhbGx5IGZvciBOWFAvRnJlZXNjYWxlIGFuZCBBbHRlcmEvSW50ZWwgRlBHQXMuIE5vbmUgb2YgdGhlc2UgYXJlIHN0YW5kYXJkIGVtdWxhdGVkIGRldmljZXMgaW4gUUVNVS4gQW5kIHRoZSBjaGFuZ2UsIGxpa2UgSSBtZW50aW9uZWQgZWFybGllciwgaXMganVzdCBhZGRpbmcgYSBuZXcgUEhZIG1vZGUgaW4gYSBzd2l0Y2ggY2FzZS4KClNvLCBhZnRlciBhIHRob3JvdWdoIGxvb2ssIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSByaWdodCBjYWxsIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVIgdG8gdGhlIEx5bnggUENTIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVycyAoZS5nLiwgTlhQIEVORVRDLCBEUEFBMiwgT2NlbG90IERTQSwgQWx0ZXJhIFRTRSwgU09DRlBHQSBEV01BQykgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSB0cml2aWFsIGFkZGl0aW9ucyB0byBzd2l0Y2ggc3RhdGVtZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSIHRvIHRoZSBMeW54IFBDUyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZXhjbHVzaXZlbHkgYnkgaGFyZHdhcmUtc3BlY2lmaWMgRXRoZXJuZXQgY29udHJvbGxlcnMgKGUuZy4sIE5YUCBFTkVUQywgRFBBQTIsIE9jZWxvdCBEU0EsIEFsdGVyYSBUU0UsIFNPQ0ZQR0EgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgdHJpdmlhbCBhZGRpdGlvbnMgdG8gc3dpdGNoIHN0YXRlbWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNDoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6MjM6NTIuODgzNTk3Mzg2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk3Mjc3MTgwMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUiB0byB0aGUgTHlueCBQQ1MgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IGhhcmR3YXJlLXNwZWNpZmljIEV0aGVybmV0IGNvbnRyb2xsZXJzIChlLmcuLCBOWFAgRU5FVEMsIERQQUEyLCBPY2Vsb3QgRFNBLCBBbHRlcmEgVFNFLCBTT0NGUEdBIERXTUFDKSB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIHRyaXZpYWwgYWRkaXRpb25zIHRvIHN3aXRjaCBzdGF0ZW1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6MjM6NTIuODgzNjA0NzE2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTA2ODg2MDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTBiN2Q5ZGNhODI2MzI5ZDY0OGRiYmYwNDQ0MWFhZDVlYWUzYWI2MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAyNSAxNDoyMzo1MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXFxuaW5kZXggYTkyMDgxNTYwZTY0MS4uZGE0Zjk5MDU5ZWVmNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXFxuQEAgLTQ2LDYgKzQ2LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBseW54X3Bjc19pbmJhbmRfY2FwcyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG4gXFx0XFx0cmV0dXJuIExJTktfSU5CQU5EX0RJU0FCTEUgfCBMSU5LX0lOQkFORF9FTkFCTEU7XFxuIFxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjpcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVI6XFxuIFxcdFxcdHJldHVybiBMSU5LX0lOQkFORF9ESVNBQkxFO1xcbiBcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcXG5AQCAtOTcsNiArOTgsNyBAQCBzdGF0aWMgdm9pZCBseW54X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4gXFx0XFx0bHlueF9wY3NfZ2V0X3N0YXRlX3VzeGdtaWkobHlueC1cXHUwMDNlbWRpbywgc3RhdGUpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSOlxcbiBcXHRcXHRwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZShseW54LVxcdTAwM2VtZGlvLCBzdGF0ZSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRkZWZhdWx0OlxcbkBAIC0xODgsNyArMTkwLDggQEAgc3RhdGljIGludCBseW54X3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4gXFx0XFx0cmV0dXJuIGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpKGx5bngtXFx1MDAzZW1kaW8sIGlmbW9kZSwgYWR2ZXJ0aXNpbmcsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgICBuZWdfbW9kZSk7XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSOlxcbi1cXHRcXHQvKiBOb3RoaW5nIHRvIGRvIGhlcmUgZm9yIDEwR0JBU0VSICovXFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSOlxcbitcXHRcXHQvKiBOb3RoaW5nIHRvIGRvIGhlcmUgZm9yIDEwR0JBU0VSIGFuZCAyNUdCQVNFUiAqL1xcbiBcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbkBAIC0yNzksNiArMjgyLDcgQEAgc3RhdGljIGNvbnN0IHBoeV9pbnRlcmZhY2VfdCBseW54X2ludGVyZmFjZXNbXSA9IHtcXG4gXFx0UEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCxcXG4gXFx0UEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcXG4gXFx0UEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSLFxcbitcXHRQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVIsXFxuIFxcdFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJLFxcbiBcXHRQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSSxcXG4gfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6MjM6NTQuMzkxNDk0Mzg0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDgyMTk4MDA4MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSIHRvIHRoZSBMeW54IFBDUyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZXhjbHVzaXZlbHkgYnkgaGFyZHdhcmUtc3BlY2lmaWMgRXRoZXJuZXQgY29udHJvbGxlcnMgKGUuZy4sIE5YUCBFTkVUQywgRFBBQTIsIE9jZWxvdCBEU0EsIEFsdGVyYSBUU0UsIFNPQ0ZQR0EgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgdHJpdmlhbCBhZGRpdGlvbnMgdG8gc3dpdGNoIHN0YXRlbWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMGI3ZDlkY2E4MjYzMjlkNjQ4ZGJiZjA0NDQxYWFkNWVhZTNhYjYwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMTQ6MjM6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXG5pbmRleCBhOTIwODE1NjBlNjQxLi5kYTRmOTkwNTllZWY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmNcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXG5AQCAtNDYsNiArNDYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGx5bnhfcGNzX2luYmFuZF9jYXBzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuIFx0XHRyZXR1cm4gTElOS19JTkJBTkRfRElTQUJMRSB8IExJTktfSU5CQU5EX0VOQUJMRTtcbiBcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSOlxuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVI6XG4gXHRcdHJldHVybiBMSU5LX0lOQkFORF9ESVNBQkxFO1xuIFxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcbkBAIC05Nyw2ICs5OCw3IEBAIHN0YXRpYyB2b2lkIGx5bnhfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuIFx0XHRseW54X3Bjc19nZXRfc3RhdGVfdXN4Z21paShseW54LVx1MDAzZW1kaW8sIHN0YXRlKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjpcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSOlxuIFx0XHRwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZShseW54LVx1MDAzZW1kaW8sIHN0YXRlKTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuQEAgLTE4OCw3ICsxOTAsOCBAQCBzdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuIFx0XHRyZXR1cm4gbHlueF9wY3NfY29uZmlnX3VzeGdtaWkobHlueC1cdTAwM2VtZGlvLCBpZm1vZGUsIGFkdmVydGlzaW5nLFxuIFx0XHRcdFx0XHQgICAgICAgbmVnX21vZGUpO1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XG4tXHRcdC8qIE5vdGhpbmcgdG8gZG8gaGVyZSBmb3IgMTBHQkFTRVIgKi9cbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSOlxuK1x0XHQvKiBOb3RoaW5nIHRvIGRvIGhlcmUgZm9yIDEwR0JBU0VSIGFuZCAyNUdCQVNFUiAqL1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbkBAIC0yNzksNiArMjgyLDcgQEAgc3RhdGljIGNvbnN0IHBoeV9pbnRlcmZhY2VfdCBseW54X2ludGVyZmFjZXNbXSA9IHtcbiBcdFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgsXG4gXHRQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLFxuIFx0UEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSLFxuK1x0UEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSLFxuIFx0UEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUksXG4gXHRQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSSxcbiB9O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6MjM6NTQuMzkxNDk2NzE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIzNjE2MDUyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQQ1MtTHlueCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgcGNzLWx5bnguY2AgZHJpdmVyLiBJdCBzZWVtcyBsaWtlIHNvbWVvbmUncyBhZGRlZCBgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSYCB0byBzZXZlcmFsIHNlY3Rpb25zOiBgbHlueF9wY3NfaW5iYW5kX2NhcHNgLCBgbHlueF9wY3NfZ2V0X3N0YXRlYCwgYGx5bnhfcGNzX2NvbmZpZ2AsIGFuZCBgbHlueF9pbnRlcmZhY2VzYC4gUmlnaHQgYXdheSwgbXkgZXhwZXJ0IGV5ZSB0ZWxscyBtZSB0aGlzIGlzIGFib3V0IGVuYWJsaW5nIG9yIGNvbmZpZ3VyaW5nIDI1R0JBU0UtUiBzdXBwb3J0LCBwcm9iYWJseSBvbiBhbiBFdGhlcm5ldCBQSFkgb3IgTUFDLiBJIGtub3cgdGhpcyBkcml2ZXIgaXMgZm9yIGEgUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyLCBzbyBpdCBkZWFscyB3aXRoIHRoZSBsb3ctbGV2ZWwgcGh5c2ljYWwgbGF5ZXIgc2lnbmFsaW5nLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3Mgc2VlIGhvdyB0aGlzIHBsYXlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENvbnNpZGVyaW5nIGl0J3MgYSBQQ1MgZHJpdmVyLCBhbmQgdGhvc2UgYXJlIG9mdGVuIHBhaXJlZCB3aXRoIEV0aGVybmV0IE1BQyBkcml2ZXJzLCBJIG5lZWQgdG8ga25vdyBpZiB3ZSBjYW4gYWN0dWFsbHkgcmVhY2ggYHBjcy1seW54LmNgIGluIGEgdmlydHVhbGl6ZWQgc2l0dWF0aW9uLiBBcmUgdGhlIGRlcGVuZGVuY2llcyBjb3JyZWN0PyBXaGF0IG1vZHVsZXMgYXJlIGNhbGxpbmcgdGhpcyBkcml2ZXI/IExldCBtZSBjaGVjayB3aGF0IHVzZXMgYHBjcy1seW54YCB0byBkZXRlcm1pbmUgdGhlIGltcGFjdC4gR290dGEgdHJhY2UgaXRzIGRlcGVuZGVuY2llcyB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBUaGlzIGNvdWxkIGJlIGFuIGltcG9ydGFudCBhZGRpdGlvbiwgYW5kIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDAsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDoyMzo1OS42Mjc2NTk5NzVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQwNDUzNjYwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY3MtbHlueFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJNQUlOVEFJTkVSUz0xNTU1ND1TOlxcdFN1cHBvcnRlZFxcbk1BSU5UQUlORVJTOjE1NTU1OkY6XFx0ZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmNcXG5NQUlOVEFJTkVSUzoxNTU1NjpGOlxcdGluY2x1ZGUvbGludXgvcGNzLWx5bnguaFxcbk1BSU5UQUlORVJTLTE1NTU3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTQtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RzYS9vY2Vsb3QuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLWx5bnguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xNi0jaW5jbHVkZSBcXHUwMDNjbmV0L3BrdF9zY2hlZC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy0xMS0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfbWRpby5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6MTI6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy0xMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvZHNhL29jZWxvdC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTM0LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9uZXQuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MzU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTM2LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9hY3BpLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS9waHkuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX25ldC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjk6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtMTAtI2luY2x1ZGUgXFxcImVuZXRjX2llcmIuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYy0xMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvaW8uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX21lbWFjLmM6MTQ6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jLTE1LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmg9MTIwOT1zdHJ1Y3QgbXRrX3NvY19kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmgtMTI2NC0gKiAgICAgICAgICAgICAgICAgICAgICBTR01JSSBhbmQgR2VQSFkgcGF0aFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmg6MTI2NTogKiBAc2dtaWlfcGNzOlxcdFxcdFBvaW50ZXJzIHRvIG10ay1wY3MtbHlueGkgcGh5bGlua19wY3MgaW5zdGFuY2VzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaC0xMjY2LSAqIEBwY3RsOlxcdFxcdFRoZSByZWdpc3RlciBtYXAgcG9pbnRpbmcgYXQgdGhlIHJhbmdlIHVzZWQgdG8gc2V0dXBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy0xNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby9tZGlvLXJlZ21hcC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLWx5bnguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtMTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Jlc2V0LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfUENTX1hQQ1MpXFx0XFx0Kz0gcGNzX3hwY3Mub1xcbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19QQ1NfTFlOWClcXHRcXHQrPSBwY3MtbHlueC5vXFxuZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX1BDU19NVEtfTFlOWEkpXFx0Kz0gcGNzLW10ay1seW54aS5vXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy03LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHlsaW5rLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6ODojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLWx5bnguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy05LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXFx1MDAzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDoyNDowMy4wMzIyMDI0OTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDc1MTk5MDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBwY3MtbHlueC5jYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHBjcy1seW54LmNgIGRyaXZlci4gVGhlIGNvZGUgc2hvd3MgaXQncyB1c2VkIGJ5IHF1aXRlIGEgZmV3IG90aGVyIGRyaXZlcnM6IGBmZWxpeF92c2M5OTU5LmNgLCBgc2V2aWxsZV92c2M5OTUzLmNgLCBgYWx0ZXJhX3RzZV9tYWluLmNgLCBgZHBhYTItbWFjLmNgLCBgZW5ldGNfcGYuY2AsIGBmbWFuX21lbWFjLmNgLCBhbmQgYGR3bWFjLXNvY2ZwZ2EuY2AuIFJpZ2h0IGF3YXksIEkgc2VlIHRoZXNlIGFyZSBhbGwgc3BlY2lmaWMgdG8gcGFydGljdWxhciBoYXJkd2FyZTogTlhQJ3MgT2NlbG90IERTQSwgQWx0ZXJhJ3MgVFNFLCBGcmVlc2NhbGUncyBEUEFBMi9FTkVUQy9GTUFOLCBhbmQgU1RNaWNybydzIERXTUFDIFNPQ0ZQR0EuXG5cblRoZSBvYnZpb3VzIHF1ZXN0aW9uIHBvcHMgdXA6IENhbiBJIGV2ZW4gcmVhY2ggdGhpcyBjb2RlIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IEdpdmVuIHRoYXQgaXQncyBhbGwgaGFyZHdhcmUtZGVwZW5kZW50IGV0aGVybmV0IGRyaXZlcnMsIHRoZSBjaGFuY2VzIGZlZWwgc2xpbS4gSG9sZCBvbiwgdGhlIGBwY3MtbHlueGAgZHJpdmVyIGl0c2VsZiBpcyBhY3R1YWxseSBhIFBDUyBsaWJyYXJ5LiBDb3VsZCBJIHBvdGVudGlhbGx5IHRyaWdnZXIgaXQgdGhyb3VnaCBzb21lIHNvcnQgb2YgdmlydHVhbCBkZXZpY2U/IFByb2JhYmx5IG5vdC4gVGhlc2UgZHJpdmVycyBhcmUgaW50cmluc2ljYWxseSB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlLlxuXG5IbW0sIHdhaXQsIGBkd21hYy1zb2NmcGdhYCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3RtbWFjLiBgYWx0ZXJhX3RzZWAgaXMgYWxzbyBhIHBsYXRmb3JtIGRyaXZlci4gYGVuZXRjYCBpcyBhIFBDSSBkcml2ZXIgZm9yIE5YUCBFTkVUQywgYW5kIGBkcGFhMmAgaXMgZm9yIE5YUCBEUEFBMi4gTm9uZSBvZiB0aGVzZSBhcmUgc3RhbmRhcmQgZW11bGF0ZWQgZGV2aWNlcyBpbiBRRU1VLiBCYWNrIHRvIHNxdWFyZSBvbmUgLSBjYW4gYHBjcy1seW54YCBiZSBpbnN0YW50aWF0ZWQgYnkgYSBkdW1teSBkZXZpY2U/IEkgbmVlZCB0byBjaGVjayBgcGNzLWx5bnguY2AgaXRzZWxmIHRvIHNlZSAqaG93KiBpdCdzIGJyb3VnaHQgdG8gbGlmZS4gVGhhdCB3aWxsIGJlIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6MjQ6MTIuNTA3NDA0MTYzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MDEwMjU3MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibHlueF9wY3NfY3JlYXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q9NzQ9dGhpcyBkb2N1bWVudGF0aW9uLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zMTEtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdDozMTI6ICAgICAgICBwcml2LVxcdTAwM2VwY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihidXMsIDApO1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzEzLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zMTctXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdDozMTg6ICAgICAgICBwcml2LVxcdTAwM2VwY3MgPSBseW54X3Bjc19jcmVhdGVfZndub2RlKG9mX2Z3bm9kZV9oYW5kbGUobm9kZSkpO1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzE5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDMyLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjEwMzM6XFx0XFx0cGh5bGlua19wY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihmZWxpeC1cXHUwMDNlaW1kaW8sIHBvcnQpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTEwMzQtXFx0XFx0aWYgKElTX0VSUihwaHlsaW5rX3BjcykpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTg3OD1zdGF0aWMgaW50IHZzYzk5NTNfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MjItXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MjM6XFx0XFx0cGh5bGlua19wY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihmZWxpeC1cXHUwMDNlaW1kaW8sIGFkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTI0LVxcdFxcdGlmIChJU19FUlIocGh5bGlua19wY3MpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTM5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTM5NTpcXHRwcml2LVxcdTAwM2VwY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihwY3NfYnVzLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTM5Ni1cXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZXBjcykpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYz00NDc9c3RhdGljIGludCBkcGFhMl9wY3NfY3JlYXRlKHN0cnVjdCBkcGFhMl9tYWMgKm1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjQ2MTpcXHRwY3MgPSBseW54X3Bjc19jcmVhdGVfZndub2RlKG5vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00NjItXFx0Zndub2RlX2hhbmRsZV9wdXQobm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNDc1LVxcdFxcdG5ldGRldl9lcnIobWFjLVxcdTAwM2VuZXRfZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo0NzY6XFx0XFx0XFx0ICAgXFxcImx5bnhfcGNzX2NyZWF0ZV9md25vZGUoKSBmYWlsZWQ6ICVwZVxcXFxuXFxcIiwgcGNzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNDc3LVxcdFxcdHJldHVybiBQVFJfRVJSKHBjcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz0zND1zdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICplbmV0Y19wZl9jcmVhdGVfcGNzKHN0cnVjdCBlbmV0Y19wZiAqcGYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy0zNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6Mzc6XFx0cmV0dXJuIGx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KGJ1cywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtMzgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jPTExMjI9c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbWVtYWNfcGNzX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm1hY19ub2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jLTExMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jOjExMzI6XFx0cGNzID0gbHlueF9wY3NfY3JlYXRlX2Z3bm9kZShvZl9md25vZGVfaGFuZGxlKG5vZGUpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX21lbWFjLmMtMTEzMy1cXHRvZl9ub2RlX3B1dChub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz00OTY9c3RhdGljIGludCBzb2NmcGdhX2R3bWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01MzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjUzMjpcXHRwY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihwY3NfYnVzLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTMzLVxcdGlmIChJU19FUlIocGNzKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jPTI3OT1zdGF0aWMgY29uc3QgcGh5X2ludGVyZmFjZV90IGx5bnhfaW50ZXJmYWNlc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMjg5LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjI5MDpzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTI5MS17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMDktXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzEwOnN0cnVjdCBwaHlsaW5rX3BjcyAqbHlueF9wY3NfY3JlYXRlX21kaW9kZXYoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzExLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMxOC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozMTk6XFx0cGNzID0gbHlueF9wY3NfY3JlYXRlKG1kaW8pO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMzMC19XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzMxOkVYUE9SVF9TWU1CT0wobHlueF9wY3NfY3JlYXRlX21kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMzMi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMzMtLypcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozMzQ6ICogbHlueF9wY3NfY3JlYXRlX2Z3bm9kZSgpIGNyZWF0ZXMgYSBseW54IFBDUyBpbnN0YW5jZSBmcm9tIHRoZSBmd25vZGVcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMzUtICogZGV2aWNlIGluZGljYXRlZCBieSBub2RlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzQyLSAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjM0MzpzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9md25vZGUoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKm5vZGUpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM1NC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozNTU6XFx0cGNzID0gbHlueF9wY3NfY3JlYXRlKG1kaW8pO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM2Ni19XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzY3OkVYUE9SVF9TWU1CT0xfR1BMKGx5bnhfcGNzX2NyZWF0ZV9md25vZGUpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM2OC1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGNzLWx5bnguaC0xMS1cXG5pbmNsdWRlL2xpbnV4L3Bjcy1seW54Lmg6MTI6c3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGVfbWRpb2RldihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcik7XFxuaW5jbHVkZS9saW51eC9wY3MtbHlueC5oOjEzOnN0cnVjdCBwaHlsaW5rX3BjcyAqbHlueF9wY3NfY3JlYXRlX2Z3bm9kZShzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZSk7XFxuaW5jbHVkZS9saW51eC9wY3MtbHlueC5oLTE0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDoyNDoxNi4yMDg0MzU0MzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTk1MTU1NDkyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2VlIGlmIEkgY291bGQgdHJpZ2dlciB0aGUgYHBjcy1seW54YCBkcml2ZXIgdXNpbmcgYGR3bWFjLXNvY2ZwZ2EuY2AsIHdoaWNoLCBhcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYHN0bW1hY2AsIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQywgbWlnaHQgYmUgaW50ZXJlc3RpbmcuIEkga25vdyBgc3RtbWFjYCBpcyBkZXZpY2UgdHJlZS1pbnN0YW50aWFibGUuIEhvd2V2ZXIsIGBkd21hYy1zb2NmcGdhLmNgIHNwZWNpZmljYWxseSB0YXJnZXRzIEFsdGVyYSBTT0NGUEdBLiBDYW4gSSBldmVuIGdldCB0aGF0IHRvIHJ1biB1bmRlciBRRU1VPyBIbW0sIFFFTVUgaGFzIHNvbWUgQWx0ZXJhIGJvYXJkIHN1cHBvcnQsIGJ1dCByZWFsaXN0aWNhbGx5LCB3aXRoIGBzdG1tYWNgLCBJJ2QgYmUgbG9va2luZyBhdCBhIGRldmljZSB0cmVlIG92ZXJsYXkgaWYgaXQgKmlzKiBhIHBsYXRmb3JtIGRldmljZS5cblxuTm93LCB0aGUgYHBjcy1seW54YCBkcml2ZXIgaXRzZWxmLiBJcyBpdCB1c2VkIGdlbmVyaWNhbGx5IGJ5IGBzdG1tYWNgLCBvciBpcyBpdCBzcGVjaWZpYz8gQWgsIG9ubHkgYGR3bWFjLXNvY2ZwZ2EuY2AgdXNlcyBpdC4gTGV0IG1lIHRyeSB0byBzZWUgaWYgYGR3bWFjLXNvY2ZwZ2FgIGlzIGV2ZW4gcmVhY2hhYmxlLiBDYW4gSSBnZXQgYGx5bnhfcGNzX2NvbmZpZ2AgdG8gZmlyZSB0aHJvdWdoIGBwaHlsaW5rYCBzb21laG93PyBUaGVvcmV0aWNhbGx5LCB5ZXMsIGlmIEkgY2FuIGluc3RhbnRpYXRlIGEgZGV2aWNlIHRoYXQgdXNlcyBgcGNzLWx5bnhgLlxuXG5CdXQgd2FpdCwgaXMgdGhpcyBjaGFuZ2UgcmVhbGx5IHdvcnRoIGZ1enppbmc/IEl0J3MgbGl0ZXJhbGx5IGp1c3QgYWRkaW5nIHN1cHBvcnQgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVJgIHRvIGEgZmV3IHN3aXRjaCBzdGF0ZW1lbnRzLiBUaGUgY29kZSBpcyBtaW5pbWFsOiBlaXRoZXIgcmV0dXJuIGEgY29uc3RhbnQgYExJTktfSU5CQU5EX0RJU0FCTEVgIG9yIGNhbGwgYHBoeWxpbmtfbWlpX2M0NV9wY3NfZ2V0X3N0YXRlYC4gQmFzaWNhbGx5LCBpdCdzIHRoZSBzYW1lIGxvZ2ljIGFzIDEwR0JBU0VSLCBqdXN0IGZvciB0aGUgbmV3IG1vZGUuIE5vdywgZG9lcyB0aGlzIG5ldyBQSFkgbW9kZSBwb3RlbnRpYWxseSBlbmFibGUgbmV3IHBhdGhzIGluIGBwaHlsaW5rYD8gSG9sZCBvbiwgYHBoeWxpbmtgIGFscmVhZHkgc3VwcG9ydHMgYFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUmAuIFRoZSBjaGFuZ2VzIGFyZSBlbnRpcmVseSBjb25maW5lZCB0byBgcGNzLWx5bnguY2AuXG5cbkNvbnNpZGVyaW5nIGFsbCBvZiB0aGlzLCBJJ20gbGVhbmluZyB0b3dhcmRzIFwibm8uXCIgSXQncyBhIHRyaXZpYWwgYWRkaXRpb24gb2YgYW4gZW51bSB2YWx1ZSB0byBhIHN3aXRjaCBzdGF0ZW1lbnQgd2l0aGluIGEgc3BlY2lmaWMgaGFyZHdhcmUgUENTIGRyaXZlci5cblxuRnVydGhlcm1vcmUsIGl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgSSBjYW4gdHJpZ2dlciB0aGlzIGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIFZNLiBgcGNzLWx5bnhgIGlzIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmU6IE5YUCBPY2Vsb3QsIEFsdGVyYSBUU0UsIEZyZWVzY2FsZSBEUEFBMiwgb3IgU09DRlBHQSBEV01BQy4gU3RhbmRhcmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhvc2UsIG9yIGlmIGl0IGRvZXMsIGl0J3Mgd2l0aCBzcGVjaWZpYyBkZXZpY2UgdHJlZSBzZXR1cHMgdGhhdCBzeXprYWxsZXIgbGlrZWx5IHdvbid0IGhhdmUuIFN5emthbGxlciB1c3VhbGx5IGZvY3VzZXMgb24gZHJpdmVycyB0aGF0IGNhbiBiZSBlbXVsYXRlZCwgbGlrZSBQQ0kgb3IgVVNCLiBUaGUgYGVuZXRjYCBkcml2ZXIgaXMgYSBQQ0kgZGV2aWNlLCBzbyB0aGF0IG1pZ2h0IGJlIHdvcnRoIGxvb2tpbmcgaW50by4gTGV0IG1lIGNoZWNrIGBlbmV0Y19wZi5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA2MSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDoyNDoyOC4xNTk5OTQzNzlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEzNTExODgzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbmV0Y19wZl9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz03ODc9c3RhdGljIGNvbnN0IHN0cnVjdCBlbmV0Y19wZl9vcHMgZW5ldGNfcGZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtNzk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjc5NTpzdGF0aWMgaW50IGVuZXRjX3BmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTc5Ni1cXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz05MzM9c3RhdGljIHZvaWQgZW5ldGNfZml4dXBfY2xlYXJfcnNzX3JmcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzOC1cXHQvKiBPbmx5IGFwcGx5IHF1aXJrIGZvciBkaXNhYmxlZCBmdW5jdGlvbnMuIEZvciB0aGUgb25lc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjkzOTpcXHQgKiB0aGF0IGFyZSBlbmFibGVkLCBlbmV0Y19wZl9wcm9iZSgpIHdpbGwgYXBwbHkgaXQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTQwLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9OTU3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBlbmV0Y19wZl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NTktXFx0LmlkX3RhYmxlID0gZW5ldGNfcGZfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTYwOlxcdC5wcm9iZSA9IGVuZXRjX3BmX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk2MS1cXHQucmVtb3ZlID0gZW5ldGNfcGZfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDoyNDozMi4yOTUxMTg3ODdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDMxNjEzNDA5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9ZmFsc2U6IEEgUXVpY2sgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHRoaXMgZXZlbiAqYmUqIGZ1enplZCBlZmZlY3RpdmVseT8gSSdtIGRlYWxpbmcgd2l0aCBhbiBgZW5ldGNgIFBDSSBkcml2ZXIsIGFuZCB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYHN5emthbGxlcmAgY2FuIGV2ZW4gdG91Y2ggaXQuIEkga25vdyBpdCAqY2FuKiBmdXp6IFBDSSBkcml2ZXJzLCB1c2luZyBgc3l6X3BjaV92cGNpYCBvciBzaW1pbGFyLCBidXQgdHlwaWNhbGx5IHRoYXQgcmVxdWlyZXMgdGhlIGRyaXZlciB0byBiZSBib3VuZC4gSG1tLCB0aGlzIHNwZWNpZmljIHBhdGNoIGxvb2tzIHByZXR0eSBiZW5pZ24sIGp1c3QgYWRkaW5nIGBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVJgIHRvIGEgc3dpdGNoIHN0YXRlbWVudC4gSXMgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlIGhlcmUgcmVhbGx5IHdvcnRoIHRoZSBmdXp6aW5nIGVmZm9ydD9cblxuTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXIgb24gdGhpczogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIC4uLiBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIC4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5gZW5ldGNgIGlzIGEgRnJlZXNjYWxlL05YUCBFTkVUQyBHaWdhYml0IEV0aGVybmV0IENvbnRyb2xsZXIuIFRoYXQgc291bmRzIGxpa2Ugc3BlY2lmaWMgaGFyZHdhcmUgdG8gbWUuIEFuZCBsb29raW5nIGF0IHRoZSByZWxhdGVkIGBwY3MtbHlueGAgZHJpdmVyLCB0aGF0J3MgYWxzbyBOWFAvRnJlZXNjYWxlIGFuZCBBbHRlcmEgaGFyZHdhcmUsIGRlZmluaXRlbHkgbm90IHNvbWV0aGluZyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuXG5TbywgYWNjb3JkaW5nIHRvIHRoZSBydWxlLCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoaXMgZmFsbHMgdW5kZXIgdGhlIGhhcmR3YXJlLXNwZWNpZmljLCBub24tZW11bGF0ZWQgZHJpdmVyIGNhdGVnb3J5LiBJJ20gbGVhbmluZyB0b3dhcmRzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0J3MgcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgYHBjcy1seW54YCBpcyB1c2VkIGJ5IGFueXRoaW5nIGVsc2UuIEFoYSwgSSBhbHJlYWR5IGdyZXBwZWQgZm9yIGl0IGFuZCBpdCdzIHVzZWQgYnkgc2V2ZXJhbCBvdGhlciBkcml2ZXJzOiBgZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmNgLCBgZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jYC5cblxuWWVwLCBhbGwgdGhlc2UgYXJlIGFsc28gc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycywgZ2VuZXJhbGx5IGZvciBOWFAvRnJlZXNjYWxlIGFuZCBBbHRlcmEvSW50ZWwgRlBHQXMuIE5vbmUgb2YgdGhlc2UgYXJlIHN0YW5kYXJkIGVtdWxhdGVkIGRldmljZXMgaW4gUUVNVS4gQW5kIHRoZSBjaGFuZ2UsIGxpa2UgSSBtZW50aW9uZWQgZWFybGllciwgaXMganVzdCBhZGRpbmcgYSBuZXcgUEhZIG1vZGUgaW4gYSBzd2l0Y2ggY2FzZS5cblxuU28sIGFmdGVyIGEgdGhvcm91Z2ggbG9vaywgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIHJpZ2h0IGNhbGwgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk0MCwiT3V0cHV0VG9rZW5zIjoxMTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6MjQ6NDIuNjExMjU1NzIzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVIgdG8gdGhlIEx5bnggUENTIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVycyAoZS5nLiwgTlhQIEVORVRDLCBEUEFBMiwgT2NlbG90IERTQSwgQWx0ZXJhIFRTRSwgU09DRlBHQSBEV01BQykgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSB0cml2aWFsIGFkZGl0aW9ucyB0byBzd2l0Y2ggc3RhdGVtZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSIHRvIHRoZSBMeW54IFBDUyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZXhjbHVzaXZlbHkgYnkgaGFyZHdhcmUtc3BlY2lmaWMgRXRoZXJuZXQgY29udHJvbGxlcnMgKGUuZy4sIE5YUCBFTkVUQywgRFBBQTIsIE9jZWxvdCBEU0EsIEFsdGVyYSBUU0UsIFNPQ0ZQR0EgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgdHJpdmlhbCBhZGRpdGlvbnMgdG8gc3dpdGNoIHN0YXRlbWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDoyNDo0Mi42MTEyOTgxMzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowg5hsx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-25 14:21:59 +0000 UTC FinishedAt: 2026-08-25 14:24:44 +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+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVIgdG8gdGhlIEx5bnggUENTIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVycyAoZS5nLiwgTlhQIEVORVRDLCBEUEFBMiwgT2NlbG90IERTQSwgQWx0ZXJhIFRTRSwgU09DRlBHQSBEV01BQykgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSB0cml2aWFsIGFkZGl0aW9ucyB0byBzd2l0Y2ggc3RhdGVtZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6MjM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxMGI3ZDlkY2E4MjYzMjlkNjQ4ZGJiZjA0NDQxYWFkNWVhZTNhYjYwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMTQ6MjM6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguY1xuaW5kZXggYTkyMDgxNTYwZTY0MS4uZGE0Zjk5MDU5ZWVmNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguY1xuQEAgLTQ2LDYgJiM0Mzs0Niw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbHlueF9wY3NfaW5iYW5kX2NhcHMoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG4gXHRcdHJldHVybiBMSU5LX0lOQkFORF9ESVNBQkxFIHwgTElOS19JTkJBTkRfRU5BQkxFO1xuIFxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVI6XG4gXHRcdHJldHVybiBMSU5LX0lOQkFORF9ESVNBQkxFO1xuIFxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcbkBAIC05Nyw2ICYjNDM7OTgsNyBAQCBzdGF0aWMgdm9pZCBseW54X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbiBcdFx0bHlueF9wY3NfZ2V0X3N0YXRlX3VzeGdtaWkobHlueC1cdTAwM2VtZGlvLCBzdGF0ZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVI6XG4gXHRcdHBoeWxpbmtfbWlpX2M0NV9wY3NfZ2V0X3N0YXRlKGx5bngtXHUwMDNlbWRpbywgc3RhdGUpO1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG5AQCAtMTg4LDcgJiM0MzsxOTAsOCBAQCBzdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuIFx0XHRyZXR1cm4gbHlueF9wY3NfY29uZmlnX3VzeGdtaWkobHlueC1cdTAwM2VtZGlvLCBpZm1vZGUsIGFkdmVydGlzaW5nLFxuIFx0XHRcdFx0XHQgICAgICAgbmVnX21vZGUpO1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XG4tXHRcdC8qIE5vdGhpbmcgdG8gZG8gaGVyZSBmb3IgMTBHQkFTRVIgKi9cbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUjpcbiYjNDM7XHRcdC8qIE5vdGhpbmcgdG8gZG8gaGVyZSBmb3IgMTBHQkFTRVIgYW5kIDI1R0JBU0VSICovXG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuQEAgLTI3OSw2ICYjNDM7MjgyLDcgQEAgc3RhdGljIGNvbnN0IHBoeV9pbnRlcmZhY2VfdCBseW54X2ludGVyZmFjZXNbXSA9IHtcbiBcdFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgsXG4gXHRQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLFxuIFx0UEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSLFxuJiM0MztcdFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUixcbiBcdFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJLFxuIFx0UEhZX0lOVEVSRkFDRV9NT0RFXzEwR19RWEdNSUksXG4gfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNDoyMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVIgdG8gdGhlIEx5bnggUENTIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVycyAoZS5nLiwgTlhQIEVORVRDLCBEUEFBMiwgT2NlbG90IERTQSwgQWx0ZXJhIFRTRSwgU09DRlBHQSBEV01BQykgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSB0cml2aWFsIGFkZGl0aW9ucyB0byBzd2l0Y2ggc3RhdGVtZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMGI3ZDlkY2E4MjYzMjlkNjQ4ZGJiZjA0NDQxYWFkNWVhZTNhYjYwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMjUgMTQ6MjM6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jCmluZGV4IGE5MjA4MTU2MGU2NDEuLmRhNGY5OTA1OWVlZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jCkBAIC00Niw2ICYjNDM7NDYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGx5bnhfcGNzX2luYmFuZF9jYXBzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLAogCQlyZXR1cm4gTElOS19JTkJBTkRfRElTQUJMRSB8IExJTktfSU5CQU5EX0VOQUJMRTsKIAogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSOgomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUjoKIAkJcmV0dXJuIExJTktfSU5CQU5EX0RJU0FCTEU7CiAKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOgpAQCAtOTcsNiAmIzQzOzk4LDcgQEAgc3RhdGljIHZvaWQgbHlueF9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsCiAJCWx5bnhfcGNzX2dldF9zdGF0ZV91c3hnbWlpKGx5bngtJmd0O21kaW8sIHN0YXRlKTsKIAkJYnJlYWs7CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSOgogCQlwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZShseW54LSZndDttZGlvLCBzdGF0ZSk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CkBAIC0xODgsNyAmIzQzOzE5MCw4IEBAIHN0YXRpYyBpbnQgbHlueF9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsCiAJCXJldHVybiBseW54X3Bjc19jb25maWdfdXN4Z21paShseW54LSZndDttZGlvLCBpZm1vZGUsIGFkdmVydGlzaW5nLAogCQkJCQkgICAgICAgbmVnX21vZGUpOwogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSOgotCQkvKiBOb3RoaW5nIHRvIGRvIGhlcmUgZm9yIDEwR0JBU0VSICovCiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSOgomIzQzOwkJLyogTm90aGluZyB0byBkbyBoZXJlIGZvciAxMEdCQVNFUiBhbmQgMjVHQkFTRVIgKi8KIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwpAQCAtMjc5LDYgJiM0MzsyODIsNyBAQCBzdGF0aWMgY29uc3QgcGh5X2ludGVyZmFjZV90IGx5bnhfaW50ZXJmYWNlc1tdID0gewogCVBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgsCiAJUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCwKIAlQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIsCiYjNDM7CVBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUiwKIAlQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSSwKIAlQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSSwKIH07CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDAKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUENTLUx5bnggRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgcGNzLWx5bnguY2AgZHJpdmVyLiBJdCBzZWVtcyBsaWtlIHNvbWVvbmUmIzM5O3MgYWRkZWQgYFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUmAgdG8gc2V2ZXJhbCBzZWN0aW9uczogYGx5bnhfcGNzX2luYmFuZF9jYXBzYCwgYGx5bnhfcGNzX2dldF9zdGF0ZWAsIGBseW54X3Bjc19jb25maWdgLCBhbmQgYGx5bnhfaW50ZXJmYWNlc2AuIFJpZ2h0IGF3YXksIG15IGV4cGVydCBleWUgdGVsbHMgbWUgdGhpcyBpcyBhYm91dCBlbmFibGluZyBvciBjb25maWd1cmluZyAyNUdCQVNFLVIgc3VwcG9ydCwgcHJvYmFibHkgb24gYW4gRXRoZXJuZXQgUEhZIG9yIE1BQy4gSSBrbm93IHRoaXMgZHJpdmVyIGlzIGZvciBhIFBoeXNpY2FsIENvZGluZyBTdWJsYXllciwgc28gaXQgZGVhbHMgd2l0aCB0aGUgbG93LWxldmVsIHBoeXNpY2FsIGxheWVyIHNpZ25hbGluZy4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIHBsYXlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENvbnNpZGVyaW5nIGl0JiMzOTtzIGEgUENTIGRyaXZlciwgYW5kIHRob3NlIGFyZSBvZnRlbiBwYWlyZWQgd2l0aCBFdGhlcm5ldCBNQUMgZHJpdmVycywgSSBuZWVkIHRvIGtub3cgaWYgd2UgY2FuIGFjdHVhbGx5IHJlYWNoIGBwY3MtbHlueC5jYCBpbiBhIHZpcnR1YWxpemVkIHNpdHVhdGlvbi4gQXJlIHRoZSBkZXBlbmRlbmNpZXMgY29ycmVjdD8gV2hhdCBtb2R1bGVzIGFyZSBjYWxsaW5nIHRoaXMgZHJpdmVyPyBMZXQgbWUgY2hlY2sgd2hhdCB1c2VzIGBwY3MtbHlueGAgdG8gZGV0ZXJtaW5lIHRoZSBpbXBhY3QuIEdvdHRhIHRyYWNlIGl0cyBkZXBlbmRlbmNpZXMgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZS4gVGhpcyBjb3VsZCBiZSBhbiBpbXBvcnRhbnQgYWRkaXRpb24sIGFuZCBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Bjcy1seW54JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O01BSU5UQUlORVJTPTE1NTU0PVM6XHRTdXBwb3J0ZWRcbk1BSU5UQUlORVJTOjE1NTU1OkY6XHRkcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguY1xuTUFJTlRBSU5FUlM6MTU1NTY6RjpcdGluY2x1ZGUvbGludXgvcGNzLWx5bnguaFxuTUFJTlRBSU5FUlMtMTU1NTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTQtI2luY2x1ZGUgXHUwMDNjbGludXgvZHNhL29jZWxvdC5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxNTojaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtbHlueC5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xNi0jaW5jbHVkZSBcdTAwM2NuZXQvcGt0X3NjaGVkLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTExLSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX21kaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzoxMjojaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtbHlueC5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTEzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2RzYS9vY2Vsb3QuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0zNC0jaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9uZXQuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjM1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0zNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2FjcGkuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjU6I2luY2x1ZGUgXHUwMDNjbGludXgvcGNzLWx5bnguaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYtI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5L3BoeS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9uZXQuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTojaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtbHlueC5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy0xMC0jaW5jbHVkZSBcJiMzNDtlbmV0Y19pZXJiLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX21lbWFjLmMtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jOjE0OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYy0xNS0jaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmg9MTIwOT1zdHJ1Y3QgbXRrX3NvY19kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oLTEyNjQtICogICAgICAgICAgICAgICAgICAgICAgU0dNSUkgYW5kIEdlUEhZIHBhdGhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmg6MTI2NTogKiBAc2dtaWlfcGNzOlx0XHRQb2ludGVycyB0byBtdGstcGNzLWx5bnhpIHBoeWxpbmtfcGNzIGluc3RhbmNlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaC0xMjY2LSAqIEBwY3RsOlx0XHRUaGUgcmVnaXN0ZXIgbWFwIHBvaW50aW5nIGF0IHRoZSByYW5nZSB1c2VkIHRvIHNldHVwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTE0LSNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8vbWRpby1yZWdtYXAuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjE1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy0xNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9yZXNldC5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1BDU19YUENTKVx0XHQmIzQzOz0gcGNzX3hwY3Mub1xuZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX1BDU19MWU5YKVx0XHQmIzQzOz0gcGNzLWx5bngub1xuZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX1BDU19NVEtfTFlOWEkpXHQmIzQzOz0gcGNzLW10ay1seW54aS5vXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtNy0jaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjg6I2luY2x1ZGUgXHUwMDNjbGludXgvcGNzLWx5bnguaFx1MDAzZVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtOS0jaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwOQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDQwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgcGNzLWx5bnguY2AqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHBjcy1seW54LmNgIGRyaXZlci4gVGhlIGNvZGUgc2hvd3MgaXQmIzM5O3MgdXNlZCBieSBxdWl0ZSBhIGZldyBvdGhlciBkcml2ZXJzOiBgZmVsaXhfdnNjOTk1OS5jYCwgYHNldmlsbGVfdnNjOTk1My5jYCwgYGFsdGVyYV90c2VfbWFpbi5jYCwgYGRwYWEyLW1hYy5jYCwgYGVuZXRjX3BmLmNgLCBgZm1hbl9tZW1hYy5jYCwgYW5kIGBkd21hYy1zb2NmcGdhLmNgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGVzZSBhcmUgYWxsIHNwZWNpZmljIHRvIHBhcnRpY3VsYXIgaGFyZHdhcmU6IE5YUCYjMzk7cyBPY2Vsb3QgRFNBLCBBbHRlcmEmIzM5O3MgVFNFLCBGcmVlc2NhbGUmIzM5O3MgRFBBQTIvRU5FVEMvRk1BTiwgYW5kIFNUTWljcm8mIzM5O3MgRFdNQUMgU09DRlBHQS4KClRoZSBvYnZpb3VzIHF1ZXN0aW9uIHBvcHMgdXA6IENhbiBJIGV2ZW4gcmVhY2ggdGhpcyBjb2RlIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IEdpdmVuIHRoYXQgaXQmIzM5O3MgYWxsIGhhcmR3YXJlLWRlcGVuZGVudCBldGhlcm5ldCBkcml2ZXJzLCB0aGUgY2hhbmNlcyBmZWVsIHNsaW0uIEhvbGQgb24sIHRoZSBgcGNzLWx5bnhgIGRyaXZlciBpdHNlbGYgaXMgYWN0dWFsbHkgYSBQQ1MgbGlicmFyeS4gQ291bGQgSSBwb3RlbnRpYWxseSB0cmlnZ2VyIGl0IHRocm91Z2ggc29tZSBzb3J0IG9mIHZpcnR1YWwgZGV2aWNlPyBQcm9iYWJseSBub3QuIFRoZXNlIGRyaXZlcnMgYXJlIGludHJpbnNpY2FsbHkgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4KCkhtbSwgd2FpdCwgYGR3bWFjLXNvY2ZwZ2FgIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzdG1tYWMuIGBhbHRlcmFfdHNlYCBpcyBhbHNvIGEgcGxhdGZvcm0gZHJpdmVyLiBgZW5ldGNgIGlzIGEgUENJIGRyaXZlciBmb3IgTlhQIEVORVRDLCBhbmQgYGRwYWEyYCBpcyBmb3IgTlhQIERQQUEyLiBOb25lIG9mIHRoZXNlIGFyZSBzdGFuZGFyZCBlbXVsYXRlZCBkZXZpY2VzIGluIFFFTVUuIEJhY2sgdG8gc3F1YXJlIG9uZSAtIGNhbiBgcGNzLWx5bnhgIGJlIGluc3RhbnRpYXRlZCBieSBhIGR1bW15IGRldmljZT8gSSBuZWVkIHRvIGNoZWNrIGBwY3MtbHlueC5jYCBpdHNlbGYgdG8gc2VlICpob3cqIGl0JiMzOTtzIGJyb3VnaHQgdG8gbGlmZS4gVGhhdCB3aWxsIGJlIHRoZSBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bHlueF9wY3NfY3JlYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q9NzQ9dGhpcyBkb2N1bWVudGF0aW9uLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzExLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdDozMTI6ICAgICAgICBwcml2LVx1MDAzZXBjcyA9IGx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KGJ1cywgMCk7XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTMxMy1cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTMxNy1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzE4OiAgICAgICAgcHJpdi1cdTAwM2VwY3MgPSBseW54X3Bjc19jcmVhdGVfZndub2RlKG9mX2Z3bm9kZV9oYW5kbGUobm9kZSkpO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zMTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAzMi1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjEwMzM6XHRcdHBoeWxpbmtfcGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYoZmVsaXgtXHUwMDNlaW1kaW8sIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAzNC1cdFx0aWYgKElTX0VSUihwaHlsaW5rX3BjcykpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYz04Nzg9c3RhdGljIGludCB2c2M5OTUzX21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkyMi1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6OTIzOlx0XHRwaHlsaW5rX3BjcyA9IGx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KGZlbGl4LVx1MDAzZWltZGlvLCBhZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTI0LVx0XHRpZiAoSVNfRVJSKHBoeWxpbmtfcGNzKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTEyOD1zdGF0aWMgaW50IGFsdGVyYV90c2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTM5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxMzk1Olx0cHJpdi1cdTAwM2VwY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihwY3NfYnVzLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xMzk2LVx0aWYgKElTX0VSUihwcml2LVx1MDAzZXBjcykpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NDQ3PXN0YXRpYyBpbnQgZHBhYTJfcGNzX2NyZWF0ZShzdHJ1Y3QgZHBhYTJfbWFjICptYWMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTQ2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo0NjE6XHRwY3MgPSBseW54X3Bjc19jcmVhdGVfZndub2RlKG5vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTQ2Mi1cdGZ3bm9kZV9oYW5kbGVfcHV0KG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00NzUtXHRcdG5ldGRldl9lcnIobWFjLVx1MDAzZW5ldF9kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NDc2Olx0XHRcdCAgIFwmIzM0O2x5bnhfcGNzX2NyZWF0ZV9md25vZGUoKSBmYWlsZWQ6ICVwZVxcblwmIzM0OywgcGNzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00NzctXHRcdHJldHVybiBQVFJfRVJSKHBjcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9MzQ9c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqZW5ldGNfcGZfY3JlYXRlX3BjcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTM2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjM3Olx0cmV0dXJuIGx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KGJ1cywgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy0zOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jPTExMjI9c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbWVtYWNfcGNzX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm1hY19ub2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYy0xMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jOjExMzI6XHRwY3MgPSBseW54X3Bjc19jcmVhdGVfZndub2RlKG9mX2Z3bm9kZV9oYW5kbGUobm9kZSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jLTExMzMtXHRvZl9ub2RlX3B1dChub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM9NDk2PXN0YXRpYyBpbnQgc29jZnBnYV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTUzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo1MzI6XHRwY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihwY3NfYnVzLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01MzMtXHRpZiAoSVNfRVJSKHBjcykpXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM9Mjc5PXN0YXRpYyBjb25zdCBwaHlfaW50ZXJmYWNlX3QgbHlueF9pbnRlcmZhY2VzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMjg5LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MjkwOnN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW8pXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0yOTEte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMwOS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjMxMDpzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzExLXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMTgtXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozMTk6XHRwY3MgPSBseW54X3Bjc19jcmVhdGUobWRpbyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMjAtXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzMwLX1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjMzMTpFWFBPUlRfU1lNQk9MKGx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMzMi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMzMy0vKlxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzM0OiAqIGx5bnhfcGNzX2NyZWF0ZV9md25vZGUoKSBjcmVhdGVzIGEgbHlueCBQQ1MgaW5zdGFuY2UgZnJvbSB0aGUgZndub2RlXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMzUtICogZGV2aWNlIGluZGljYXRlZCBieSBub2RlLlxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM0Mi0gKi9cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjM0MzpzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9md25vZGUoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKm5vZGUpXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNDQte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM1NC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjM1NTpcdHBjcyA9IGx5bnhfcGNzX2NyZWF0ZShtZGlvKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM1Ni1cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNjYtfVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzY3OkVYUE9SVF9TWU1CT0xfR1BMKGx5bnhfcGNzX2NyZWF0ZV9md25vZGUpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzY4LVxuLS1cbmluY2x1ZGUvbGludXgvcGNzLWx5bnguaC0xMS1cbmluY2x1ZGUvbGludXgvcGNzLWx5bnguaDoxMjpzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKTtcbmluY2x1ZGUvbGludXgvcGNzLWx5bnguaDoxMzpzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9md25vZGUoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKm5vZGUpO1xuaW5jbHVkZS9saW51eC9wY3MtbHlueC5oLTE0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNjEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA4MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2VlIGlmIEkgY291bGQgdHJpZ2dlciB0aGUgYHBjcy1seW54YCBkcml2ZXIgdXNpbmcgYGR3bWFjLXNvY2ZwZ2EuY2AsIHdoaWNoLCBhcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYHN0bW1hY2AsIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQywgbWlnaHQgYmUgaW50ZXJlc3RpbmcuIEkga25vdyBgc3RtbWFjYCBpcyBkZXZpY2UgdHJlZS1pbnN0YW50aWFibGUuIEhvd2V2ZXIsIGBkd21hYy1zb2NmcGdhLmNgIHNwZWNpZmljYWxseSB0YXJnZXRzIEFsdGVyYSBTT0NGUEdBLiBDYW4gSSBldmVuIGdldCB0aGF0IHRvIHJ1biB1bmRlciBRRU1VPyBIbW0sIFFFTVUgaGFzIHNvbWUgQWx0ZXJhIGJvYXJkIHN1cHBvcnQsIGJ1dCByZWFsaXN0aWNhbGx5LCB3aXRoIGBzdG1tYWNgLCBJJiMzOTtkIGJlIGxvb2tpbmcgYXQgYSBkZXZpY2UgdHJlZSBvdmVybGF5IGlmIGl0ICppcyogYSBwbGF0Zm9ybSBkZXZpY2UuCgpOb3csIHRoZSBgcGNzLWx5bnhgIGRyaXZlciBpdHNlbGYuIElzIGl0IHVzZWQgZ2VuZXJpY2FsbHkgYnkgYHN0bW1hY2AsIG9yIGlzIGl0IHNwZWNpZmljPyBBaCwgb25seSBgZHdtYWMtc29jZnBnYS5jYCB1c2VzIGl0LiBMZXQgbWUgdHJ5IHRvIHNlZSBpZiBgZHdtYWMtc29jZnBnYWAgaXMgZXZlbiByZWFjaGFibGUuIENhbiBJIGdldCBgbHlueF9wY3NfY29uZmlnYCB0byBmaXJlIHRocm91Z2ggYHBoeWxpbmtgIHNvbWVob3c/IFRoZW9yZXRpY2FsbHksIHllcywgaWYgSSBjYW4gaW5zdGFudGlhdGUgYSBkZXZpY2UgdGhhdCB1c2VzIGBwY3MtbHlueGAuCgpCdXQgd2FpdCwgaXMgdGhpcyBjaGFuZ2UgcmVhbGx5IHdvcnRoIGZ1enppbmc/IEl0JiMzOTtzIGxpdGVyYWxseSBqdXN0IGFkZGluZyBzdXBwb3J0IGZvciBgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSYCB0byBhIGZldyBzd2l0Y2ggc3RhdGVtZW50cy4gVGhlIGNvZGUgaXMgbWluaW1hbDogZWl0aGVyIHJldHVybiBhIGNvbnN0YW50IGBMSU5LX0lOQkFORF9ESVNBQkxFYCBvciBjYWxsIGBwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZWAuIEJhc2ljYWxseSwgaXQmIzM5O3MgdGhlIHNhbWUgbG9naWMgYXMgMTBHQkFTRVIsIGp1c3QgZm9yIHRoZSBuZXcgbW9kZS4gTm93LCBkb2VzIHRoaXMgbmV3IFBIWSBtb2RlIHBvdGVudGlhbGx5IGVuYWJsZSBuZXcgcGF0aHMgaW4gYHBoeWxpbmtgPyBIb2xkIG9uLCBgcGh5bGlua2AgYWxyZWFkeSBzdXBwb3J0cyBgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSYC4gVGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IGNvbmZpbmVkIHRvIGBwY3MtbHlueC5jYC4KCkNvbnNpZGVyaW5nIGFsbCBvZiB0aGlzLCBJJiMzOTttIGxlYW5pbmcgdG93YXJkcyAmIzM0O25vLiYjMzQ7IEl0JiMzOTtzIGEgdHJpdmlhbCBhZGRpdGlvbiBvZiBhbiBlbnVtIHZhbHVlIHRvIGEgc3dpdGNoIHN0YXRlbWVudCB3aXRoaW4gYSBzcGVjaWZpYyBoYXJkd2FyZSBQQ1MgZHJpdmVyLgoKRnVydGhlcm1vcmUsIGl0JiMzOTtzIGhpZ2hseSB1bmxpa2VseSB0aGF0IEkgY2FuIHRyaWdnZXIgdGhpcyBpbiBhIHN0YW5kYXJkIHN5emthbGxlciBWTS4gYHBjcy1seW54YCBpcyB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlOiBOWFAgT2NlbG90LCBBbHRlcmEgVFNFLCBGcmVlc2NhbGUgRFBBQTIsIG9yIFNPQ0ZQR0EgRFdNQUMuIFN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aG9zZSwgb3IgaWYgaXQgZG9lcywgaXQmIzM5O3Mgd2l0aCBzcGVjaWZpYyBkZXZpY2UgdHJlZSBzZXR1cHMgdGhhdCBzeXprYWxsZXIgbGlrZWx5IHdvbiYjMzk7dCBoYXZlLiBTeXprYWxsZXIgdXN1YWxseSBmb2N1c2VzIG9uIGRyaXZlcnMgdGhhdCBjYW4gYmUgZW11bGF0ZWQsIGxpa2UgUENJIG9yIFVTQi4gVGhlIGBlbmV0Y2AgZHJpdmVyIGlzIGEgUENJIGRldmljZSwgc28gdGhhdCBtaWdodCBiZSB3b3J0aCBsb29raW5nIGludG8uIExldCBtZSBjaGVjayBgZW5ldGNfcGYuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5ldGNfcGZfcHJvYmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9Nzg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZW5ldGNfcGZfb3BzIGVuZXRjX3BmX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy03OTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo3OTU6c3RhdGljIGludCBlbmV0Y19wZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTc5Ni1cdFx0XHQgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9OTMzPXN0YXRpYyB2b2lkIGVuZXRjX2ZpeHVwX2NsZWFyX3Jzc19yZnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTM4LVx0LyogT25seSBhcHBseSBxdWlyayBmb3IgZGlzYWJsZWQgZnVuY3Rpb25zLiBGb3IgdGhlIG9uZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjkzOTpcdCAqIHRoYXQgYXJlIGVuYWJsZWQsIGVuZXRjX3BmX3Byb2JlKCkgd2lsbCBhcHBseSBpdC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0MC1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jPTk1Nz1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZW5ldGNfcGZfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk1OS1cdC5pZF90YWJsZSA9IGVuZXRjX3BmX2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTYwOlx0LnByb2JlID0gZW5ldGNfcGZfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NjEtXHQucmVtb3ZlID0gZW5ldGNfcGZfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5NDAKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogNTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogQSBRdWljayBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB0aGlzIGV2ZW4gKmJlKiBmdXp6ZWQgZWZmZWN0aXZlbHk/IEkmIzM5O20gZGVhbGluZyB3aXRoIGFuIGBlbmV0Y2AgUENJIGRyaXZlciwgYW5kIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciBgc3l6a2FsbGVyYCBjYW4gZXZlbiB0b3VjaCBpdC4gSSBrbm93IGl0ICpjYW4qIGZ1enogUENJIGRyaXZlcnMsIHVzaW5nIGBzeXpfcGNpX3ZwY2lgIG9yIHNpbWlsYXIsIGJ1dCB0eXBpY2FsbHkgdGhhdCByZXF1aXJlcyB0aGUgZHJpdmVyIHRvIGJlIGJvdW5kLiBIbW0sIHRoaXMgc3BlY2lmaWMgcGF0Y2ggbG9va3MgcHJldHR5IGJlbmlnbiwganVzdCBhZGRpbmcgYFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUmAgdG8gYSBzd2l0Y2ggc3RhdGVtZW50LiBJcyB0aGUgZnVuY3Rpb25hbCBjaGFuZ2UgaGVyZSByZWFsbHkgd29ydGggdGhlIGZ1enppbmcgZWZmb3J0PwoKTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXIgb24gdGhpczogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIC4uLiBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIC4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OwoKYGVuZXRjYCBpcyBhIEZyZWVzY2FsZS9OWFAgRU5FVEMgR2lnYWJpdCBFdGhlcm5ldCBDb250cm9sbGVyLiBUaGF0IHNvdW5kcyBsaWtlIHNwZWNpZmljIGhhcmR3YXJlIHRvIG1lLiBBbmQgbG9va2luZyBhdCB0aGUgcmVsYXRlZCBgcGNzLWx5bnhgIGRyaXZlciwgdGhhdCYjMzk7cyBhbHNvIE5YUC9GcmVlc2NhbGUgYW5kIEFsdGVyYSBoYXJkd2FyZSwgZGVmaW5pdGVseSBub3Qgc29tZXRoaW5nIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCgpTbywgYWNjb3JkaW5nIHRvIHRoZSBydWxlLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGlzIGZhbGxzIHVuZGVyIHRoZSBoYXJkd2FyZS1zcGVjaWZpYywgbm9uLWVtdWxhdGVkIGRyaXZlciBjYXRlZ29yeS4gSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIGBwY3MtbHlueGAgaXMgdXNlZCBieSBhbnl0aGluZyBlbHNlLiBBaGEsIEkgYWxyZWFkeSBncmVwcGVkIGZvciBpdCBhbmQgaXQmIzM5O3MgdXNlZCBieSBzZXZlcmFsIG90aGVyIGRyaXZlcnM6IGBkcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuY2AsIGBkcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jYCwgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNgLgoKWWVwLCBhbGwgdGhlc2UgYXJlIGFsc28gc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycywgZ2VuZXJhbGx5IGZvciBOWFAvRnJlZXNjYWxlIGFuZCBBbHRlcmEvSW50ZWwgRlBHQXMuIE5vbmUgb2YgdGhlc2UgYXJlIHN0YW5kYXJkIGVtdWxhdGVkIGRldmljZXMgaW4gUUVNVS4gQW5kIHRoZSBjaGFuZ2UsIGxpa2UgSSBtZW50aW9uZWQgZWFybGllciwgaXMganVzdCBhZGRpbmcgYSBuZXcgUEhZIG1vZGUgaW4gYSBzd2l0Y2ggY2FzZS4KClNvLCBhZnRlciBhIHRob3JvdWdoIGxvb2ssIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSByaWdodCBjYWxsIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVIgdG8gdGhlIEx5bnggUENTIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVycyAoZS5nLiwgTlhQIEVORVRDLCBEUEFBMiwgT2NlbG90IERTQSwgQWx0ZXJhIFRTRSwgU09DRlBHQSBEV01BQykgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSB0cml2aWFsIGFkZGl0aW9ucyB0byBzd2l0Y2ggc3RhdGVtZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSIHRvIHRoZSBMeW54IFBDUyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZXhjbHVzaXZlbHkgYnkgaGFyZHdhcmUtc3BlY2lmaWMgRXRoZXJuZXQgY29udHJvbGxlcnMgKGUuZy4sIE5YUCBFTkVUQywgRFBBQTIsIE9jZWxvdCBEU0EsIEFsdGVyYSBUU0UsIFNPQ0ZQR0EgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgdHJpdmlhbCBhZGRpdGlvbnMgdG8gc3dpdGNoIHN0YXRlbWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNDoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6MjM6NTIuODgzNTk3Mzg2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk3Mjc3MTgwMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUiB0byB0aGUgTHlueCBQQ1MgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IGhhcmR3YXJlLXNwZWNpZmljIEV0aGVybmV0IGNvbnRyb2xsZXJzIChlLmcuLCBOWFAgRU5FVEMsIERQQUEyLCBPY2Vsb3QgRFNBLCBBbHRlcmEgVFNFLCBTT0NGUEdBIERXTUFDKSB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIHRyaXZpYWwgYWRkaXRpb25zIHRvIHN3aXRjaCBzdGF0ZW1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6MjM6NTIuODgzNjA0NzE2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTA2ODg2MDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTBiN2Q5ZGNhODI2MzI5ZDY0OGRiYmYwNDQ0MWFhZDVlYWUzYWI2MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAyNSAxNDoyMzo1MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXFxuaW5kZXggYTkyMDgxNTYwZTY0MS4uZGE0Zjk5MDU5ZWVmNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXFxuQEAgLTQ2LDYgKzQ2LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBseW54X3Bjc19pbmJhbmRfY2FwcyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG4gXFx0XFx0cmV0dXJuIExJTktfSU5CQU5EX0RJU0FCTEUgfCBMSU5LX0lOQkFORF9FTkFCTEU7XFxuIFxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjpcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVI6XFxuIFxcdFxcdHJldHVybiBMSU5LX0lOQkFORF9ESVNBQkxFO1xcbiBcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcXG5AQCAtOTcsNiArOTgsNyBAQCBzdGF0aWMgdm9pZCBseW54X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4gXFx0XFx0bHlueF9wY3NfZ2V0X3N0YXRlX3VzeGdtaWkobHlueC1cXHUwMDNlbWRpbywgc3RhdGUpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSOlxcbiBcXHRcXHRwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZShseW54LVxcdTAwM2VtZGlvLCBzdGF0ZSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRkZWZhdWx0OlxcbkBAIC0xODgsNyArMTkwLDggQEAgc3RhdGljIGludCBseW54X3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4gXFx0XFx0cmV0dXJuIGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpKGx5bngtXFx1MDAzZW1kaW8sIGlmbW9kZSwgYWR2ZXJ0aXNpbmcsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgICBuZWdfbW9kZSk7XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSOlxcbi1cXHRcXHQvKiBOb3RoaW5nIHRvIGRvIGhlcmUgZm9yIDEwR0JBU0VSICovXFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSOlxcbitcXHRcXHQvKiBOb3RoaW5nIHRvIGRvIGhlcmUgZm9yIDEwR0JBU0VSIGFuZCAyNUdCQVNFUiAqL1xcbiBcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbkBAIC0yNzksNiArMjgyLDcgQEAgc3RhdGljIGNvbnN0IHBoeV9pbnRlcmZhY2VfdCBseW54X2ludGVyZmFjZXNbXSA9IHtcXG4gXFx0UEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCxcXG4gXFx0UEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcXG4gXFx0UEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSLFxcbitcXHRQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVIsXFxuIFxcdFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJLFxcbiBcXHRQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSSxcXG4gfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6MjM6NTQuMzkxNDk0Mzg0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDgyMTk4MDA4MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSIHRvIHRoZSBMeW54IFBDUyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZXhjbHVzaXZlbHkgYnkgaGFyZHdhcmUtc3BlY2lmaWMgRXRoZXJuZXQgY29udHJvbGxlcnMgKGUuZy4sIE5YUCBFTkVUQywgRFBBQTIsIE9jZWxvdCBEU0EsIEFsdGVyYSBUU0UsIFNPQ0ZQR0EgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgdHJpdmlhbCBhZGRpdGlvbnMgdG8gc3dpdGNoIHN0YXRlbWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMGI3ZDlkY2E4MjYzMjlkNjQ4ZGJiZjA0NDQxYWFkNWVhZTNhYjYwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMTQ6MjM6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXG5pbmRleCBhOTIwODE1NjBlNjQxLi5kYTRmOTkwNTllZWY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmNcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXG5AQCAtNDYsNiArNDYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGx5bnhfcGNzX2luYmFuZF9jYXBzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuIFx0XHRyZXR1cm4gTElOS19JTkJBTkRfRElTQUJMRSB8IExJTktfSU5CQU5EX0VOQUJMRTtcbiBcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSOlxuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVI6XG4gXHRcdHJldHVybiBMSU5LX0lOQkFORF9ESVNBQkxFO1xuIFxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcbkBAIC05Nyw2ICs5OCw3IEBAIHN0YXRpYyB2b2lkIGx5bnhfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuIFx0XHRseW54X3Bjc19nZXRfc3RhdGVfdXN4Z21paShseW54LVx1MDAzZW1kaW8sIHN0YXRlKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjpcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSOlxuIFx0XHRwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZShseW54LVx1MDAzZW1kaW8sIHN0YXRlKTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuQEAgLTE4OCw3ICsxOTAsOCBAQCBzdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuIFx0XHRyZXR1cm4gbHlueF9wY3NfY29uZmlnX3VzeGdtaWkobHlueC1cdTAwM2VtZGlvLCBpZm1vZGUsIGFkdmVydGlzaW5nLFxuIFx0XHRcdFx0XHQgICAgICAgbmVnX21vZGUpO1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XG4tXHRcdC8qIE5vdGhpbmcgdG8gZG8gaGVyZSBmb3IgMTBHQkFTRVIgKi9cbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSOlxuK1x0XHQvKiBOb3RoaW5nIHRvIGRvIGhlcmUgZm9yIDEwR0JBU0VSIGFuZCAyNUdCQVNFUiAqL1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbkBAIC0yNzksNiArMjgyLDcgQEAgc3RhdGljIGNvbnN0IHBoeV9pbnRlcmZhY2VfdCBseW54X2ludGVyZmFjZXNbXSA9IHtcbiBcdFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgsXG4gXHRQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLFxuIFx0UEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSLFxuK1x0UEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSLFxuIFx0UEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUksXG4gXHRQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSSxcbiB9O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6MjM6NTQuMzkxNDk2NzE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIzNjE2MDUyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQQ1MtTHlueCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgcGNzLWx5bnguY2AgZHJpdmVyLiBJdCBzZWVtcyBsaWtlIHNvbWVvbmUncyBhZGRlZCBgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSYCB0byBzZXZlcmFsIHNlY3Rpb25zOiBgbHlueF9wY3NfaW5iYW5kX2NhcHNgLCBgbHlueF9wY3NfZ2V0X3N0YXRlYCwgYGx5bnhfcGNzX2NvbmZpZ2AsIGFuZCBgbHlueF9pbnRlcmZhY2VzYC4gUmlnaHQgYXdheSwgbXkgZXhwZXJ0IGV5ZSB0ZWxscyBtZSB0aGlzIGlzIGFib3V0IGVuYWJsaW5nIG9yIGNvbmZpZ3VyaW5nIDI1R0JBU0UtUiBzdXBwb3J0LCBwcm9iYWJseSBvbiBhbiBFdGhlcm5ldCBQSFkgb3IgTUFDLiBJIGtub3cgdGhpcyBkcml2ZXIgaXMgZm9yIGEgUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyLCBzbyBpdCBkZWFscyB3aXRoIHRoZSBsb3ctbGV2ZWwgcGh5c2ljYWwgbGF5ZXIgc2lnbmFsaW5nLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3Mgc2VlIGhvdyB0aGlzIHBsYXlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENvbnNpZGVyaW5nIGl0J3MgYSBQQ1MgZHJpdmVyLCBhbmQgdGhvc2UgYXJlIG9mdGVuIHBhaXJlZCB3aXRoIEV0aGVybmV0IE1BQyBkcml2ZXJzLCBJIG5lZWQgdG8ga25vdyBpZiB3ZSBjYW4gYWN0dWFsbHkgcmVhY2ggYHBjcy1seW54LmNgIGluIGEgdmlydHVhbGl6ZWQgc2l0dWF0aW9uLiBBcmUgdGhlIGRlcGVuZGVuY2llcyBjb3JyZWN0PyBXaGF0IG1vZHVsZXMgYXJlIGNhbGxpbmcgdGhpcyBkcml2ZXI/IExldCBtZSBjaGVjayB3aGF0IHVzZXMgYHBjcy1seW54YCB0byBkZXRlcm1pbmUgdGhlIGltcGFjdC4gR290dGEgdHJhY2UgaXRzIGRlcGVuZGVuY2llcyB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBUaGlzIGNvdWxkIGJlIGFuIGltcG9ydGFudCBhZGRpdGlvbiwgYW5kIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDAsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDoyMzo1OS42Mjc2NTk5NzVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQwNDUzNjYwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY3MtbHlueFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJNQUlOVEFJTkVSUz0xNTU1ND1TOlxcdFN1cHBvcnRlZFxcbk1BSU5UQUlORVJTOjE1NTU1OkY6XFx0ZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmNcXG5NQUlOVEFJTkVSUzoxNTU1NjpGOlxcdGluY2x1ZGUvbGludXgvcGNzLWx5bnguaFxcbk1BSU5UQUlORVJTLTE1NTU3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTQtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RzYS9vY2Vsb3QuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLWx5bnguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xNi0jaW5jbHVkZSBcXHUwMDNjbmV0L3BrdF9zY2hlZC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy0xMS0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfbWRpby5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6MTI6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy0xMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvZHNhL29jZWxvdC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTM0LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9uZXQuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MzU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTM2LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9hY3BpLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS9waHkuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX25ldC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjk6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtMTAtI2luY2x1ZGUgXFxcImVuZXRjX2llcmIuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYy0xMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvaW8uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX21lbWFjLmM6MTQ6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jLTE1LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmg9MTIwOT1zdHJ1Y3QgbXRrX3NvY19kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmgtMTI2NC0gKiAgICAgICAgICAgICAgICAgICAgICBTR01JSSBhbmQgR2VQSFkgcGF0aFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmg6MTI2NTogKiBAc2dtaWlfcGNzOlxcdFxcdFBvaW50ZXJzIHRvIG10ay1wY3MtbHlueGkgcGh5bGlua19wY3MgaW5zdGFuY2VzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaC0xMjY2LSAqIEBwY3RsOlxcdFxcdFRoZSByZWdpc3RlciBtYXAgcG9pbnRpbmcgYXQgdGhlIHJhbmdlIHVzZWQgdG8gc2V0dXBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy0xNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby9tZGlvLXJlZ21hcC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLWx5bnguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtMTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Jlc2V0LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfUENTX1hQQ1MpXFx0XFx0Kz0gcGNzX3hwY3Mub1xcbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19QQ1NfTFlOWClcXHRcXHQrPSBwY3MtbHlueC5vXFxuZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX1BDU19NVEtfTFlOWEkpXFx0Kz0gcGNzLW10ay1seW54aS5vXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy03LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHlsaW5rLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6ODojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLWx5bnguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy05LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXFx1MDAzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDoyNDowMy4wMzIyMDI0OTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDc1MTk5MDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBwY3MtbHlueC5jYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHBjcy1seW54LmNgIGRyaXZlci4gVGhlIGNvZGUgc2hvd3MgaXQncyB1c2VkIGJ5IHF1aXRlIGEgZmV3IG90aGVyIGRyaXZlcnM6IGBmZWxpeF92c2M5OTU5LmNgLCBgc2V2aWxsZV92c2M5OTUzLmNgLCBgYWx0ZXJhX3RzZV9tYWluLmNgLCBgZHBhYTItbWFjLmNgLCBgZW5ldGNfcGYuY2AsIGBmbWFuX21lbWFjLmNgLCBhbmQgYGR3bWFjLXNvY2ZwZ2EuY2AuIFJpZ2h0IGF3YXksIEkgc2VlIHRoZXNlIGFyZSBhbGwgc3BlY2lmaWMgdG8gcGFydGljdWxhciBoYXJkd2FyZTogTlhQJ3MgT2NlbG90IERTQSwgQWx0ZXJhJ3MgVFNFLCBGcmVlc2NhbGUncyBEUEFBMi9FTkVUQy9GTUFOLCBhbmQgU1RNaWNybydzIERXTUFDIFNPQ0ZQR0EuXG5cblRoZSBvYnZpb3VzIHF1ZXN0aW9uIHBvcHMgdXA6IENhbiBJIGV2ZW4gcmVhY2ggdGhpcyBjb2RlIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IEdpdmVuIHRoYXQgaXQncyBhbGwgaGFyZHdhcmUtZGVwZW5kZW50IGV0aGVybmV0IGRyaXZlcnMsIHRoZSBjaGFuY2VzIGZlZWwgc2xpbS4gSG9sZCBvbiwgdGhlIGBwY3MtbHlueGAgZHJpdmVyIGl0c2VsZiBpcyBhY3R1YWxseSBhIFBDUyBsaWJyYXJ5LiBDb3VsZCBJIHBvdGVudGlhbGx5IHRyaWdnZXIgaXQgdGhyb3VnaCBzb21lIHNvcnQgb2YgdmlydHVhbCBkZXZpY2U/IFByb2JhYmx5IG5vdC4gVGhlc2UgZHJpdmVycyBhcmUgaW50cmluc2ljYWxseSB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlLlxuXG5IbW0sIHdhaXQsIGBkd21hYy1zb2NmcGdhYCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3RtbWFjLiBgYWx0ZXJhX3RzZWAgaXMgYWxzbyBhIHBsYXRmb3JtIGRyaXZlci4gYGVuZXRjYCBpcyBhIFBDSSBkcml2ZXIgZm9yIE5YUCBFTkVUQywgYW5kIGBkcGFhMmAgaXMgZm9yIE5YUCBEUEFBMi4gTm9uZSBvZiB0aGVzZSBhcmUgc3RhbmRhcmQgZW11bGF0ZWQgZGV2aWNlcyBpbiBRRU1VLiBCYWNrIHRvIHNxdWFyZSBvbmUgLSBjYW4gYHBjcy1seW54YCBiZSBpbnN0YW50aWF0ZWQgYnkgYSBkdW1teSBkZXZpY2U/IEkgbmVlZCB0byBjaGVjayBgcGNzLWx5bnguY2AgaXRzZWxmIHRvIHNlZSAqaG93KiBpdCdzIGJyb3VnaHQgdG8gbGlmZS4gVGhhdCB3aWxsIGJlIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6MjQ6MTIuNTA3NDA0MTYzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MDEwMjU3MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibHlueF9wY3NfY3JlYXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q9NzQ9dGhpcyBkb2N1bWVudGF0aW9uLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zMTEtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdDozMTI6ICAgICAgICBwcml2LVxcdTAwM2VwY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihidXMsIDApO1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzEzLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zMTctXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdDozMTg6ICAgICAgICBwcml2LVxcdTAwM2VwY3MgPSBseW54X3Bjc19jcmVhdGVfZndub2RlKG9mX2Z3bm9kZV9oYW5kbGUobm9kZSkpO1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzE5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDMyLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjEwMzM6XFx0XFx0cGh5bGlua19wY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihmZWxpeC1cXHUwMDNlaW1kaW8sIHBvcnQpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTEwMzQtXFx0XFx0aWYgKElTX0VSUihwaHlsaW5rX3BjcykpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTg3OD1zdGF0aWMgaW50IHZzYzk5NTNfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MjItXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MjM6XFx0XFx0cGh5bGlua19wY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihmZWxpeC1cXHUwMDNlaW1kaW8sIGFkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTI0LVxcdFxcdGlmIChJU19FUlIocGh5bGlua19wY3MpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTM5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTM5NTpcXHRwcml2LVxcdTAwM2VwY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihwY3NfYnVzLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTM5Ni1cXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZXBjcykpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYz00NDc9c3RhdGljIGludCBkcGFhMl9wY3NfY3JlYXRlKHN0cnVjdCBkcGFhMl9tYWMgKm1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjQ2MTpcXHRwY3MgPSBseW54X3Bjc19jcmVhdGVfZndub2RlKG5vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00NjItXFx0Zndub2RlX2hhbmRsZV9wdXQobm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNDc1LVxcdFxcdG5ldGRldl9lcnIobWFjLVxcdTAwM2VuZXRfZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo0NzY6XFx0XFx0XFx0ICAgXFxcImx5bnhfcGNzX2NyZWF0ZV9md25vZGUoKSBmYWlsZWQ6ICVwZVxcXFxuXFxcIiwgcGNzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNDc3LVxcdFxcdHJldHVybiBQVFJfRVJSKHBjcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz0zND1zdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICplbmV0Y19wZl9jcmVhdGVfcGNzKHN0cnVjdCBlbmV0Y19wZiAqcGYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy0zNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6Mzc6XFx0cmV0dXJuIGx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KGJ1cywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtMzgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jPTExMjI9c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbWVtYWNfcGNzX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm1hY19ub2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jLTExMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jOjExMzI6XFx0cGNzID0gbHlueF9wY3NfY3JlYXRlX2Z3bm9kZShvZl9md25vZGVfaGFuZGxlKG5vZGUpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX21lbWFjLmMtMTEzMy1cXHRvZl9ub2RlX3B1dChub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz00OTY9c3RhdGljIGludCBzb2NmcGdhX2R3bWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01MzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjUzMjpcXHRwY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihwY3NfYnVzLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTMzLVxcdGlmIChJU19FUlIocGNzKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jPTI3OT1zdGF0aWMgY29uc3QgcGh5X2ludGVyZmFjZV90IGx5bnhfaW50ZXJmYWNlc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMjg5LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjI5MDpzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTI5MS17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMDktXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzEwOnN0cnVjdCBwaHlsaW5rX3BjcyAqbHlueF9wY3NfY3JlYXRlX21kaW9kZXYoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzExLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMxOC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozMTk6XFx0cGNzID0gbHlueF9wY3NfY3JlYXRlKG1kaW8pO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMzMC19XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzMxOkVYUE9SVF9TWU1CT0wobHlueF9wY3NfY3JlYXRlX21kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMzMi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMzMtLypcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozMzQ6ICogbHlueF9wY3NfY3JlYXRlX2Z3bm9kZSgpIGNyZWF0ZXMgYSBseW54IFBDUyBpbnN0YW5jZSBmcm9tIHRoZSBmd25vZGVcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMzUtICogZGV2aWNlIGluZGljYXRlZCBieSBub2RlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzQyLSAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjM0MzpzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9md25vZGUoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKm5vZGUpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM1NC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozNTU6XFx0cGNzID0gbHlueF9wY3NfY3JlYXRlKG1kaW8pO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM2Ni19XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzY3OkVYUE9SVF9TWU1CT0xfR1BMKGx5bnhfcGNzX2NyZWF0ZV9md25vZGUpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM2OC1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGNzLWx5bnguaC0xMS1cXG5pbmNsdWRlL2xpbnV4L3Bjcy1seW54Lmg6MTI6c3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGVfbWRpb2RldihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcik7XFxuaW5jbHVkZS9saW51eC9wY3MtbHlueC5oOjEzOnN0cnVjdCBwaHlsaW5rX3BjcyAqbHlueF9wY3NfY3JlYXRlX2Z3bm9kZShzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZSk7XFxuaW5jbHVkZS9saW51eC9wY3MtbHlueC5oLTE0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDoyNDoxNi4yMDg0MzU0MzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTk1MTU1NDkyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2VlIGlmIEkgY291bGQgdHJpZ2dlciB0aGUgYHBjcy1seW54YCBkcml2ZXIgdXNpbmcgYGR3bWFjLXNvY2ZwZ2EuY2AsIHdoaWNoLCBhcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYHN0bW1hY2AsIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQywgbWlnaHQgYmUgaW50ZXJlc3RpbmcuIEkga25vdyBgc3RtbWFjYCBpcyBkZXZpY2UgdHJlZS1pbnN0YW50aWFibGUuIEhvd2V2ZXIsIGBkd21hYy1zb2NmcGdhLmNgIHNwZWNpZmljYWxseSB0YXJnZXRzIEFsdGVyYSBTT0NGUEdBLiBDYW4gSSBldmVuIGdldCB0aGF0IHRvIHJ1biB1bmRlciBRRU1VPyBIbW0sIFFFTVUgaGFzIHNvbWUgQWx0ZXJhIGJvYXJkIHN1cHBvcnQsIGJ1dCByZWFsaXN0aWNhbGx5LCB3aXRoIGBzdG1tYWNgLCBJJ2QgYmUgbG9va2luZyBhdCBhIGRldmljZSB0cmVlIG92ZXJsYXkgaWYgaXQgKmlzKiBhIHBsYXRmb3JtIGRldmljZS5cblxuTm93LCB0aGUgYHBjcy1seW54YCBkcml2ZXIgaXRzZWxmLiBJcyBpdCB1c2VkIGdlbmVyaWNhbGx5IGJ5IGBzdG1tYWNgLCBvciBpcyBpdCBzcGVjaWZpYz8gQWgsIG9ubHkgYGR3bWFjLXNvY2ZwZ2EuY2AgdXNlcyBpdC4gTGV0IG1lIHRyeSB0byBzZWUgaWYgYGR3bWFjLXNvY2ZwZ2FgIGlzIGV2ZW4gcmVhY2hhYmxlLiBDYW4gSSBnZXQgYGx5bnhfcGNzX2NvbmZpZ2AgdG8gZmlyZSB0aHJvdWdoIGBwaHlsaW5rYCBzb21laG93PyBUaGVvcmV0aWNhbGx5LCB5ZXMsIGlmIEkgY2FuIGluc3RhbnRpYXRlIGEgZGV2aWNlIHRoYXQgdXNlcyBgcGNzLWx5bnhgLlxuXG5CdXQgd2FpdCwgaXMgdGhpcyBjaGFuZ2UgcmVhbGx5IHdvcnRoIGZ1enppbmc/IEl0J3MgbGl0ZXJhbGx5IGp1c3QgYWRkaW5nIHN1cHBvcnQgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVJgIHRvIGEgZmV3IHN3aXRjaCBzdGF0ZW1lbnRzLiBUaGUgY29kZSBpcyBtaW5pbWFsOiBlaXRoZXIgcmV0dXJuIGEgY29uc3RhbnQgYExJTktfSU5CQU5EX0RJU0FCTEVgIG9yIGNhbGwgYHBoeWxpbmtfbWlpX2M0NV9wY3NfZ2V0X3N0YXRlYC4gQmFzaWNhbGx5LCBpdCdzIHRoZSBzYW1lIGxvZ2ljIGFzIDEwR0JBU0VSLCBqdXN0IGZvciB0aGUgbmV3IG1vZGUuIE5vdywgZG9lcyB0aGlzIG5ldyBQSFkgbW9kZSBwb3RlbnRpYWxseSBlbmFibGUgbmV3IHBhdGhzIGluIGBwaHlsaW5rYD8gSG9sZCBvbiwgYHBoeWxpbmtgIGFscmVhZHkgc3VwcG9ydHMgYFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUmAuIFRoZSBjaGFuZ2VzIGFyZSBlbnRpcmVseSBjb25maW5lZCB0byBgcGNzLWx5bnguY2AuXG5cbkNvbnNpZGVyaW5nIGFsbCBvZiB0aGlzLCBJJ20gbGVhbmluZyB0b3dhcmRzIFwibm8uXCIgSXQncyBhIHRyaXZpYWwgYWRkaXRpb24gb2YgYW4gZW51bSB2YWx1ZSB0byBhIHN3aXRjaCBzdGF0ZW1lbnQgd2l0aGluIGEgc3BlY2lmaWMgaGFyZHdhcmUgUENTIGRyaXZlci5cblxuRnVydGhlcm1vcmUsIGl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgSSBjYW4gdHJpZ2dlciB0aGlzIGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIFZNLiBgcGNzLWx5bnhgIGlzIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmU6IE5YUCBPY2Vsb3QsIEFsdGVyYSBUU0UsIEZyZWVzY2FsZSBEUEFBMiwgb3IgU09DRlBHQSBEV01BQy4gU3RhbmRhcmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhvc2UsIG9yIGlmIGl0IGRvZXMsIGl0J3Mgd2l0aCBzcGVjaWZpYyBkZXZpY2UgdHJlZSBzZXR1cHMgdGhhdCBzeXprYWxsZXIgbGlrZWx5IHdvbid0IGhhdmUuIFN5emthbGxlciB1c3VhbGx5IGZvY3VzZXMgb24gZHJpdmVycyB0aGF0IGNhbiBiZSBlbXVsYXRlZCwgbGlrZSBQQ0kgb3IgVVNCLiBUaGUgYGVuZXRjYCBkcml2ZXIgaXMgYSBQQ0kgZGV2aWNlLCBzbyB0aGF0IG1pZ2h0IGJlIHdvcnRoIGxvb2tpbmcgaW50by4gTGV0IG1lIGNoZWNrIGBlbmV0Y19wZi5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA2MSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDoyNDoyOC4xNTk5OTQzNzlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEzNTExODgzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbmV0Y19wZl9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz03ODc9c3RhdGljIGNvbnN0IHN0cnVjdCBlbmV0Y19wZl9vcHMgZW5ldGNfcGZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtNzk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjc5NTpzdGF0aWMgaW50IGVuZXRjX3BmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTc5Ni1cXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz05MzM9c3RhdGljIHZvaWQgZW5ldGNfZml4dXBfY2xlYXJfcnNzX3JmcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzOC1cXHQvKiBPbmx5IGFwcGx5IHF1aXJrIGZvciBkaXNhYmxlZCBmdW5jdGlvbnMuIEZvciB0aGUgb25lc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjkzOTpcXHQgKiB0aGF0IGFyZSBlbmFibGVkLCBlbmV0Y19wZl9wcm9iZSgpIHdpbGwgYXBwbHkgaXQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTQwLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9OTU3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBlbmV0Y19wZl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NTktXFx0LmlkX3RhYmxlID0gZW5ldGNfcGZfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTYwOlxcdC5wcm9iZSA9IGVuZXRjX3BmX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk2MS1cXHQucmVtb3ZlID0gZW5ldGNfcGZfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDoyNDozMi4yOTUxMTg3ODdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDMxNjEzNDA5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9ZmFsc2U6IEEgUXVpY2sgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHRoaXMgZXZlbiAqYmUqIGZ1enplZCBlZmZlY3RpdmVseT8gSSdtIGRlYWxpbmcgd2l0aCBhbiBgZW5ldGNgIFBDSSBkcml2ZXIsIGFuZCB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYHN5emthbGxlcmAgY2FuIGV2ZW4gdG91Y2ggaXQuIEkga25vdyBpdCAqY2FuKiBmdXp6IFBDSSBkcml2ZXJzLCB1c2luZyBgc3l6X3BjaV92cGNpYCBvciBzaW1pbGFyLCBidXQgdHlwaWNhbGx5IHRoYXQgcmVxdWlyZXMgdGhlIGRyaXZlciB0byBiZSBib3VuZC4gSG1tLCB0aGlzIHNwZWNpZmljIHBhdGNoIGxvb2tzIHByZXR0eSBiZW5pZ24sIGp1c3QgYWRkaW5nIGBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVJgIHRvIGEgc3dpdGNoIHN0YXRlbWVudC4gSXMgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlIGhlcmUgcmVhbGx5IHdvcnRoIHRoZSBmdXp6aW5nIGVmZm9ydD9cblxuTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXIgb24gdGhpczogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIC4uLiBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIC4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5gZW5ldGNgIGlzIGEgRnJlZXNjYWxlL05YUCBFTkVUQyBHaWdhYml0IEV0aGVybmV0IENvbnRyb2xsZXIuIFRoYXQgc291bmRzIGxpa2Ugc3BlY2lmaWMgaGFyZHdhcmUgdG8gbWUuIEFuZCBsb29raW5nIGF0IHRoZSByZWxhdGVkIGBwY3MtbHlueGAgZHJpdmVyLCB0aGF0J3MgYWxzbyBOWFAvRnJlZXNjYWxlIGFuZCBBbHRlcmEgaGFyZHdhcmUsIGRlZmluaXRlbHkgbm90IHNvbWV0aGluZyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuXG5TbywgYWNjb3JkaW5nIHRvIHRoZSBydWxlLCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoaXMgZmFsbHMgdW5kZXIgdGhlIGhhcmR3YXJlLXNwZWNpZmljLCBub24tZW11bGF0ZWQgZHJpdmVyIGNhdGVnb3J5LiBJJ20gbGVhbmluZyB0b3dhcmRzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0J3MgcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgYHBjcy1seW54YCBpcyB1c2VkIGJ5IGFueXRoaW5nIGVsc2UuIEFoYSwgSSBhbHJlYWR5IGdyZXBwZWQgZm9yIGl0IGFuZCBpdCdzIHVzZWQgYnkgc2V2ZXJhbCBvdGhlciBkcml2ZXJzOiBgZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmNgLCBgZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jYC5cblxuWWVwLCBhbGwgdGhlc2UgYXJlIGFsc28gc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycywgZ2VuZXJhbGx5IGZvciBOWFAvRnJlZXNjYWxlIGFuZCBBbHRlcmEvSW50ZWwgRlBHQXMuIE5vbmUgb2YgdGhlc2UgYXJlIHN0YW5kYXJkIGVtdWxhdGVkIGRldmljZXMgaW4gUUVNVS4gQW5kIHRoZSBjaGFuZ2UsIGxpa2UgSSBtZW50aW9uZWQgZWFybGllciwgaXMganVzdCBhZGRpbmcgYSBuZXcgUEhZIG1vZGUgaW4gYSBzd2l0Y2ggY2FzZS5cblxuU28sIGFmdGVyIGEgdGhvcm91Z2ggbG9vaywgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIHJpZ2h0IGNhbGwgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk0MCwiT3V0cHV0VG9rZW5zIjoxMTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6MjQ6NDIuNjExMjU1NzIzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVIgdG8gdGhlIEx5bnggUENTIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVycyAoZS5nLiwgTlhQIEVORVRDLCBEUEFBMiwgT2NlbG90IERTQSwgQWx0ZXJhIFRTRSwgU09DRlBHQSBEV01BQykgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSB0cml2aWFsIGFkZGl0aW9ucyB0byBzd2l0Y2ggc3RhdGVtZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSIHRvIHRoZSBMeW54IFBDUyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZXhjbHVzaXZlbHkgYnkgaGFyZHdhcmUtc3BlY2lmaWMgRXRoZXJuZXQgY29udHJvbGxlcnMgKGUuZy4sIE5YUCBFTkVUQywgRFBBQTIsIE9jZWxvdCBEU0EsIEFsdGVyYSBUU0UsIFNPQ0ZQR0EgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgdHJpdmlhbCBhZGRpdGlvbnMgdG8gc3dpdGNoIHN0YXRlbWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDoyNDo0Mi42MTEyOTgxMzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowg5hsx[1] Phase: Running StartedAt: 2026-08-25 14:24:54 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg5hsx[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-25 14:24:54 +0000 UTC FinishedAt: 2026-08-25 14:24:58 +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,}