Name: series-workflowjqkmr Phase: Failed StartedAt: 2026-06-25 07:27:12 +0000 UTC FinishedAt: 2026-06-25 07:40:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjqkmr[0] Phase: Succeeded StartedAt: 2026-06-25 07:27:12 +0000 UTC FinishedAt: 2026-06-25 07:40:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjqkmr[0].run-triage Phase: Succeeded StartedAt: 2026-06-25 07:27:12 +0000 UTC FinishedAt: 2026-06-25 07:40:10 +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+CgkJCTx0ZD4yMDI2LzA2LzI1IDA3OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUSSBJQ1NTRyBQUlUgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBzcGVjaWZpYyB0byBUZXhhcyBJbnN0cnVtZW50cyBLMyBTb0NzIGFuZCByZXF1aXJlcyB0aGUgUFJVLUlDU1MgaGFyZHdhcmUgc3Vic3lzdGVtIGFuZCBzcGVjaWZpYyBmaXJtd2FyZS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDc6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YzY2YmU4NzcwMzQ3NTMzMDVlMWVmNWUyZDkyMTI1ZGIzNjcwM2E0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDc6Mzg6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uY1xuaW5kZXggODJkZGVmOWMxN2Q1NGUuLjY0YWUzNzA0NDgxZTA0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jXG5AQCAtMTg1LDcgJiM0MzsxODUsOCBAQCB2b2lkIHBydWV0aF94bWl0X2ZyZWUoc3RydWN0IHBydWV0aF90eF9jaG4gKnR4X2NobixcbiBcdGZpcnN0X2Rlc2MgPSBkZXNjO1xuIFx0bmV4dF9kZXNjID0gZmlyc3RfZGVzYztcbiBcdHN3ZGF0YSA9IGNwcGk1X2hkZXNjX2dldF9zd2RhdGEoZmlyc3RfZGVzYyk7XG4tXHRpZiAoc3dkYXRhLVx1MDAzZXR5cGUgPT0gUFJVRVRIX1NXREFUQV9YU0spXG4mIzQzO1x0aWYgKHN3ZGF0YS1cdTAwM2V0eXBlID09IFBSVUVUSF9TV0RBVEFfWFNLIHx8XG4mIzQzO1x0ICAgIHN3ZGF0YS1cdTAwM2V0eXBlID09IFBSVUVUSF9TV0RBVEFfWERQRl9UWClcbiBcdFx0Z290byBmcmVlX3Bvb2w7XG4gXG4gXHRjcHBpNV9oZGVzY19nZXRfb2J1ZihmaXJzdF9kZXNjLCBcdTAwMjZidWZfZG1hLCBcdTAwMjZidWZfZG1hX2xlbik7XG5AQCAtMjU5LDYgJiM0MzsyNjAsNyBAQCBpbnQgZW1hY190eF9jb21wbGV0ZV9wYWNrZXRzKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgaW50IGNobixcbiBcdFx0XHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgYnVkZ2V0KTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBQUlVFVEhfU1dEQVRBX1hEUEY6XG4mIzQzO1x0XHRjYXNlIFBSVUVUSF9TV0RBVEFfWERQRl9UWDpcbiBcdFx0XHR4ZHBmID0gc3dkYXRhLVx1MDAzZWRhdGEueGRwZjtcbiBcdFx0XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKG5kZXYsIDEsIHhkcGYtXHUwMDNlbGVuKTtcbiBcdFx0XHR0b3RhbF9ieXRlcyAmIzQzOz0geGRwZi1cdTAwM2VsZW47XG5AQCAtNzY5LDcgJiM0Mzs3NzEsOCBAQCB1MzIgZW1hY194bWl0X3hkcF9mcmFtZShzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsXG4gXHRrM191ZG1hX2dsdWVfdHhfZG1hX3RvX2NwcGk1X2FkZHIodHhfY2huLVx1MDAzZXR4X2NobiwgXHUwMDI2YnVmX2RtYSk7XG4gXHRjcHBpNV9oZGVzY19hdHRhY2hfYnVmKGZpcnN0X2Rlc2MsIGJ1Zl9kbWEsIHhkcGYtXHUwMDNlbGVuLCBidWZfZG1hLCB4ZHBmLVx1MDAzZWxlbik7XG4gXHRzd2RhdGEgPSBjcHBpNV9oZGVzY19nZXRfc3dkYXRhKGZpcnN0X2Rlc2MpO1xuLVx0c3dkYXRhLVx1MDAzZXR5cGUgPSBQUlVFVEhfU1dEQVRBX1hEUEY7XG4mIzQzO1x0c3dkYXRhLVx1MDAzZXR5cGUgPSAoYnVmZl90eXBlID09IFBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX1RYID9cbiYjNDM7XHRcdFBSVUVUSF9TV0RBVEFfWERQRl9UWCA6IFBSVUVUSF9TV0RBVEFfWERQRik7XG4gXHRzd2RhdGEtXHUwMDNlZGF0YS54ZHBmID0geGRwZjtcbiBcbiBcdC8qIFJlcG9ydCBCUUwgYmVmb3JlIHNlbmRpbmcgdGhlIHBhY2tldCAqL1xuQEAgLTgwNCw2ICYjNDM7ODA3LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZW1hY194bWl0X3hkcF9mcmFtZSk7XG4gICovXG4gc3RhdGljIHUzMiBlbWFjX3J1bl94ZHAoc3RydWN0IHBydWV0aF9lbWFjICplbWFjLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyICpsZW4pXG4ge1xuJiM0MztcdGVudW0gcHJ1ZXRoX3R4X2J1ZmZfdHlwZSB0eF9idWZmX3R5cGU7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IGVtYWMtXHUwMDNlbmRldjtcbiBcdHN0cnVjdCBuZXRkZXZfcXVldWUgKm5ldGlmX3R4cTtcbiBcdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XG5AQCAtODI2LDExICYjNDM7ODMwLDIxIEBAIHN0YXRpYyB1MzIgZW1hY19ydW5feGRwKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiAqbGVuXG4gXHRcdFx0Z290byBkcm9wO1xuIFx0XHR9XG4gXG4mIzQzO1x0XHQvKiBJbiBBRl9YRFAgemVyby1jb3B5IG1vZGUgeGRwX2NvbnZlcnRfYnVmZl90b19mcmFtZSgpXG4mIzQzO1x0XHQgKiBjbG9uZXMgdGhlIHhzayBidWZmZXIgaW50byBhIGZyZXNoIE1FTV9UWVBFX1BBR0VfT1JERVIwXG4mIzQzO1x0XHQgKiBwYWdlIHRoYXQgaXMgbm90IERNQSBtYXBwZWQuIFN1Y2ggYSBmcmFtZSBtdXN0IGJlIG1hcHBlZFxuJiM0MztcdFx0ICogdmlhIHRoZSBORE8gcGF0aDsgb25seSBhIHBhZ2UgcG9vbC1iYWNrZWQgZnJhbWUgYWxyZWFkeVxuJiM0MztcdFx0ICogY2FycmllcyBhIHVzYWJsZSBwYWdlX3Bvb2wgRE1BIGFkZHJlc3MuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHR4X2J1ZmZfdHlwZSA9ICh4ZHBmLVx1MDAzZW1lbV90eXBlID09IE1FTV9UWVBFX1BBR0VfUE9PTCA/XG4mIzQzO1x0XHRcdFx0UFJVRVRIX1RYX0JVRkZfVFlQRV9YRFBfVFggOlxuJiM0MztcdFx0XHRcdFBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX05ETyk7XG4mIzQzO1xuIFx0XHRxX2lkeCA9IGNwdSAlIGVtYWMtXHUwMDNldHhfY2hfbnVtO1xuIFx0XHRuZXRpZl90eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKG5kZXYsIHFfaWR4KTtcbiBcdFx0X19uZXRpZl90eF9sb2NrKG5ldGlmX3R4cSwgY3B1KTtcbiBcdFx0cmVzdWx0ID0gZW1hY194bWl0X3hkcF9mcmFtZShlbWFjLCB4ZHBmLCBxX2lkeCxcbi1cdFx0XHRcdFx0ICAgICBQUlVFVEhfVFhfQlVGRl9UWVBFX1hEUF9UWCk7XG4mIzQzO1x0XHRcdFx0XHQgICAgIHR4X2J1ZmZfdHlwZSk7XG4gXHRcdF9fbmV0aWZfdHhfdW5sb2NrKG5ldGlmX3R4cSk7XG4gXHRcdGlmIChyZXN1bHQgPT0gSUNTU0dfWERQX0NPTlNVTUVEKSB7XG4gXHRcdFx0bmRldi1cdTAwM2VzdGF0cy50eF9kcm9wcGVkJiM0MzsmIzQzOztcbkBAIC0xMzk1LDYgJiM0MzsxNDA5LDcgQEAgdm9pZCBwcnVldGhfdHhfY2xlYW51cCh2b2lkICpkYXRhLCBkbWFfYWRkcl90IGRlc2NfZG1hKVxuIFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUFJVRVRIX1NXREFUQV9YRFBGOlxuJiM0MztcdGNhc2UgUFJVRVRIX1NXREFUQV9YRFBGX1RYOlxuIFx0XHR4ZHBmID0gc3dkYXRhLVx1MDAzZWRhdGEueGRwZjtcbiBcdFx0eGRwX3JldHVybl9mcmFtZSh4ZHBmKTtcbiBcdFx0YnJlYWs7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaFxuaW5kZXggZGY5M2QxNWM1Yjc4NmQuLjAwYmI3NjBkNjhhOTRkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oXG5AQCAtMTUzLDYgJiM0MzsxNTMsNyBAQCBlbnVtIHBydWV0aF9zd2RhdGFfdHlwZSB7XG4gXHRQUlVFVEhfU1dEQVRBX0NNRCxcbiBcdFBSVUVUSF9TV0RBVEFfWERQRixcbiBcdFBSVUVUSF9TV0RBVEFfWFNLLFxuJiM0MztcdFBSVUVUSF9TV0RBVEFfWERQRl9UWCxcbiB9O1xuIFxuIGVudW0gcHJ1ZXRoX3R4X2J1ZmZfdHlwZSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDc6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRJIElDU1NHIFBSVSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIHNwZWNpZmljIHRvIFRleGFzIEluc3RydW1lbnRzIEszIFNvQ3MgYW5kIHJlcXVpcmVzIHRoZSBQUlUtSUNTUyBoYXJkd2FyZSBzdWJzeXN0ZW0gYW5kIHNwZWNpZmljIGZpcm13YXJlLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWM2NmJlODc3MDM0NzUzMzA1ZTFlZjVlMmQ5MjEyNWRiMzY3MDNhNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVuIDI1IDA3OjM4OjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uYwppbmRleCA4MmRkZWY5YzE3ZDU0ZS4uNjRhZTM3MDQ0ODFlMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jCkBAIC0xODUsNyAmIzQzOzE4NSw4IEBAIHZvaWQgcHJ1ZXRoX3htaXRfZnJlZShzdHJ1Y3QgcHJ1ZXRoX3R4X2NobiAqdHhfY2huLAogCWZpcnN0X2Rlc2MgPSBkZXNjOwogCW5leHRfZGVzYyA9IGZpcnN0X2Rlc2M7CiAJc3dkYXRhID0gY3BwaTVfaGRlc2NfZ2V0X3N3ZGF0YShmaXJzdF9kZXNjKTsKLQlpZiAoc3dkYXRhLSZndDt0eXBlID09IFBSVUVUSF9TV0RBVEFfWFNLKQomIzQzOwlpZiAoc3dkYXRhLSZndDt0eXBlID09IFBSVUVUSF9TV0RBVEFfWFNLIHx8CiYjNDM7CSAgICBzd2RhdGEtJmd0O3R5cGUgPT0gUFJVRVRIX1NXREFUQV9YRFBGX1RYKQogCQlnb3RvIGZyZWVfcG9vbDsKIAogCWNwcGk1X2hkZXNjX2dldF9vYnVmKGZpcnN0X2Rlc2MsICZhbXA7YnVmX2RtYSwgJmFtcDtidWZfZG1hX2xlbik7CkBAIC0yNTksNiAmIzQzOzI2MCw3IEBAIGludCBlbWFjX3R4X2NvbXBsZXRlX3BhY2tldHMoc3RydWN0IHBydWV0aF9lbWFjICplbWFjLCBpbnQgY2huLAogCQkJbmFwaV9jb25zdW1lX3NrYihza2IsIGJ1ZGdldCk7CiAJCQlicmVhazsKIAkJY2FzZSBQUlVFVEhfU1dEQVRBX1hEUEY6CiYjNDM7CQljYXNlIFBSVUVUSF9TV0RBVEFfWERQRl9UWDoKIAkJCXhkcGYgPSBzd2RhdGEtJmd0O2RhdGEueGRwZjsKIAkJCWRldl9zd19uZXRzdGF0c190eF9hZGQobmRldiwgMSwgeGRwZi0mZ3Q7bGVuKTsKIAkJCXRvdGFsX2J5dGVzICYjNDM7PSB4ZHBmLSZndDtsZW47CkBAIC03NjksNyAmIzQzOzc3MSw4IEBAIHUzMiBlbWFjX3htaXRfeGRwX2ZyYW1lKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywKIAlrM191ZG1hX2dsdWVfdHhfZG1hX3RvX2NwcGk1X2FkZHIodHhfY2huLSZndDt0eF9jaG4sICZhbXA7YnVmX2RtYSk7CiAJY3BwaTVfaGRlc2NfYXR0YWNoX2J1ZihmaXJzdF9kZXNjLCBidWZfZG1hLCB4ZHBmLSZndDtsZW4sIGJ1Zl9kbWEsIHhkcGYtJmd0O2xlbik7CiAJc3dkYXRhID0gY3BwaTVfaGRlc2NfZ2V0X3N3ZGF0YShmaXJzdF9kZXNjKTsKLQlzd2RhdGEtJmd0O3R5cGUgPSBQUlVFVEhfU1dEQVRBX1hEUEY7CiYjNDM7CXN3ZGF0YS0mZ3Q7dHlwZSA9IChidWZmX3R5cGUgPT0gUFJVRVRIX1RYX0JVRkZfVFlQRV9YRFBfVFggPwomIzQzOwkJUFJVRVRIX1NXREFUQV9YRFBGX1RYIDogUFJVRVRIX1NXREFUQV9YRFBGKTsKIAlzd2RhdGEtJmd0O2RhdGEueGRwZiA9IHhkcGY7CiAKIAkvKiBSZXBvcnQgQlFMIGJlZm9yZSBzZW5kaW5nIHRoZSBwYWNrZXQgKi8KQEAgLTgwNCw2ICYjNDM7ODA3LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZW1hY194bWl0X3hkcF9mcmFtZSk7CiAgKi8KIHN0YXRpYyB1MzIgZW1hY19ydW5feGRwKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiAqbGVuKQogewomIzQzOwllbnVtIHBydWV0aF90eF9idWZmX3R5cGUgdHhfYnVmZl90eXBlOwogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gZW1hYy0mZ3Q7bmRldjsKIAlzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpuZXRpZl90eHE7CiAJaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKQEAgLTgyNiwxMSAmIzQzOzgzMCwyMSBAQCBzdGF0aWMgdTMyIGVtYWNfcnVuX3hkcChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgKmxlbgogCQkJZ290byBkcm9wOwogCQl9CiAKJiM0MzsJCS8qIEluIEFGX1hEUCB6ZXJvLWNvcHkgbW9kZSB4ZHBfY29udmVydF9idWZmX3RvX2ZyYW1lKCkKJiM0MzsJCSAqIGNsb25lcyB0aGUgeHNrIGJ1ZmZlciBpbnRvIGEgZnJlc2ggTUVNX1RZUEVfUEFHRV9PUkRFUjAKJiM0MzsJCSAqIHBhZ2UgdGhhdCBpcyBub3QgRE1BIG1hcHBlZC4gU3VjaCBhIGZyYW1lIG11c3QgYmUgbWFwcGVkCiYjNDM7CQkgKiB2aWEgdGhlIE5ETyBwYXRoOyBvbmx5IGEgcGFnZSBwb29sLWJhY2tlZCBmcmFtZSBhbHJlYWR5CiYjNDM7CQkgKiBjYXJyaWVzIGEgdXNhYmxlIHBhZ2VfcG9vbCBETUEgYWRkcmVzcy4KJiM0MzsJCSAqLwomIzQzOwkJdHhfYnVmZl90eXBlID0gKHhkcGYtJmd0O21lbV90eXBlID09IE1FTV9UWVBFX1BBR0VfUE9PTCA/CiYjNDM7CQkJCVBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX1RYIDoKJiM0MzsJCQkJUFJVRVRIX1RYX0JVRkZfVFlQRV9YRFBfTkRPKTsKJiM0MzsKIAkJcV9pZHggPSBjcHUgJSBlbWFjLSZndDt0eF9jaF9udW07CiAJCW5ldGlmX3R4cSA9IG5ldGRldl9nZXRfdHhfcXVldWUobmRldiwgcV9pZHgpOwogCQlfX25ldGlmX3R4X2xvY2sobmV0aWZfdHhxLCBjcHUpOwogCQlyZXN1bHQgPSBlbWFjX3htaXRfeGRwX2ZyYW1lKGVtYWMsIHhkcGYsIHFfaWR4LAotCQkJCQkgICAgIFBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX1RYKTsKJiM0MzsJCQkJCSAgICAgdHhfYnVmZl90eXBlKTsKIAkJX19uZXRpZl90eF91bmxvY2sobmV0aWZfdHhxKTsKIAkJaWYgKHJlc3VsdCA9PSBJQ1NTR19YRFBfQ09OU1VNRUQpIHsKIAkJCW5kZXYtJmd0O3N0YXRzLnR4X2Ryb3BwZWQmIzQzOyYjNDM7OwpAQCAtMTM5NSw2ICYjNDM7MTQwOSw3IEBAIHZvaWQgcHJ1ZXRoX3R4X2NsZWFudXAodm9pZCAqZGF0YSwgZG1hX2FkZHJfdCBkZXNjX2RtYSkKIAkJZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTsKIAkJYnJlYWs7CiAJY2FzZSBQUlVFVEhfU1dEQVRBX1hEUEY6CiYjNDM7CWNhc2UgUFJVRVRIX1NXREFUQV9YRFBGX1RYOgogCQl4ZHBmID0gc3dkYXRhLSZndDtkYXRhLnhkcGY7CiAJCXhkcF9yZXR1cm5fZnJhbWUoeGRwZik7CiAJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaAppbmRleCBkZjkzZDE1YzViNzg2ZC4uMDBiYjc2MGQ2OGE5NGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oCkBAIC0xNTMsNiAmIzQzOzE1Myw3IEBAIGVudW0gcHJ1ZXRoX3N3ZGF0YV90eXBlIHsKIAlQUlVFVEhfU1dEQVRBX0NNRCwKIAlQUlVFVEhfU1dEQVRBX1hEUEYsCiAJUFJVRVRIX1NXREFUQV9YU0ssCiYjNDM7CVBSVUVUSF9TV0RBVEFfWERQRl9UWCwKIH07CiAKIGVudW0gcHJ1ZXRoX3R4X2J1ZmZfdHlwZSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMTUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVEkgSUNTU0cgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyB0b3VjaGluZyBgaWNzc2dfY29tbW9uLmNgIGFuZCBgaWNzc2dfcHJ1ZXRoLmhgIGluIHRoZSBUSSBJQ1NTRyBFdGhlcm5ldCBkcml2ZXIgZGlyZWN0b3J5LiBJdCYjMzk7cyBhZGRpbmcgYFBSVUVUSF9TV0RBVEFfWERQRl9UWGAgYW5kIG1ha2luZyBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIHRoZSBYRFAtcmVsYXRlZCB0cmFuc21pdCBwYXRoczogYHBydWV0aF94bWl0X2ZyZWVgLCBgZW1hY190eF9jb21wbGV0ZV9wYWNrZXRzYCwgYGVtYWNfeG1pdF94ZHBfZnJhbWVgLCBhbmQgYHBydWV0aF90eF9jbGVhbnVwYC4gSXQgYWxzbyBsb29rcyBsaWtlIGBlbWFjX3J1bl94ZHBgIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGhhbmRsZSBgTUVNX1RZUEVfUEFHRV9QT09MYCBhbmQgc2V0IHRoZSBgdHhfYnVmZl90eXBlYCBhcHByb3ByaWF0ZWx5LiBTcGVjaWZpY2FsbHksIHdlJiMzOTtyZSBsb29raW5nIGF0IHNldHRpbmcgYHR4X2J1ZmZfdHlwZWAgdG8gZWl0aGVyIGBQUlVFVEhfVFhfQlVGRl9UWVBFX1hEUF9UWGAgb3IgYFBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX05ET2AuCgpUaGlzIHNjcmVhbXMgWERQIG9mZmxvYWQgZm9yIHRoaXMgVEkgSUNTU0cgRXRoZXJuZXQgYmxvY2suIE5vdywgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHRoaXMgYXJjaGl0ZWN0dXJlLCBJIGtub3cgdGhhdCBUSSBJQ1NTRywgd2hpY2ggaW5jbHVkZXMgdGhlIFBSVS1JQ1NTLCBpcyBwcmV0dHkgbXVjaCB0aWVkIHRvIHNwZWNpZmljIFRleGFzIEluc3RydW1lbnRzIFNvQ3MsIGxpa2UgdGhlIEFNNjV4IGFuZCBBTTY0eCBzZXJpZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBldmVuIGdvaW5nIHRvIGJlICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBjYW4mIzM5O3QgaW1tZWRpYXRlbHkgcmVjYWxsIHNlZWluZyBhIGdvb2QgSUNTU0cgZW11bGF0aW9uIGluIFFFTVUgb3IgZXZlbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUuIFRob3NlIGhhcmR3YXJlIGJsb2NrcyBhcmUgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIFNvQyBzaWxpY29uLiBJdCYjMzk7cyB1bmxpa2VseSB0aGF0IHRoZSBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIGFueSBwbGF0Zm9ybSBvdGhlciB0aGFuIHRoZSBhY3R1YWwgc2lsaWNvbi4KCkFscmlnaHQsIGxldCYjMzk7cyBjb25maXJtIG15IHN1c3BpY2lvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMuIEkmIzM5O20gZ29pbmcgdG8gc2VhcmNoIGZvciBgVElfSUNTU0dfUFJVRVRIYCBvciBhIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBwbGF0Zm9ybS1zcGVjaWZpYyBsb2dpYyB0aGF0IG1pZ2h0IGlsbHVtaW5hdGUgdGhpcyBmdXJ0aGVyLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIHRoZXJlJiMzOTtzIGFueSBwb3NzaWJpbGl0eSBvZiBlbXVsYXRpbmcgdGhpcyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDc6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJX0lDU1NHX1BSVUVUSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTE2OT1jb25maWcgVExBTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxODY6Y29uZmlnIFRJX0lDU1NHX1BSVUVUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xODctXHR0cmlzdGF0ZSBcJiMzNDtUSSBHaWdhYml0IFBSVSBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjA0OmNvbmZpZyBUSV9JQ1NTR19QUlVFVEhfU1IxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwNS1cdHRyaXN0YXRlIFwmIzM0O1RJIEdpZ2FiaXQgUFJVIFNSMS4wIEV0aGVybmV0IGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxODIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uLCBwcmVzZW50ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgRGVwZW5kZW5jaWVzIG9mIFRJX0lDU1NHX1BSVUVUSCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRJX0lDU1NHX1BSVUVUSGAuIFRoYXQmIzM5O3MgdGhlIGNvcmUgcXVlc3Rpb24sIGlzbiYjMzk7dCBpdD8gVW5kZXJzdGFuZGluZyB3aGF0IHRoaXMgbW9kdWxlIHJlbGllcyBvbiBpcyBhYnNvbHV0ZWx5IGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciwgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgc3lzdGVtLCBhbmQgaG93IHRvIHByb3Blcmx5IGNvbmZpZ3VyZSBhbmQgaW50ZWdyYXRlIGl0LiBJIG5lZWQgdG8ga25vdyB0aGUgcHJlcmVxdWlzaXRlczogb3RoZXIgZHJpdmVycywgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMsIHBlcmhhcHMgZmlybXdhcmUgdmVyc2lvbnMsIGFuZCBhbnkgcmVsZXZhbnQgbGlicmFyaWVzIG9yIHN1cHBvcnQgbW9kdWxlcy4gVGhlIGRlcGVuZGVuY3kgdHJlZSBpcyB3aGF0IEkgbmVlZCB0byB1bnBhY2suIEkmIzM5O2xsIG5lZWQgdG8gY29uc2lkZXIgbm90IGp1c3QgdGhlIGltbWVkaWF0ZWx5IG9idmlvdXMgZGVwZW5kZW5jaWVzLCBidXQgYWxzbyB0aG9zZSB0aGF0IGFyZSBtb3JlIGRlZXBseSBuZXN0ZWQuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIGF2b2lkaW5nIGNvbmZsaWN0cywgZW5zdXJpbmcgcHJvcGVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgYW5kIG9wdGltaXppbmcgb3ZlcmFsbCBwZXJmb3JtYW5jZS4gU28sIG15IGZvY3VzIG5vdyBpcyBpZGVudGlmeWluZyB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kIGNhdGFsb2dpbmcgdGhlbSBzeXN0ZW1hdGljYWxseS4gSSYjMzk7bGwgbmVlZCB0byByZWZlciB0byBkb2N1bWVudGF0aW9uLCBjb2RlLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBkZWJ1ZyB0aGUgc3lzdGVtIGlmIHRoZSBpbmZvcm1hdGlvbiBpc24mIzM5O3QgcmVhZGlseSBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDc6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uLipUSV9JQ1NTR19QUlVFVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC90aS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NzUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqS2NvbmZpZyBSZXZpZXcgZm9yIFRJX0lDU1NHX1BSVUVUSCoqCgpPa2F5LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcGF0aCwgSSByZWFsbHkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgYFRJX0lDU1NHX1BSVUVUSGAuIFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgY29uZmlndXJhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZHJpdmVyLiBJIHdhbnQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIGlmIGl0IGhhcyBhbHJlYWR5IGJlZW4gZW5hYmxlZCBhbmQgd2h5LCBvciBpZiBpdCBpcyBkaXNhYmxlZCwgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQgKmNhbiogYmUuIEFyZSB0aGVyZSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBhdXRvbWF0aWNhbGx5IHB1bGxlZCBpbiB3aGVuIHRoaXMgaXMgc2VsZWN0ZWQ/IEFyZSB0aGVyZSBhbnkgY29uZmxpY3Rpbmcgb3B0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IFRoaXMgd2lsbCBoZWxwIG1lIHF1aWNrbHkgdW5kZXJzdGFuZCB3aHkgYFRJX0lDU1NHX1BSVUVUSGAgaXMgYmVoYXZpbmcgdGhlIHdheSBpdCBpcywgb3IgaWYgaXQgd2lsbCBiZWhhdmUgdGhlIHdheSBpdCBpcyBzdXBwb3NlZCB0by4gR3Jhc3BpbmcgdGhpcyBjb250ZXh0IG5vdyB3aWxsIHNhdmUgbWUgYSB0b24gb2YgdGltZSBkb3duIHRoZSByb2FkLiBBbHJpZ2h0LCBLY29uZmlnLCBoZXJlIEkgY29tZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4NjpcdGNvbmZpZyBUSV9JQ1NTR19QUlVFVEhcbiAxODc6XHRcdHRyaXN0YXRlIFwmIzM0O1RJIEdpZ2FiaXQgUFJVIEV0aGVybmV0IGRyaXZlclwmIzM0O1xuIDE4ODpcdFx0c2VsZWN0IFBIWUxJQlxuIDE4OTpcdFx0c2VsZWN0IFRJX0lDU1NfSUVQXG4gMTkwOlx0XHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcbiAxOTE6XHRcdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0NcbiAxOTI6XHRcdGRlcGVuZHMgb24gTkVUX1NXSVRDSERFVlxuIDE5MzpcdFx0ZGVwZW5kcyBvbiBBUkNIX0szIFx1MDAyNlx1MDAyNiBPRiBcdTAwMjZcdTAwMjYgVElfSzNfVURNQV9HTFVFX0xBWUVSXG4gMTk0Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gMTk1Olx0XHRkZXBlbmRzIG9uIEhTUiB8fCAhSFNSXG4gMTk2Olx0XHRoZWxwXG4gMTk3Olx0XHQgIFN1cHBvcnQgZHVhbCBHaWdhYml0IEV0aGVybmV0IHBvcnRzIG92ZXIgdGhlIElDU1NHIFBSVSBTdWJzeXN0ZW0uXG4gMTk4Olx0XHQgIFRoaXMgc3Vic3lzdGVtIGlzIGF2YWlsYWJsZSBzdGFydGluZyB3aXRoIHRoZSBBTTY1IHBsYXRmb3JtLlxuIDE5OTpcdFxuIDIwMDpcdFx0ICBUaGlzIGRyaXZlciByZXF1aXJlcyBmaXJtd2FyZSBiaW5hcmllcyB3aGljaCB3aWxsIHJ1biBvbiB0aGUgUFJVc1xuIDIwMTpcdFx0ICB0byBzdXBwb3J0IHRoZSBFdGhlcm5ldCBvcGVyYXRpb24uIEN1cnJlbnRseSwgaXQgc3VwcG9ydHMgRXRoZXJuZXRcbiAyMDI6XHRcdCAgd2l0aCAxRyBhbmQgMTAwTSBsaW5rIHNwZWVkLlxuIDIwMzpcdFxuIDIwNDpcdGNvbmZpZyBUSV9JQ1NTR19QUlVFVEhfU1IxXG4gMjA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUSSBHaWdhYml0IFBSVSBTUjEuMCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNzozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDg1CgkJCQkJCQlvdXRwdXQ6IDk0CgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBoaW5nZXMgb24gdGhyZWUga2V5IGZhY3RvcnM6IGBBUkNIX0szYCwgYE9GYCwgYW5kIGBUSV9LM19VRE1BX0dMVUVfTEFZRVJgLiBUaGUgZmlyc3Qgb25lLCBgQVJDSF9LM2AsIGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgVEkmIzM5O3MgSzMgTXVsdGljb3JlIFNvQyBhcmNoaXRlY3R1cmUg4oCTIGEgaGFyZHdhcmUtc3BlY2lmaWMgYmVhc3QuIEkga25vdyB0aGlzIGlzIGEgZHJpdmVyIGRlc2lnbmVkIGZvciB0aG9zZSBwYXJ0aWN1bGFyIFRJIFNvQ3MsIG1lYW5pbmcgaXQmIzM5O3MgaW50cmluc2ljYWxseSB0aWVkIHRvIHRoZSBzaWxpY29uLgoKVGhlIGltcGxpY2F0aW9uIGlzIGNsZWFyOiB5b3UgY2FuJiMzOTt0IHNpbXBseSBmaXJlIHVwIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgc29tZXRoaW5nIGxpa2UgUUVNVSBvciBHQ0UsIGFuZCBleHBlY3QgdG8gbWVhbmluZ2Z1bGx5IGZ1enogdGhpcy4gSXQgbmVlZHMgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZSwgb3IgYXQgbGVhc3QgYSBoaWdobHkgYWNjdXJhdGUgZW11bGF0aW9uIG9mIGl0LCBhbmQgZnJhbmtseSwgdGhhdCBsZXZlbCBvZiBlbXVsYXRpb24gaXMgcmFyZWx5LCBpZiBldmVyLCBwcmVzZW50IGluIHRoZSBzeXprYWxsZXIgd29ya2Zsb3cuIFRoZXJlZm9yZSwgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IHRoaXMgaXMgbm90ICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2suIE9rYXksIEkgc2VlLiBUaGUgZHJpdmVyIG5lZWRzIGZpcm13YXJlIGJpbmFyaWVzIHRoYXQgcnVuIG9uIHRoZSBQUlVzIHRvIGhhbmRsZSBFdGhlcm5ldCBvcGVyYXRpb24uIFJpZ2h0LCBpdCYjMzk7cyBkZWZpbml0ZWx5IGhhcmR3YXJlLWRlcGVuZGVudC4KClNvLCB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIFRJIElDU1NHIFBSVSBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9gKS4gSXQmIzM5O3MgYWxsIGFib3V0IHRoYXQgUFJVLUlDU1Mgc3Vic3lzdGVtIGFuZCB0aGUgZmlybXdhcmUgaXQgbmVlZHMuIFRoaXMgaXMgYWJvdXQgYXMgaGFyZHdhcmUtc3BlY2lmaWMgYXMgaXQgZ2V0cy4gSXQmIzM5O3Mgc2ltcGx5IG5vdCBhY2Nlc3NpYmxlIG9yIHRlc3RhYmxlIGluIG91ciBzdGFuZGFyZCBmdXp6aW5nIHNldHVwLgoKT2theSwgSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgY29uY2x1c2lvbi4gSSYjMzk7bSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA3OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRJIElDU1NHIFBSVSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIHNwZWNpZmljIHRvIFRleGFzIEluc3RydW1lbnRzIEszIFNvQ3MgYW5kIHJlcXVpcmVzIHRoZSBQUlUtSUNTUyBoYXJkd2FyZSBzdWJzeXN0ZW0gYW5kIHNwZWNpZmljIGZpcm13YXJlLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRJIElDU1NHIFBSVSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIHNwZWNpZmljIHRvIFRleGFzIEluc3RydW1lbnRzIEszIFNvQ3MgYW5kIHJlcXVpcmVzIHRoZSBQUlUtSUNTUyBoYXJkd2FyZSBzdWJzeXN0ZW0gYW5kIHNwZWNpZmljIGZpcm13YXJlLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA3OjM4OjA2LjUzMTA3NjEwNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NzkxMDA4MTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVEkgSUNTU0cgUFJVIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gVGV4YXMgSW5zdHJ1bWVudHMgSzMgU29DcyBhbmQgcmVxdWlyZXMgdGhlIFBSVS1JQ1NTIGhhcmR3YXJlIHN1YnN5c3RlbSBhbmQgc3BlY2lmaWMgZmlybXdhcmUuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNzozODowNi41MzEwODczMzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MTU3MjI4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVjNjZiZTg3NzAzNDc1MzMwNWUxZWY1ZTJkOTIxMjVkYjM2NzAzYTRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMDc6Mzg6MDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uY1xcbmluZGV4IDgyZGRlZjljMTdkNTRlLi42NGFlMzcwNDQ4MWUwNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jXFxuQEAgLTE4NSw3ICsxODUsOCBAQCB2b2lkIHBydWV0aF94bWl0X2ZyZWUoc3RydWN0IHBydWV0aF90eF9jaG4gKnR4X2NobixcXG4gXFx0Zmlyc3RfZGVzYyA9IGRlc2M7XFxuIFxcdG5leHRfZGVzYyA9IGZpcnN0X2Rlc2M7XFxuIFxcdHN3ZGF0YSA9IGNwcGk1X2hkZXNjX2dldF9zd2RhdGEoZmlyc3RfZGVzYyk7XFxuLVxcdGlmIChzd2RhdGEtXFx1MDAzZXR5cGUgPT0gUFJVRVRIX1NXREFUQV9YU0spXFxuK1xcdGlmIChzd2RhdGEtXFx1MDAzZXR5cGUgPT0gUFJVRVRIX1NXREFUQV9YU0sgfHxcXG4rXFx0ICAgIHN3ZGF0YS1cXHUwMDNldHlwZSA9PSBQUlVFVEhfU1dEQVRBX1hEUEZfVFgpXFxuIFxcdFxcdGdvdG8gZnJlZV9wb29sO1xcbiBcXG4gXFx0Y3BwaTVfaGRlc2NfZ2V0X29idWYoZmlyc3RfZGVzYywgXFx1MDAyNmJ1Zl9kbWEsIFxcdTAwMjZidWZfZG1hX2xlbik7XFxuQEAgLTI1OSw2ICsyNjAsNyBAQCBpbnQgZW1hY190eF9jb21wbGV0ZV9wYWNrZXRzKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgaW50IGNobixcXG4gXFx0XFx0XFx0bmFwaV9jb25zdW1lX3NrYihza2IsIGJ1ZGdldCk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIFBSVUVUSF9TV0RBVEFfWERQRjpcXG4rXFx0XFx0Y2FzZSBQUlVFVEhfU1dEQVRBX1hEUEZfVFg6XFxuIFxcdFxcdFxcdHhkcGYgPSBzd2RhdGEtXFx1MDAzZWRhdGEueGRwZjtcXG4gXFx0XFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZGV2LCAxLCB4ZHBmLVxcdTAwM2VsZW4pO1xcbiBcXHRcXHRcXHR0b3RhbF9ieXRlcyArPSB4ZHBmLVxcdTAwM2VsZW47XFxuQEAgLTc2OSw3ICs3NzEsOCBAQCB1MzIgZW1hY194bWl0X3hkcF9mcmFtZShzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsXFxuIFxcdGszX3VkbWFfZ2x1ZV90eF9kbWFfdG9fY3BwaTVfYWRkcih0eF9jaG4tXFx1MDAzZXR4X2NobiwgXFx1MDAyNmJ1Zl9kbWEpO1xcbiBcXHRjcHBpNV9oZGVzY19hdHRhY2hfYnVmKGZpcnN0X2Rlc2MsIGJ1Zl9kbWEsIHhkcGYtXFx1MDAzZWxlbiwgYnVmX2RtYSwgeGRwZi1cXHUwMDNlbGVuKTtcXG4gXFx0c3dkYXRhID0gY3BwaTVfaGRlc2NfZ2V0X3N3ZGF0YShmaXJzdF9kZXNjKTtcXG4tXFx0c3dkYXRhLVxcdTAwM2V0eXBlID0gUFJVRVRIX1NXREFUQV9YRFBGO1xcbitcXHRzd2RhdGEtXFx1MDAzZXR5cGUgPSAoYnVmZl90eXBlID09IFBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX1RYID9cXG4rXFx0XFx0UFJVRVRIX1NXREFUQV9YRFBGX1RYIDogUFJVRVRIX1NXREFUQV9YRFBGKTtcXG4gXFx0c3dkYXRhLVxcdTAwM2VkYXRhLnhkcGYgPSB4ZHBmO1xcbiBcXG4gXFx0LyogUmVwb3J0IEJRTCBiZWZvcmUgc2VuZGluZyB0aGUgcGFja2V0ICovXFxuQEAgLTgwNCw2ICs4MDcsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChlbWFjX3htaXRfeGRwX2ZyYW1lKTtcXG4gICovXFxuIHN0YXRpYyB1MzIgZW1hY19ydW5feGRwKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiAqbGVuKVxcbiB7XFxuK1xcdGVudW0gcHJ1ZXRoX3R4X2J1ZmZfdHlwZSB0eF9idWZmX3R5cGU7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gZW1hYy1cXHUwMDNlbmRldjtcXG4gXFx0c3RydWN0IG5ldGRldl9xdWV1ZSAqbmV0aWZfdHhxO1xcbiBcXHRpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpO1xcbkBAIC04MjYsMTEgKzgzMCwyMSBAQCBzdGF0aWMgdTMyIGVtYWNfcnVuX3hkcChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgKmxlblxcbiBcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIFxcdFxcdH1cXG4gXFxuK1xcdFxcdC8qIEluIEFGX1hEUCB6ZXJvLWNvcHkgbW9kZSB4ZHBfY29udmVydF9idWZmX3RvX2ZyYW1lKClcXG4rXFx0XFx0ICogY2xvbmVzIHRoZSB4c2sgYnVmZmVyIGludG8gYSBmcmVzaCBNRU1fVFlQRV9QQUdFX09SREVSMFxcbitcXHRcXHQgKiBwYWdlIHRoYXQgaXMgbm90IERNQSBtYXBwZWQuIFN1Y2ggYSBmcmFtZSBtdXN0IGJlIG1hcHBlZFxcbitcXHRcXHQgKiB2aWEgdGhlIE5ETyBwYXRoOyBvbmx5IGEgcGFnZSBwb29sLWJhY2tlZCBmcmFtZSBhbHJlYWR5XFxuK1xcdFxcdCAqIGNhcnJpZXMgYSB1c2FibGUgcGFnZV9wb29sIERNQSBhZGRyZXNzLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0dHhfYnVmZl90eXBlID0gKHhkcGYtXFx1MDAzZW1lbV90eXBlID09IE1FTV9UWVBFX1BBR0VfUE9PTCA/XFxuK1xcdFxcdFxcdFxcdFBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX1RYIDpcXG4rXFx0XFx0XFx0XFx0UFJVRVRIX1RYX0JVRkZfVFlQRV9YRFBfTkRPKTtcXG4rXFxuIFxcdFxcdHFfaWR4ID0gY3B1ICUgZW1hYy1cXHUwMDNldHhfY2hfbnVtO1xcbiBcXHRcXHRuZXRpZl90eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKG5kZXYsIHFfaWR4KTtcXG4gXFx0XFx0X19uZXRpZl90eF9sb2NrKG5ldGlmX3R4cSwgY3B1KTtcXG4gXFx0XFx0cmVzdWx0ID0gZW1hY194bWl0X3hkcF9mcmFtZShlbWFjLCB4ZHBmLCBxX2lkeCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICBQUlVFVEhfVFhfQlVGRl9UWVBFX1hEUF9UWCk7XFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgdHhfYnVmZl90eXBlKTtcXG4gXFx0XFx0X19uZXRpZl90eF91bmxvY2sobmV0aWZfdHhxKTtcXG4gXFx0XFx0aWYgKHJlc3VsdCA9PSBJQ1NTR19YRFBfQ09OU1VNRUQpIHtcXG4gXFx0XFx0XFx0bmRldi1cXHUwMDNlc3RhdHMudHhfZHJvcHBlZCsrO1xcbkBAIC0xMzk1LDYgKzE0MDksNyBAQCB2b2lkIHBydWV0aF90eF9jbGVhbnVwKHZvaWQgKmRhdGEsIGRtYV9hZGRyX3QgZGVzY19kbWEpXFxuIFxcdFxcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIFBSVUVUSF9TV0RBVEFfWERQRjpcXG4rXFx0Y2FzZSBQUlVFVEhfU1dEQVRBX1hEUEZfVFg6XFxuIFxcdFxcdHhkcGYgPSBzd2RhdGEtXFx1MDAzZWRhdGEueGRwZjtcXG4gXFx0XFx0eGRwX3JldHVybl9mcmFtZSh4ZHBmKTtcXG4gXFx0XFx0YnJlYWs7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmhcXG5pbmRleCBkZjkzZDE1YzViNzg2ZC4uMDBiYjc2MGQ2OGE5NGQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaFxcbkBAIC0xNTMsNiArMTUzLDcgQEAgZW51bSBwcnVldGhfc3dkYXRhX3R5cGUge1xcbiBcXHRQUlVFVEhfU1dEQVRBX0NNRCxcXG4gXFx0UFJVRVRIX1NXREFUQV9YRFBGLFxcbiBcXHRQUlVFVEhfU1dEQVRBX1hTSyxcXG4rXFx0UFJVRVRIX1NXREFUQV9YRFBGX1RYLFxcbiB9O1xcbiBcXG4gZW51bSBwcnVldGhfdHhfYnVmZl90eXBlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDc6Mzg6MDcuMDgzOTA1NzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MjM4MTY3OTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVEkgSUNTU0cgUFJVIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gVGV4YXMgSW5zdHJ1bWVudHMgSzMgU29DcyBhbmQgcmVxdWlyZXMgdGhlIFBSVS1JQ1NTIGhhcmR3YXJlIHN1YnN5c3RlbSBhbmQgc3BlY2lmaWMgZmlybXdhcmUuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVjNjZiZTg3NzAzNDc1MzMwNWUxZWY1ZTJkOTIxMjVkYjM2NzAzYTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAwNzozODowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmNcbmluZGV4IDgyZGRlZjljMTdkNTRlLi42NGFlMzcwNDQ4MWUwNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uY1xuQEAgLTE4NSw3ICsxODUsOCBAQCB2b2lkIHBydWV0aF94bWl0X2ZyZWUoc3RydWN0IHBydWV0aF90eF9jaG4gKnR4X2NobixcbiBcdGZpcnN0X2Rlc2MgPSBkZXNjO1xuIFx0bmV4dF9kZXNjID0gZmlyc3RfZGVzYztcbiBcdHN3ZGF0YSA9IGNwcGk1X2hkZXNjX2dldF9zd2RhdGEoZmlyc3RfZGVzYyk7XG4tXHRpZiAoc3dkYXRhLVx1MDAzZXR5cGUgPT0gUFJVRVRIX1NXREFUQV9YU0spXG4rXHRpZiAoc3dkYXRhLVx1MDAzZXR5cGUgPT0gUFJVRVRIX1NXREFUQV9YU0sgfHxcbitcdCAgICBzd2RhdGEtXHUwMDNldHlwZSA9PSBQUlVFVEhfU1dEQVRBX1hEUEZfVFgpXG4gXHRcdGdvdG8gZnJlZV9wb29sO1xuIFxuIFx0Y3BwaTVfaGRlc2NfZ2V0X29idWYoZmlyc3RfZGVzYywgXHUwMDI2YnVmX2RtYSwgXHUwMDI2YnVmX2RtYV9sZW4pO1xuQEAgLTI1OSw2ICsyNjAsNyBAQCBpbnQgZW1hY190eF9jb21wbGV0ZV9wYWNrZXRzKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgaW50IGNobixcbiBcdFx0XHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgYnVkZ2V0KTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBQUlVFVEhfU1dEQVRBX1hEUEY6XG4rXHRcdGNhc2UgUFJVRVRIX1NXREFUQV9YRFBGX1RYOlxuIFx0XHRcdHhkcGYgPSBzd2RhdGEtXHUwMDNlZGF0YS54ZHBmO1xuIFx0XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmRldiwgMSwgeGRwZi1cdTAwM2VsZW4pO1xuIFx0XHRcdHRvdGFsX2J5dGVzICs9IHhkcGYtXHUwMDNlbGVuO1xuQEAgLTc2OSw3ICs3NzEsOCBAQCB1MzIgZW1hY194bWl0X3hkcF9mcmFtZShzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsXG4gXHRrM191ZG1hX2dsdWVfdHhfZG1hX3RvX2NwcGk1X2FkZHIodHhfY2huLVx1MDAzZXR4X2NobiwgXHUwMDI2YnVmX2RtYSk7XG4gXHRjcHBpNV9oZGVzY19hdHRhY2hfYnVmKGZpcnN0X2Rlc2MsIGJ1Zl9kbWEsIHhkcGYtXHUwMDNlbGVuLCBidWZfZG1hLCB4ZHBmLVx1MDAzZWxlbik7XG4gXHRzd2RhdGEgPSBjcHBpNV9oZGVzY19nZXRfc3dkYXRhKGZpcnN0X2Rlc2MpO1xuLVx0c3dkYXRhLVx1MDAzZXR5cGUgPSBQUlVFVEhfU1dEQVRBX1hEUEY7XG4rXHRzd2RhdGEtXHUwMDNldHlwZSA9IChidWZmX3R5cGUgPT0gUFJVRVRIX1RYX0JVRkZfVFlQRV9YRFBfVFggP1xuK1x0XHRQUlVFVEhfU1dEQVRBX1hEUEZfVFggOiBQUlVFVEhfU1dEQVRBX1hEUEYpO1xuIFx0c3dkYXRhLVx1MDAzZWRhdGEueGRwZiA9IHhkcGY7XG4gXG4gXHQvKiBSZXBvcnQgQlFMIGJlZm9yZSBzZW5kaW5nIHRoZSBwYWNrZXQgKi9cbkBAIC04MDQsNiArODA3LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZW1hY194bWl0X3hkcF9mcmFtZSk7XG4gICovXG4gc3RhdGljIHUzMiBlbWFjX3J1bl94ZHAoc3RydWN0IHBydWV0aF9lbWFjICplbWFjLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyICpsZW4pXG4ge1xuK1x0ZW51bSBwcnVldGhfdHhfYnVmZl90eXBlIHR4X2J1ZmZfdHlwZTtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gZW1hYy1cdTAwM2VuZGV2O1xuIFx0c3RydWN0IG5ldGRldl9xdWV1ZSAqbmV0aWZfdHhxO1xuIFx0aW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTtcbkBAIC04MjYsMTEgKzgzMCwyMSBAQCBzdGF0aWMgdTMyIGVtYWNfcnVuX3hkcChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgKmxlblxuIFx0XHRcdGdvdG8gZHJvcDtcbiBcdFx0fVxuIFxuK1x0XHQvKiBJbiBBRl9YRFAgemVyby1jb3B5IG1vZGUgeGRwX2NvbnZlcnRfYnVmZl90b19mcmFtZSgpXG4rXHRcdCAqIGNsb25lcyB0aGUgeHNrIGJ1ZmZlciBpbnRvIGEgZnJlc2ggTUVNX1RZUEVfUEFHRV9PUkRFUjBcbitcdFx0ICogcGFnZSB0aGF0IGlzIG5vdCBETUEgbWFwcGVkLiBTdWNoIGEgZnJhbWUgbXVzdCBiZSBtYXBwZWRcbitcdFx0ICogdmlhIHRoZSBORE8gcGF0aDsgb25seSBhIHBhZ2UgcG9vbC1iYWNrZWQgZnJhbWUgYWxyZWFkeVxuK1x0XHQgKiBjYXJyaWVzIGEgdXNhYmxlIHBhZ2VfcG9vbCBETUEgYWRkcmVzcy5cbitcdFx0ICovXG4rXHRcdHR4X2J1ZmZfdHlwZSA9ICh4ZHBmLVx1MDAzZW1lbV90eXBlID09IE1FTV9UWVBFX1BBR0VfUE9PTCA/XG4rXHRcdFx0XHRQUlVFVEhfVFhfQlVGRl9UWVBFX1hEUF9UWCA6XG4rXHRcdFx0XHRQUlVFVEhfVFhfQlVGRl9UWVBFX1hEUF9ORE8pO1xuK1xuIFx0XHRxX2lkeCA9IGNwdSAlIGVtYWMtXHUwMDNldHhfY2hfbnVtO1xuIFx0XHRuZXRpZl90eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKG5kZXYsIHFfaWR4KTtcbiBcdFx0X19uZXRpZl90eF9sb2NrKG5ldGlmX3R4cSwgY3B1KTtcbiBcdFx0cmVzdWx0ID0gZW1hY194bWl0X3hkcF9mcmFtZShlbWFjLCB4ZHBmLCBxX2lkeCxcbi1cdFx0XHRcdFx0ICAgICBQUlVFVEhfVFhfQlVGRl9UWVBFX1hEUF9UWCk7XG4rXHRcdFx0XHRcdCAgICAgdHhfYnVmZl90eXBlKTtcbiBcdFx0X19uZXRpZl90eF91bmxvY2sobmV0aWZfdHhxKTtcbiBcdFx0aWYgKHJlc3VsdCA9PSBJQ1NTR19YRFBfQ09OU1VNRUQpIHtcbiBcdFx0XHRuZGV2LVx1MDAzZXN0YXRzLnR4X2Ryb3BwZWQrKztcbkBAIC0xMzk1LDYgKzE0MDksNyBAQCB2b2lkIHBydWV0aF90eF9jbGVhbnVwKHZvaWQgKmRhdGEsIGRtYV9hZGRyX3QgZGVzY19kbWEpXG4gXHRcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQUlVFVEhfU1dEQVRBX1hEUEY6XG4rXHRjYXNlIFBSVUVUSF9TV0RBVEFfWERQRl9UWDpcbiBcdFx0eGRwZiA9IHN3ZGF0YS1cdTAwM2VkYXRhLnhkcGY7XG4gXHRcdHhkcF9yZXR1cm5fZnJhbWUoeGRwZik7XG4gXHRcdGJyZWFrO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmhcbmluZGV4IGRmOTNkMTVjNWI3ODZkLi4wMGJiNzYwZDY4YTk0ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaFxuQEAgLTE1Myw2ICsxNTMsNyBAQCBlbnVtIHBydWV0aF9zd2RhdGFfdHlwZSB7XG4gXHRQUlVFVEhfU1dEQVRBX0NNRCxcbiBcdFBSVUVUSF9TV0RBVEFfWERQRixcbiBcdFBSVUVUSF9TV0RBVEFfWFNLLFxuK1x0UFJVRVRIX1NXREFUQV9YRFBGX1RYLFxuIH07XG4gXG4gZW51bSBwcnVldGhfdHhfYnVmZl90eXBlIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA3OjM4OjA3LjA4MzkwODM2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE2NzI4NDY0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBUSSBJQ1NTRyBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIHRvdWNoaW5nIGBpY3NzZ19jb21tb24uY2AgYW5kIGBpY3NzZ19wcnVldGguaGAgaW4gdGhlIFRJIElDU1NHIEV0aGVybmV0IGRyaXZlciBkaXJlY3RvcnkuIEl0J3MgYWRkaW5nIGBQUlVFVEhfU1dEQVRBX1hEUEZfVFhgIGFuZCBtYWtpbmcgc2lnbmlmaWNhbnQgY2hhbmdlcyB0byB0aGUgWERQLXJlbGF0ZWQgdHJhbnNtaXQgcGF0aHM6IGBwcnVldGhfeG1pdF9mcmVlYCwgYGVtYWNfdHhfY29tcGxldGVfcGFja2V0c2AsIGBlbWFjX3htaXRfeGRwX2ZyYW1lYCwgYW5kIGBwcnVldGhfdHhfY2xlYW51cGAuIEl0IGFsc28gbG9va3MgbGlrZSBgZW1hY19ydW5feGRwYCBoYXMgYmVlbiBtb2RpZmllZCB0byBoYW5kbGUgYE1FTV9UWVBFX1BBR0VfUE9PTGAgYW5kIHNldCB0aGUgYHR4X2J1ZmZfdHlwZWAgYXBwcm9wcmlhdGVseS4gU3BlY2lmaWNhbGx5LCB3ZSdyZSBsb29raW5nIGF0IHNldHRpbmcgYHR4X2J1ZmZfdHlwZWAgdG8gZWl0aGVyIGBQUlVFVEhfVFhfQlVGRl9UWVBFX1hEUF9UWGAgb3IgYFBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX05ET2AuXG5cblRoaXMgc2NyZWFtcyBYRFAgb2ZmbG9hZCBmb3IgdGhpcyBUSSBJQ1NTRyBFdGhlcm5ldCBibG9jay4gTm93LCBnaXZlbiBteSBleHBlcmllbmNlIHdpdGggdGhpcyBhcmNoaXRlY3R1cmUsIEkga25vdyB0aGF0IFRJIElDU1NHLCB3aGljaCBpbmNsdWRlcyB0aGUgUFJVLUlDU1MsIGlzIHByZXR0eSBtdWNoIHRpZWQgdG8gc3BlY2lmaWMgVGV4YXMgSW5zdHJ1bWVudHMgU29DcywgbGlrZSB0aGUgQU02NXggYW5kIEFNNjR4IHNlcmllcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gZ29pbmcgdG8gYmUgKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0PyBJIGNhbid0IGltbWVkaWF0ZWx5IHJlY2FsbCBzZWVpbmcgYSBnb29kIElDU1NHIGVtdWxhdGlvbiBpbiBRRU1VIG9yIGV2ZW4gR29vZ2xlIENvbXB1dGUgRW5naW5lLiBUaG9zZSBoYXJkd2FyZSBibG9ja3MgYXJlIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBTb0Mgc2lsaWNvbi4gSXQncyB1bmxpa2VseSB0aGF0IHRoZSBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIGFueSBwbGF0Zm9ybSBvdGhlciB0aGFuIHRoZSBhY3R1YWwgc2lsaWNvbi5cblxuQWxyaWdodCwgbGV0J3MgY29uZmlybSBteSBzdXNwaWNpb25zLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMuIEknbSBnb2luZyB0byBzZWFyY2ggZm9yIGBUSV9JQ1NTR19QUlVFVEhgIG9yIGEgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBzZWUgaWYgdGhlcmUncyBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb3IgcGxhdGZvcm0tc3BlY2lmaWMgbG9naWMgdGhhdCBtaWdodCBpbGx1bWluYXRlIHRoaXMgZnVydGhlci4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIHRoZXJlJ3MgYW55IHBvc3NpYmlsaXR5IG9mIGVtdWxhdGluZyB0aGlzIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxNSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA3OjM4OjEzLjI1MTE5NjQ2NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjMwODI1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVElfSUNTU0dfUFJVRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTE2OT1jb25maWcgVExBTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxODY6Y29uZmlnIFRJX0lDU1NHX1BSVUVUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTg3LVxcdHRyaXN0YXRlIFxcXCJUSSBHaWdhYml0IFBSVSBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIwNDpjb25maWcgVElfSUNTU0dfUFJVRVRIX1NSMVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjA1LVxcdHRyaXN0YXRlIFxcXCJUSSBHaWdhYml0IFBSVSBTUjEuMCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA3OjM4OjEzLjM0NzUxNDMxNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTE5Mjk3NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uLCBwcmVzZW50ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBEZXBlbmRlbmNpZXMgb2YgVElfSUNTU0dfUFJVRVRIKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRJX0lDU1NHX1BSVUVUSGAuIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbiwgaXNuJ3QgaXQ/IFVuZGVyc3RhbmRpbmcgd2hhdCB0aGlzIG1vZHVsZSByZWxpZXMgb24gaXMgYWJzb2x1dGVseSBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgYmVoYXZpb3IsIHBvdGVudGlhbCBpbXBhY3Qgb24gdGhlIHN5c3RlbSwgYW5kIGhvdyB0byBwcm9wZXJseSBjb25maWd1cmUgYW5kIGludGVncmF0ZSBpdC4gSSBuZWVkIHRvIGtub3cgdGhlIHByZXJlcXVpc2l0ZXM6IG90aGVyIGRyaXZlcnMsIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zLCBwZXJoYXBzIGZpcm13YXJlIHZlcnNpb25zLCBhbmQgYW55IHJlbGV2YW50IGxpYnJhcmllcyBvciBzdXBwb3J0IG1vZHVsZXMuIFRoZSBkZXBlbmRlbmN5IHRyZWUgaXMgd2hhdCBJIG5lZWQgdG8gdW5wYWNrLiBJJ2xsIG5lZWQgdG8gY29uc2lkZXIgbm90IGp1c3QgdGhlIGltbWVkaWF0ZWx5IG9idmlvdXMgZGVwZW5kZW5jaWVzLCBidXQgYWxzbyB0aG9zZSB0aGF0IGFyZSBtb3JlIGRlZXBseSBuZXN0ZWQuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIGF2b2lkaW5nIGNvbmZsaWN0cywgZW5zdXJpbmcgcHJvcGVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgYW5kIG9wdGltaXppbmcgb3ZlcmFsbCBwZXJmb3JtYW5jZS4gU28sIG15IGZvY3VzIG5vdyBpcyBpZGVudGlmeWluZyB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kIGNhdGFsb2dpbmcgdGhlbSBzeXN0ZW1hdGljYWxseS4gSSdsbCBuZWVkIHRvIHJlZmVyIHRvIGRvY3VtZW50YXRpb24sIGNvZGUsIGFuZCBwb3RlbnRpYWxseSBldmVuIGRlYnVnIHRoZSBzeXN0ZW0gaWYgdGhlIGluZm9ybWF0aW9uIGlzbid0IHJlYWRpbHkgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTgyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDc6Mzg6MTYuODU5NDQ2NTkzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0OTY4MzY5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipUSV9JQ1NTR19QUlVFVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNzozODoxNi45NTQ0MjQyNzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjI2MDMxNTg4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKktjb25maWcgUmV2aWV3IGZvciBUSV9JQ1NTR19QUlVFVEgqKlxuXG5Pa2F5LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcGF0aCwgSSByZWFsbHkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgYFRJX0lDU1NHX1BSVUVUSGAuIFRoYXQncyB0aGUgY3J1Y2lhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBjb25maWd1cmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBkcml2ZXIuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgaWYgaXQgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkIGFuZCB3aHksIG9yIGlmIGl0IGlzIGRpc2FibGVkLCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBpdCAqY2FuKiBiZS4gQXJlIHRoZXJlIG90aGVyIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGF1dG9tYXRpY2FsbHkgcHVsbGVkIGluIHdoZW4gdGhpcyBpcyBzZWxlY3RlZD8gQXJlIHRoZXJlIGFueSBjb25mbGljdGluZyBvcHRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gVGhpcyB3aWxsIGhlbHAgbWUgcXVpY2tseSB1bmRlcnN0YW5kIHdoeSBgVElfSUNTU0dfUFJVRVRIYCBpcyBiZWhhdmluZyB0aGUgd2F5IGl0IGlzLCBvciBpZiBpdCB3aWxsIGJlaGF2ZSB0aGUgd2F5IGl0IGlzIHN1cHBvc2VkIHRvLiBHcmFzcGluZyB0aGlzIGNvbnRleHQgbm93IHdpbGwgc2F2ZSBtZSBhIHRvbiBvZiB0aW1lIGRvd24gdGhlIHJvYWQuIEFscmlnaHQsIEtjb25maWcsIGhlcmUgSSBjb21lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDc1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDc6Mzg6MjkuMjE0NzQzNzAzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODYsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODY6XFx0Y29uZmlnIFRJX0lDU1NHX1BSVUVUSFxcbiAxODc6XFx0XFx0dHJpc3RhdGUgXFxcIlRJIEdpZ2FiaXQgUFJVIEV0aGVybmV0IGRyaXZlclxcXCJcXG4gMTg4OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gMTg5OlxcdFxcdHNlbGVjdCBUSV9JQ1NTX0lFUFxcbiAxOTA6XFx0XFx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXFxuIDE5MTpcXHRcXHRkZXBlbmRzIG9uIFBSVV9SRU1PVEVQUk9DXFxuIDE5MjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcXG4gMTkzOlxcdFxcdGRlcGVuZHMgb24gQVJDSF9LMyBcXHUwMDI2XFx1MDAyNiBPRiBcXHUwMDI2XFx1MDAyNiBUSV9LM19VRE1BX0dMVUVfTEFZRVJcXG4gMTk0OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gMTk1OlxcdFxcdGRlcGVuZHMgb24gSFNSIHx8ICFIU1JcXG4gMTk2OlxcdFxcdGhlbHBcXG4gMTk3OlxcdFxcdCAgU3VwcG9ydCBkdWFsIEdpZ2FiaXQgRXRoZXJuZXQgcG9ydHMgb3ZlciB0aGUgSUNTU0cgUFJVIFN1YnN5c3RlbS5cXG4gMTk4OlxcdFxcdCAgVGhpcyBzdWJzeXN0ZW0gaXMgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggdGhlIEFNNjUgcGxhdGZvcm0uXFxuIDE5OTpcXHRcXG4gMjAwOlxcdFxcdCAgVGhpcyBkcml2ZXIgcmVxdWlyZXMgZmlybXdhcmUgYmluYXJpZXMgd2hpY2ggd2lsbCBydW4gb24gdGhlIFBSVXNcXG4gMjAxOlxcdFxcdCAgdG8gc3VwcG9ydCB0aGUgRXRoZXJuZXQgb3BlcmF0aW9uLiBDdXJyZW50bHksIGl0IHN1cHBvcnRzIEV0aGVybmV0XFxuIDIwMjpcXHRcXHQgIHdpdGggMUcgYW5kIDEwME0gbGluayBzcGVlZC5cXG4gMjAzOlxcdFxcbiAyMDQ6XFx0Y29uZmlnIFRJX0lDU1NHX1BSVUVUSF9TUjFcXG4gMjA1OlxcdFxcdHRyaXN0YXRlIFxcXCJUSSBHaWdhYml0IFBSVSBTUjEuMCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA3OjM4OjI5LjIxNDg0NDA3M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMDcxODcxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBoaW5nZXMgb24gdGhyZWUga2V5IGZhY3RvcnM6IGBBUkNIX0szYCwgYE9GYCwgYW5kIGBUSV9LM19VRE1BX0dMVUVfTEFZRVJgLiBUaGUgZmlyc3Qgb25lLCBgQVJDSF9LM2AsIGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgVEkncyBLMyBNdWx0aWNvcmUgU29DIGFyY2hpdGVjdHVyZSDigJMgYSBoYXJkd2FyZS1zcGVjaWZpYyBiZWFzdC4gSSBrbm93IHRoaXMgaXMgYSBkcml2ZXIgZGVzaWduZWQgZm9yIHRob3NlIHBhcnRpY3VsYXIgVEkgU29DcywgbWVhbmluZyBpdCdzIGludHJpbnNpY2FsbHkgdGllZCB0byB0aGUgc2lsaWNvbi5cblxuVGhlIGltcGxpY2F0aW9uIGlzIGNsZWFyOiB5b3UgY2FuJ3Qgc2ltcGx5IGZpcmUgdXAgYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBzb21ldGhpbmcgbGlrZSBRRU1VIG9yIEdDRSwgYW5kIGV4cGVjdCB0byBtZWFuaW5nZnVsbHkgZnV6eiB0aGlzLiBJdCBuZWVkcyB0aGF0IHNwZWNpZmljIGhhcmR3YXJlLCBvciBhdCBsZWFzdCBhIGhpZ2hseSBhY2N1cmF0ZSBlbXVsYXRpb24gb2YgaXQsIGFuZCBmcmFua2x5LCB0aGF0IGxldmVsIG9mIGVtdWxhdGlvbiBpcyByYXJlbHksIGlmIGV2ZXIsIHByZXNlbnQgaW4gdGhlIHN5emthbGxlciB3b3JrZmxvdy4gVGhlcmVmb3JlLCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgdGhpcyBpcyBub3QgXCJXb3J0aEZ1enppbmdcIi5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLiBPa2F5LCBJIHNlZS4gVGhlIGRyaXZlciBuZWVkcyBmaXJtd2FyZSBiaW5hcmllcyB0aGF0IHJ1biBvbiB0aGUgUFJVcyB0byBoYW5kbGUgRXRoZXJuZXQgb3BlcmF0aW9uLiBSaWdodCwgaXQncyBkZWZpbml0ZWx5IGhhcmR3YXJlLWRlcGVuZGVudC5cblxuU28sIHRoZSBwYXRjaCBpcyB0b3VjaGluZyB0aGUgVEkgSUNTU0cgUFJVIEV0aGVybmV0IGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ApLiBJdCdzIGFsbCBhYm91dCB0aGF0IFBSVS1JQ1NTIHN1YnN5c3RlbSBhbmQgdGhlIGZpcm13YXJlIGl0IG5lZWRzLiBUaGlzIGlzIGFib3V0IGFzIGhhcmR3YXJlLXNwZWNpZmljIGFzIGl0IGdldHMuIEl0J3Mgc2ltcGx5IG5vdCBhY2Nlc3NpYmxlIG9yIHRlc3RhYmxlIGluIG91ciBzdGFuZGFyZCBmdXp6aW5nIHNldHVwLlxuXG5Pa2F5LCBJJ20gY29uZmlkZW50IGluIG15IGNvbmNsdXNpb24uIEknbSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwODUsIk91dHB1dFRva2VucyI6OTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNzozODozNS4zMjIwMzQyMDlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVEkgSUNTU0cgUFJVIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gVGV4YXMgSW5zdHJ1bWVudHMgSzMgU29DcyBhbmQgcmVxdWlyZXMgdGhlIFBSVS1JQ1NTIGhhcmR3YXJlIHN1YnN5c3RlbSBhbmQgc3BlY2lmaWMgZmlybXdhcmUuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVEkgSUNTU0cgUFJVIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gVGV4YXMgSW5zdHJ1bWVudHMgSzMgU29DcyBhbmQgcmVxdWlyZXMgdGhlIFBSVS1JQ1NTIGhhcmR3YXJlIHN1YnN5c3RlbSBhbmQgc3BlY2lmaWMgZmlybXdhcmUuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowjqkmr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-25 07:27:12 +0000 UTC FinishedAt: 2026-06-25 07:38:36 +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+CgkJCTx0ZD4yMDI2LzA2LzI1IDA3OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUSSBJQ1NTRyBQUlUgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBzcGVjaWZpYyB0byBUZXhhcyBJbnN0cnVtZW50cyBLMyBTb0NzIGFuZCByZXF1aXJlcyB0aGUgUFJVLUlDU1MgaGFyZHdhcmUgc3Vic3lzdGVtIGFuZCBzcGVjaWZpYyBmaXJtd2FyZS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDc6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YzY2YmU4NzcwMzQ3NTMzMDVlMWVmNWUyZDkyMTI1ZGIzNjcwM2E0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDc6Mzg6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uY1xuaW5kZXggODJkZGVmOWMxN2Q1NGUuLjY0YWUzNzA0NDgxZTA0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jXG5AQCAtMTg1LDcgJiM0MzsxODUsOCBAQCB2b2lkIHBydWV0aF94bWl0X2ZyZWUoc3RydWN0IHBydWV0aF90eF9jaG4gKnR4X2NobixcbiBcdGZpcnN0X2Rlc2MgPSBkZXNjO1xuIFx0bmV4dF9kZXNjID0gZmlyc3RfZGVzYztcbiBcdHN3ZGF0YSA9IGNwcGk1X2hkZXNjX2dldF9zd2RhdGEoZmlyc3RfZGVzYyk7XG4tXHRpZiAoc3dkYXRhLVx1MDAzZXR5cGUgPT0gUFJVRVRIX1NXREFUQV9YU0spXG4mIzQzO1x0aWYgKHN3ZGF0YS1cdTAwM2V0eXBlID09IFBSVUVUSF9TV0RBVEFfWFNLIHx8XG4mIzQzO1x0ICAgIHN3ZGF0YS1cdTAwM2V0eXBlID09IFBSVUVUSF9TV0RBVEFfWERQRl9UWClcbiBcdFx0Z290byBmcmVlX3Bvb2w7XG4gXG4gXHRjcHBpNV9oZGVzY19nZXRfb2J1ZihmaXJzdF9kZXNjLCBcdTAwMjZidWZfZG1hLCBcdTAwMjZidWZfZG1hX2xlbik7XG5AQCAtMjU5LDYgJiM0MzsyNjAsNyBAQCBpbnQgZW1hY190eF9jb21wbGV0ZV9wYWNrZXRzKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgaW50IGNobixcbiBcdFx0XHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgYnVkZ2V0KTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBQUlVFVEhfU1dEQVRBX1hEUEY6XG4mIzQzO1x0XHRjYXNlIFBSVUVUSF9TV0RBVEFfWERQRl9UWDpcbiBcdFx0XHR4ZHBmID0gc3dkYXRhLVx1MDAzZWRhdGEueGRwZjtcbiBcdFx0XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKG5kZXYsIDEsIHhkcGYtXHUwMDNlbGVuKTtcbiBcdFx0XHR0b3RhbF9ieXRlcyAmIzQzOz0geGRwZi1cdTAwM2VsZW47XG5AQCAtNzY5LDcgJiM0Mzs3NzEsOCBAQCB1MzIgZW1hY194bWl0X3hkcF9mcmFtZShzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsXG4gXHRrM191ZG1hX2dsdWVfdHhfZG1hX3RvX2NwcGk1X2FkZHIodHhfY2huLVx1MDAzZXR4X2NobiwgXHUwMDI2YnVmX2RtYSk7XG4gXHRjcHBpNV9oZGVzY19hdHRhY2hfYnVmKGZpcnN0X2Rlc2MsIGJ1Zl9kbWEsIHhkcGYtXHUwMDNlbGVuLCBidWZfZG1hLCB4ZHBmLVx1MDAzZWxlbik7XG4gXHRzd2RhdGEgPSBjcHBpNV9oZGVzY19nZXRfc3dkYXRhKGZpcnN0X2Rlc2MpO1xuLVx0c3dkYXRhLVx1MDAzZXR5cGUgPSBQUlVFVEhfU1dEQVRBX1hEUEY7XG4mIzQzO1x0c3dkYXRhLVx1MDAzZXR5cGUgPSAoYnVmZl90eXBlID09IFBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX1RYID9cbiYjNDM7XHRcdFBSVUVUSF9TV0RBVEFfWERQRl9UWCA6IFBSVUVUSF9TV0RBVEFfWERQRik7XG4gXHRzd2RhdGEtXHUwMDNlZGF0YS54ZHBmID0geGRwZjtcbiBcbiBcdC8qIFJlcG9ydCBCUUwgYmVmb3JlIHNlbmRpbmcgdGhlIHBhY2tldCAqL1xuQEAgLTgwNCw2ICYjNDM7ODA3LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZW1hY194bWl0X3hkcF9mcmFtZSk7XG4gICovXG4gc3RhdGljIHUzMiBlbWFjX3J1bl94ZHAoc3RydWN0IHBydWV0aF9lbWFjICplbWFjLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyICpsZW4pXG4ge1xuJiM0MztcdGVudW0gcHJ1ZXRoX3R4X2J1ZmZfdHlwZSB0eF9idWZmX3R5cGU7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IGVtYWMtXHUwMDNlbmRldjtcbiBcdHN0cnVjdCBuZXRkZXZfcXVldWUgKm5ldGlmX3R4cTtcbiBcdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XG5AQCAtODI2LDExICYjNDM7ODMwLDIxIEBAIHN0YXRpYyB1MzIgZW1hY19ydW5feGRwKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiAqbGVuXG4gXHRcdFx0Z290byBkcm9wO1xuIFx0XHR9XG4gXG4mIzQzO1x0XHQvKiBJbiBBRl9YRFAgemVyby1jb3B5IG1vZGUgeGRwX2NvbnZlcnRfYnVmZl90b19mcmFtZSgpXG4mIzQzO1x0XHQgKiBjbG9uZXMgdGhlIHhzayBidWZmZXIgaW50byBhIGZyZXNoIE1FTV9UWVBFX1BBR0VfT1JERVIwXG4mIzQzO1x0XHQgKiBwYWdlIHRoYXQgaXMgbm90IERNQSBtYXBwZWQuIFN1Y2ggYSBmcmFtZSBtdXN0IGJlIG1hcHBlZFxuJiM0MztcdFx0ICogdmlhIHRoZSBORE8gcGF0aDsgb25seSBhIHBhZ2UgcG9vbC1iYWNrZWQgZnJhbWUgYWxyZWFkeVxuJiM0MztcdFx0ICogY2FycmllcyBhIHVzYWJsZSBwYWdlX3Bvb2wgRE1BIGFkZHJlc3MuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHR4X2J1ZmZfdHlwZSA9ICh4ZHBmLVx1MDAzZW1lbV90eXBlID09IE1FTV9UWVBFX1BBR0VfUE9PTCA/XG4mIzQzO1x0XHRcdFx0UFJVRVRIX1RYX0JVRkZfVFlQRV9YRFBfVFggOlxuJiM0MztcdFx0XHRcdFBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX05ETyk7XG4mIzQzO1xuIFx0XHRxX2lkeCA9IGNwdSAlIGVtYWMtXHUwMDNldHhfY2hfbnVtO1xuIFx0XHRuZXRpZl90eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKG5kZXYsIHFfaWR4KTtcbiBcdFx0X19uZXRpZl90eF9sb2NrKG5ldGlmX3R4cSwgY3B1KTtcbiBcdFx0cmVzdWx0ID0gZW1hY194bWl0X3hkcF9mcmFtZShlbWFjLCB4ZHBmLCBxX2lkeCxcbi1cdFx0XHRcdFx0ICAgICBQUlVFVEhfVFhfQlVGRl9UWVBFX1hEUF9UWCk7XG4mIzQzO1x0XHRcdFx0XHQgICAgIHR4X2J1ZmZfdHlwZSk7XG4gXHRcdF9fbmV0aWZfdHhfdW5sb2NrKG5ldGlmX3R4cSk7XG4gXHRcdGlmIChyZXN1bHQgPT0gSUNTU0dfWERQX0NPTlNVTUVEKSB7XG4gXHRcdFx0bmRldi1cdTAwM2VzdGF0cy50eF9kcm9wcGVkJiM0MzsmIzQzOztcbkBAIC0xMzk1LDYgJiM0MzsxNDA5LDcgQEAgdm9pZCBwcnVldGhfdHhfY2xlYW51cCh2b2lkICpkYXRhLCBkbWFfYWRkcl90IGRlc2NfZG1hKVxuIFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUFJVRVRIX1NXREFUQV9YRFBGOlxuJiM0MztcdGNhc2UgUFJVRVRIX1NXREFUQV9YRFBGX1RYOlxuIFx0XHR4ZHBmID0gc3dkYXRhLVx1MDAzZWRhdGEueGRwZjtcbiBcdFx0eGRwX3JldHVybl9mcmFtZSh4ZHBmKTtcbiBcdFx0YnJlYWs7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaFxuaW5kZXggZGY5M2QxNWM1Yjc4NmQuLjAwYmI3NjBkNjhhOTRkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oXG5AQCAtMTUzLDYgJiM0MzsxNTMsNyBAQCBlbnVtIHBydWV0aF9zd2RhdGFfdHlwZSB7XG4gXHRQUlVFVEhfU1dEQVRBX0NNRCxcbiBcdFBSVUVUSF9TV0RBVEFfWERQRixcbiBcdFBSVUVUSF9TV0RBVEFfWFNLLFxuJiM0MztcdFBSVUVUSF9TV0RBVEFfWERQRl9UWCxcbiB9O1xuIFxuIGVudW0gcHJ1ZXRoX3R4X2J1ZmZfdHlwZSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDc6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRJIElDU1NHIFBSVSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIHNwZWNpZmljIHRvIFRleGFzIEluc3RydW1lbnRzIEszIFNvQ3MgYW5kIHJlcXVpcmVzIHRoZSBQUlUtSUNTUyBoYXJkd2FyZSBzdWJzeXN0ZW0gYW5kIHNwZWNpZmljIGZpcm13YXJlLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWM2NmJlODc3MDM0NzUzMzA1ZTFlZjVlMmQ5MjEyNWRiMzY3MDNhNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVuIDI1IDA3OjM4OjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uYwppbmRleCA4MmRkZWY5YzE3ZDU0ZS4uNjRhZTM3MDQ0ODFlMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jCkBAIC0xODUsNyAmIzQzOzE4NSw4IEBAIHZvaWQgcHJ1ZXRoX3htaXRfZnJlZShzdHJ1Y3QgcHJ1ZXRoX3R4X2NobiAqdHhfY2huLAogCWZpcnN0X2Rlc2MgPSBkZXNjOwogCW5leHRfZGVzYyA9IGZpcnN0X2Rlc2M7CiAJc3dkYXRhID0gY3BwaTVfaGRlc2NfZ2V0X3N3ZGF0YShmaXJzdF9kZXNjKTsKLQlpZiAoc3dkYXRhLSZndDt0eXBlID09IFBSVUVUSF9TV0RBVEFfWFNLKQomIzQzOwlpZiAoc3dkYXRhLSZndDt0eXBlID09IFBSVUVUSF9TV0RBVEFfWFNLIHx8CiYjNDM7CSAgICBzd2RhdGEtJmd0O3R5cGUgPT0gUFJVRVRIX1NXREFUQV9YRFBGX1RYKQogCQlnb3RvIGZyZWVfcG9vbDsKIAogCWNwcGk1X2hkZXNjX2dldF9vYnVmKGZpcnN0X2Rlc2MsICZhbXA7YnVmX2RtYSwgJmFtcDtidWZfZG1hX2xlbik7CkBAIC0yNTksNiAmIzQzOzI2MCw3IEBAIGludCBlbWFjX3R4X2NvbXBsZXRlX3BhY2tldHMoc3RydWN0IHBydWV0aF9lbWFjICplbWFjLCBpbnQgY2huLAogCQkJbmFwaV9jb25zdW1lX3NrYihza2IsIGJ1ZGdldCk7CiAJCQlicmVhazsKIAkJY2FzZSBQUlVFVEhfU1dEQVRBX1hEUEY6CiYjNDM7CQljYXNlIFBSVUVUSF9TV0RBVEFfWERQRl9UWDoKIAkJCXhkcGYgPSBzd2RhdGEtJmd0O2RhdGEueGRwZjsKIAkJCWRldl9zd19uZXRzdGF0c190eF9hZGQobmRldiwgMSwgeGRwZi0mZ3Q7bGVuKTsKIAkJCXRvdGFsX2J5dGVzICYjNDM7PSB4ZHBmLSZndDtsZW47CkBAIC03NjksNyAmIzQzOzc3MSw4IEBAIHUzMiBlbWFjX3htaXRfeGRwX2ZyYW1lKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywKIAlrM191ZG1hX2dsdWVfdHhfZG1hX3RvX2NwcGk1X2FkZHIodHhfY2huLSZndDt0eF9jaG4sICZhbXA7YnVmX2RtYSk7CiAJY3BwaTVfaGRlc2NfYXR0YWNoX2J1ZihmaXJzdF9kZXNjLCBidWZfZG1hLCB4ZHBmLSZndDtsZW4sIGJ1Zl9kbWEsIHhkcGYtJmd0O2xlbik7CiAJc3dkYXRhID0gY3BwaTVfaGRlc2NfZ2V0X3N3ZGF0YShmaXJzdF9kZXNjKTsKLQlzd2RhdGEtJmd0O3R5cGUgPSBQUlVFVEhfU1dEQVRBX1hEUEY7CiYjNDM7CXN3ZGF0YS0mZ3Q7dHlwZSA9IChidWZmX3R5cGUgPT0gUFJVRVRIX1RYX0JVRkZfVFlQRV9YRFBfVFggPwomIzQzOwkJUFJVRVRIX1NXREFUQV9YRFBGX1RYIDogUFJVRVRIX1NXREFUQV9YRFBGKTsKIAlzd2RhdGEtJmd0O2RhdGEueGRwZiA9IHhkcGY7CiAKIAkvKiBSZXBvcnQgQlFMIGJlZm9yZSBzZW5kaW5nIHRoZSBwYWNrZXQgKi8KQEAgLTgwNCw2ICYjNDM7ODA3LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZW1hY194bWl0X3hkcF9mcmFtZSk7CiAgKi8KIHN0YXRpYyB1MzIgZW1hY19ydW5feGRwKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiAqbGVuKQogewomIzQzOwllbnVtIHBydWV0aF90eF9idWZmX3R5cGUgdHhfYnVmZl90eXBlOwogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gZW1hYy0mZ3Q7bmRldjsKIAlzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpuZXRpZl90eHE7CiAJaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKQEAgLTgyNiwxMSAmIzQzOzgzMCwyMSBAQCBzdGF0aWMgdTMyIGVtYWNfcnVuX3hkcChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgKmxlbgogCQkJZ290byBkcm9wOwogCQl9CiAKJiM0MzsJCS8qIEluIEFGX1hEUCB6ZXJvLWNvcHkgbW9kZSB4ZHBfY29udmVydF9idWZmX3RvX2ZyYW1lKCkKJiM0MzsJCSAqIGNsb25lcyB0aGUgeHNrIGJ1ZmZlciBpbnRvIGEgZnJlc2ggTUVNX1RZUEVfUEFHRV9PUkRFUjAKJiM0MzsJCSAqIHBhZ2UgdGhhdCBpcyBub3QgRE1BIG1hcHBlZC4gU3VjaCBhIGZyYW1lIG11c3QgYmUgbWFwcGVkCiYjNDM7CQkgKiB2aWEgdGhlIE5ETyBwYXRoOyBvbmx5IGEgcGFnZSBwb29sLWJhY2tlZCBmcmFtZSBhbHJlYWR5CiYjNDM7CQkgKiBjYXJyaWVzIGEgdXNhYmxlIHBhZ2VfcG9vbCBETUEgYWRkcmVzcy4KJiM0MzsJCSAqLwomIzQzOwkJdHhfYnVmZl90eXBlID0gKHhkcGYtJmd0O21lbV90eXBlID09IE1FTV9UWVBFX1BBR0VfUE9PTCA/CiYjNDM7CQkJCVBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX1RYIDoKJiM0MzsJCQkJUFJVRVRIX1RYX0JVRkZfVFlQRV9YRFBfTkRPKTsKJiM0MzsKIAkJcV9pZHggPSBjcHUgJSBlbWFjLSZndDt0eF9jaF9udW07CiAJCW5ldGlmX3R4cSA9IG5ldGRldl9nZXRfdHhfcXVldWUobmRldiwgcV9pZHgpOwogCQlfX25ldGlmX3R4X2xvY2sobmV0aWZfdHhxLCBjcHUpOwogCQlyZXN1bHQgPSBlbWFjX3htaXRfeGRwX2ZyYW1lKGVtYWMsIHhkcGYsIHFfaWR4LAotCQkJCQkgICAgIFBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX1RYKTsKJiM0MzsJCQkJCSAgICAgdHhfYnVmZl90eXBlKTsKIAkJX19uZXRpZl90eF91bmxvY2sobmV0aWZfdHhxKTsKIAkJaWYgKHJlc3VsdCA9PSBJQ1NTR19YRFBfQ09OU1VNRUQpIHsKIAkJCW5kZXYtJmd0O3N0YXRzLnR4X2Ryb3BwZWQmIzQzOyYjNDM7OwpAQCAtMTM5NSw2ICYjNDM7MTQwOSw3IEBAIHZvaWQgcHJ1ZXRoX3R4X2NsZWFudXAodm9pZCAqZGF0YSwgZG1hX2FkZHJfdCBkZXNjX2RtYSkKIAkJZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTsKIAkJYnJlYWs7CiAJY2FzZSBQUlVFVEhfU1dEQVRBX1hEUEY6CiYjNDM7CWNhc2UgUFJVRVRIX1NXREFUQV9YRFBGX1RYOgogCQl4ZHBmID0gc3dkYXRhLSZndDtkYXRhLnhkcGY7CiAJCXhkcF9yZXR1cm5fZnJhbWUoeGRwZik7CiAJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaAppbmRleCBkZjkzZDE1YzViNzg2ZC4uMDBiYjc2MGQ2OGE5NGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oCkBAIC0xNTMsNiAmIzQzOzE1Myw3IEBAIGVudW0gcHJ1ZXRoX3N3ZGF0YV90eXBlIHsKIAlQUlVFVEhfU1dEQVRBX0NNRCwKIAlQUlVFVEhfU1dEQVRBX1hEUEYsCiAJUFJVRVRIX1NXREFUQV9YU0ssCiYjNDM7CVBSVUVUSF9TV0RBVEFfWERQRl9UWCwKIH07CiAKIGVudW0gcHJ1ZXRoX3R4X2J1ZmZfdHlwZSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMTUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVEkgSUNTU0cgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyB0b3VjaGluZyBgaWNzc2dfY29tbW9uLmNgIGFuZCBgaWNzc2dfcHJ1ZXRoLmhgIGluIHRoZSBUSSBJQ1NTRyBFdGhlcm5ldCBkcml2ZXIgZGlyZWN0b3J5LiBJdCYjMzk7cyBhZGRpbmcgYFBSVUVUSF9TV0RBVEFfWERQRl9UWGAgYW5kIG1ha2luZyBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIHRoZSBYRFAtcmVsYXRlZCB0cmFuc21pdCBwYXRoczogYHBydWV0aF94bWl0X2ZyZWVgLCBgZW1hY190eF9jb21wbGV0ZV9wYWNrZXRzYCwgYGVtYWNfeG1pdF94ZHBfZnJhbWVgLCBhbmQgYHBydWV0aF90eF9jbGVhbnVwYC4gSXQgYWxzbyBsb29rcyBsaWtlIGBlbWFjX3J1bl94ZHBgIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGhhbmRsZSBgTUVNX1RZUEVfUEFHRV9QT09MYCBhbmQgc2V0IHRoZSBgdHhfYnVmZl90eXBlYCBhcHByb3ByaWF0ZWx5LiBTcGVjaWZpY2FsbHksIHdlJiMzOTtyZSBsb29raW5nIGF0IHNldHRpbmcgYHR4X2J1ZmZfdHlwZWAgdG8gZWl0aGVyIGBQUlVFVEhfVFhfQlVGRl9UWVBFX1hEUF9UWGAgb3IgYFBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX05ET2AuCgpUaGlzIHNjcmVhbXMgWERQIG9mZmxvYWQgZm9yIHRoaXMgVEkgSUNTU0cgRXRoZXJuZXQgYmxvY2suIE5vdywgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHRoaXMgYXJjaGl0ZWN0dXJlLCBJIGtub3cgdGhhdCBUSSBJQ1NTRywgd2hpY2ggaW5jbHVkZXMgdGhlIFBSVS1JQ1NTLCBpcyBwcmV0dHkgbXVjaCB0aWVkIHRvIHNwZWNpZmljIFRleGFzIEluc3RydW1lbnRzIFNvQ3MsIGxpa2UgdGhlIEFNNjV4IGFuZCBBTTY0eCBzZXJpZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBldmVuIGdvaW5nIHRvIGJlICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBjYW4mIzM5O3QgaW1tZWRpYXRlbHkgcmVjYWxsIHNlZWluZyBhIGdvb2QgSUNTU0cgZW11bGF0aW9uIGluIFFFTVUgb3IgZXZlbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUuIFRob3NlIGhhcmR3YXJlIGJsb2NrcyBhcmUgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIFNvQyBzaWxpY29uLiBJdCYjMzk7cyB1bmxpa2VseSB0aGF0IHRoZSBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIGFueSBwbGF0Zm9ybSBvdGhlciB0aGFuIHRoZSBhY3R1YWwgc2lsaWNvbi4KCkFscmlnaHQsIGxldCYjMzk7cyBjb25maXJtIG15IHN1c3BpY2lvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMuIEkmIzM5O20gZ29pbmcgdG8gc2VhcmNoIGZvciBgVElfSUNTU0dfUFJVRVRIYCBvciBhIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBwbGF0Zm9ybS1zcGVjaWZpYyBsb2dpYyB0aGF0IG1pZ2h0IGlsbHVtaW5hdGUgdGhpcyBmdXJ0aGVyLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIHRoZXJlJiMzOTtzIGFueSBwb3NzaWJpbGl0eSBvZiBlbXVsYXRpbmcgdGhpcyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDc6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJX0lDU1NHX1BSVUVUSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTE2OT1jb25maWcgVExBTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxODY6Y29uZmlnIFRJX0lDU1NHX1BSVUVUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xODctXHR0cmlzdGF0ZSBcJiMzNDtUSSBHaWdhYml0IFBSVSBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjA0OmNvbmZpZyBUSV9JQ1NTR19QUlVFVEhfU1IxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwNS1cdHRyaXN0YXRlIFwmIzM0O1RJIEdpZ2FiaXQgUFJVIFNSMS4wIEV0aGVybmV0IGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxODIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uLCBwcmVzZW50ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgRGVwZW5kZW5jaWVzIG9mIFRJX0lDU1NHX1BSVUVUSCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRJX0lDU1NHX1BSVUVUSGAuIFRoYXQmIzM5O3MgdGhlIGNvcmUgcXVlc3Rpb24sIGlzbiYjMzk7dCBpdD8gVW5kZXJzdGFuZGluZyB3aGF0IHRoaXMgbW9kdWxlIHJlbGllcyBvbiBpcyBhYnNvbHV0ZWx5IGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciwgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgc3lzdGVtLCBhbmQgaG93IHRvIHByb3Blcmx5IGNvbmZpZ3VyZSBhbmQgaW50ZWdyYXRlIGl0LiBJIG5lZWQgdG8ga25vdyB0aGUgcHJlcmVxdWlzaXRlczogb3RoZXIgZHJpdmVycywgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMsIHBlcmhhcHMgZmlybXdhcmUgdmVyc2lvbnMsIGFuZCBhbnkgcmVsZXZhbnQgbGlicmFyaWVzIG9yIHN1cHBvcnQgbW9kdWxlcy4gVGhlIGRlcGVuZGVuY3kgdHJlZSBpcyB3aGF0IEkgbmVlZCB0byB1bnBhY2suIEkmIzM5O2xsIG5lZWQgdG8gY29uc2lkZXIgbm90IGp1c3QgdGhlIGltbWVkaWF0ZWx5IG9idmlvdXMgZGVwZW5kZW5jaWVzLCBidXQgYWxzbyB0aG9zZSB0aGF0IGFyZSBtb3JlIGRlZXBseSBuZXN0ZWQuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIGF2b2lkaW5nIGNvbmZsaWN0cywgZW5zdXJpbmcgcHJvcGVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgYW5kIG9wdGltaXppbmcgb3ZlcmFsbCBwZXJmb3JtYW5jZS4gU28sIG15IGZvY3VzIG5vdyBpcyBpZGVudGlmeWluZyB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kIGNhdGFsb2dpbmcgdGhlbSBzeXN0ZW1hdGljYWxseS4gSSYjMzk7bGwgbmVlZCB0byByZWZlciB0byBkb2N1bWVudGF0aW9uLCBjb2RlLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBkZWJ1ZyB0aGUgc3lzdGVtIGlmIHRoZSBpbmZvcm1hdGlvbiBpc24mIzM5O3QgcmVhZGlseSBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDc6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uLipUSV9JQ1NTR19QUlVFVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC90aS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NzUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqS2NvbmZpZyBSZXZpZXcgZm9yIFRJX0lDU1NHX1BSVUVUSCoqCgpPa2F5LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcGF0aCwgSSByZWFsbHkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgYFRJX0lDU1NHX1BSVUVUSGAuIFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgY29uZmlndXJhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZHJpdmVyLiBJIHdhbnQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIGlmIGl0IGhhcyBhbHJlYWR5IGJlZW4gZW5hYmxlZCBhbmQgd2h5LCBvciBpZiBpdCBpcyBkaXNhYmxlZCwgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQgKmNhbiogYmUuIEFyZSB0aGVyZSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBhdXRvbWF0aWNhbGx5IHB1bGxlZCBpbiB3aGVuIHRoaXMgaXMgc2VsZWN0ZWQ/IEFyZSB0aGVyZSBhbnkgY29uZmxpY3Rpbmcgb3B0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IFRoaXMgd2lsbCBoZWxwIG1lIHF1aWNrbHkgdW5kZXJzdGFuZCB3aHkgYFRJX0lDU1NHX1BSVUVUSGAgaXMgYmVoYXZpbmcgdGhlIHdheSBpdCBpcywgb3IgaWYgaXQgd2lsbCBiZWhhdmUgdGhlIHdheSBpdCBpcyBzdXBwb3NlZCB0by4gR3Jhc3BpbmcgdGhpcyBjb250ZXh0IG5vdyB3aWxsIHNhdmUgbWUgYSB0b24gb2YgdGltZSBkb3duIHRoZSByb2FkLiBBbHJpZ2h0LCBLY29uZmlnLCBoZXJlIEkgY29tZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4NjpcdGNvbmZpZyBUSV9JQ1NTR19QUlVFVEhcbiAxODc6XHRcdHRyaXN0YXRlIFwmIzM0O1RJIEdpZ2FiaXQgUFJVIEV0aGVybmV0IGRyaXZlclwmIzM0O1xuIDE4ODpcdFx0c2VsZWN0IFBIWUxJQlxuIDE4OTpcdFx0c2VsZWN0IFRJX0lDU1NfSUVQXG4gMTkwOlx0XHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcbiAxOTE6XHRcdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0NcbiAxOTI6XHRcdGRlcGVuZHMgb24gTkVUX1NXSVRDSERFVlxuIDE5MzpcdFx0ZGVwZW5kcyBvbiBBUkNIX0szIFx1MDAyNlx1MDAyNiBPRiBcdTAwMjZcdTAwMjYgVElfSzNfVURNQV9HTFVFX0xBWUVSXG4gMTk0Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gMTk1Olx0XHRkZXBlbmRzIG9uIEhTUiB8fCAhSFNSXG4gMTk2Olx0XHRoZWxwXG4gMTk3Olx0XHQgIFN1cHBvcnQgZHVhbCBHaWdhYml0IEV0aGVybmV0IHBvcnRzIG92ZXIgdGhlIElDU1NHIFBSVSBTdWJzeXN0ZW0uXG4gMTk4Olx0XHQgIFRoaXMgc3Vic3lzdGVtIGlzIGF2YWlsYWJsZSBzdGFydGluZyB3aXRoIHRoZSBBTTY1IHBsYXRmb3JtLlxuIDE5OTpcdFxuIDIwMDpcdFx0ICBUaGlzIGRyaXZlciByZXF1aXJlcyBmaXJtd2FyZSBiaW5hcmllcyB3aGljaCB3aWxsIHJ1biBvbiB0aGUgUFJVc1xuIDIwMTpcdFx0ICB0byBzdXBwb3J0IHRoZSBFdGhlcm5ldCBvcGVyYXRpb24uIEN1cnJlbnRseSwgaXQgc3VwcG9ydHMgRXRoZXJuZXRcbiAyMDI6XHRcdCAgd2l0aCAxRyBhbmQgMTAwTSBsaW5rIHNwZWVkLlxuIDIwMzpcdFxuIDIwNDpcdGNvbmZpZyBUSV9JQ1NTR19QUlVFVEhfU1IxXG4gMjA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUSSBHaWdhYml0IFBSVSBTUjEuMCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNzozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDg1CgkJCQkJCQlvdXRwdXQ6IDk0CgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBoaW5nZXMgb24gdGhyZWUga2V5IGZhY3RvcnM6IGBBUkNIX0szYCwgYE9GYCwgYW5kIGBUSV9LM19VRE1BX0dMVUVfTEFZRVJgLiBUaGUgZmlyc3Qgb25lLCBgQVJDSF9LM2AsIGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgVEkmIzM5O3MgSzMgTXVsdGljb3JlIFNvQyBhcmNoaXRlY3R1cmUg4oCTIGEgaGFyZHdhcmUtc3BlY2lmaWMgYmVhc3QuIEkga25vdyB0aGlzIGlzIGEgZHJpdmVyIGRlc2lnbmVkIGZvciB0aG9zZSBwYXJ0aWN1bGFyIFRJIFNvQ3MsIG1lYW5pbmcgaXQmIzM5O3MgaW50cmluc2ljYWxseSB0aWVkIHRvIHRoZSBzaWxpY29uLgoKVGhlIGltcGxpY2F0aW9uIGlzIGNsZWFyOiB5b3UgY2FuJiMzOTt0IHNpbXBseSBmaXJlIHVwIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgc29tZXRoaW5nIGxpa2UgUUVNVSBvciBHQ0UsIGFuZCBleHBlY3QgdG8gbWVhbmluZ2Z1bGx5IGZ1enogdGhpcy4gSXQgbmVlZHMgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZSwgb3IgYXQgbGVhc3QgYSBoaWdobHkgYWNjdXJhdGUgZW11bGF0aW9uIG9mIGl0LCBhbmQgZnJhbmtseSwgdGhhdCBsZXZlbCBvZiBlbXVsYXRpb24gaXMgcmFyZWx5LCBpZiBldmVyLCBwcmVzZW50IGluIHRoZSBzeXprYWxsZXIgd29ya2Zsb3cuIFRoZXJlZm9yZSwgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IHRoaXMgaXMgbm90ICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2suIE9rYXksIEkgc2VlLiBUaGUgZHJpdmVyIG5lZWRzIGZpcm13YXJlIGJpbmFyaWVzIHRoYXQgcnVuIG9uIHRoZSBQUlVzIHRvIGhhbmRsZSBFdGhlcm5ldCBvcGVyYXRpb24uIFJpZ2h0LCBpdCYjMzk7cyBkZWZpbml0ZWx5IGhhcmR3YXJlLWRlcGVuZGVudC4KClNvLCB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIFRJIElDU1NHIFBSVSBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9gKS4gSXQmIzM5O3MgYWxsIGFib3V0IHRoYXQgUFJVLUlDU1Mgc3Vic3lzdGVtIGFuZCB0aGUgZmlybXdhcmUgaXQgbmVlZHMuIFRoaXMgaXMgYWJvdXQgYXMgaGFyZHdhcmUtc3BlY2lmaWMgYXMgaXQgZ2V0cy4gSXQmIzM5O3Mgc2ltcGx5IG5vdCBhY2Nlc3NpYmxlIG9yIHRlc3RhYmxlIGluIG91ciBzdGFuZGFyZCBmdXp6aW5nIHNldHVwLgoKT2theSwgSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgY29uY2x1c2lvbi4gSSYjMzk7bSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA3OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRJIElDU1NHIFBSVSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIHNwZWNpZmljIHRvIFRleGFzIEluc3RydW1lbnRzIEszIFNvQ3MgYW5kIHJlcXVpcmVzIHRoZSBQUlUtSUNTUyBoYXJkd2FyZSBzdWJzeXN0ZW0gYW5kIHNwZWNpZmljIGZpcm13YXJlLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRJIElDU1NHIFBSVSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIHNwZWNpZmljIHRvIFRleGFzIEluc3RydW1lbnRzIEszIFNvQ3MgYW5kIHJlcXVpcmVzIHRoZSBQUlUtSUNTUyBoYXJkd2FyZSBzdWJzeXN0ZW0gYW5kIHNwZWNpZmljIGZpcm13YXJlLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA3OjM4OjA2LjUzMTA3NjEwNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NzkxMDA4MTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVEkgSUNTU0cgUFJVIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gVGV4YXMgSW5zdHJ1bWVudHMgSzMgU29DcyBhbmQgcmVxdWlyZXMgdGhlIFBSVS1JQ1NTIGhhcmR3YXJlIHN1YnN5c3RlbSBhbmQgc3BlY2lmaWMgZmlybXdhcmUuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNzozODowNi41MzEwODczMzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MTU3MjI4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVjNjZiZTg3NzAzNDc1MzMwNWUxZWY1ZTJkOTIxMjVkYjM2NzAzYTRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMDc6Mzg6MDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uY1xcbmluZGV4IDgyZGRlZjljMTdkNTRlLi42NGFlMzcwNDQ4MWUwNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jXFxuQEAgLTE4NSw3ICsxODUsOCBAQCB2b2lkIHBydWV0aF94bWl0X2ZyZWUoc3RydWN0IHBydWV0aF90eF9jaG4gKnR4X2NobixcXG4gXFx0Zmlyc3RfZGVzYyA9IGRlc2M7XFxuIFxcdG5leHRfZGVzYyA9IGZpcnN0X2Rlc2M7XFxuIFxcdHN3ZGF0YSA9IGNwcGk1X2hkZXNjX2dldF9zd2RhdGEoZmlyc3RfZGVzYyk7XFxuLVxcdGlmIChzd2RhdGEtXFx1MDAzZXR5cGUgPT0gUFJVRVRIX1NXREFUQV9YU0spXFxuK1xcdGlmIChzd2RhdGEtXFx1MDAzZXR5cGUgPT0gUFJVRVRIX1NXREFUQV9YU0sgfHxcXG4rXFx0ICAgIHN3ZGF0YS1cXHUwMDNldHlwZSA9PSBQUlVFVEhfU1dEQVRBX1hEUEZfVFgpXFxuIFxcdFxcdGdvdG8gZnJlZV9wb29sO1xcbiBcXG4gXFx0Y3BwaTVfaGRlc2NfZ2V0X29idWYoZmlyc3RfZGVzYywgXFx1MDAyNmJ1Zl9kbWEsIFxcdTAwMjZidWZfZG1hX2xlbik7XFxuQEAgLTI1OSw2ICsyNjAsNyBAQCBpbnQgZW1hY190eF9jb21wbGV0ZV9wYWNrZXRzKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgaW50IGNobixcXG4gXFx0XFx0XFx0bmFwaV9jb25zdW1lX3NrYihza2IsIGJ1ZGdldCk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIFBSVUVUSF9TV0RBVEFfWERQRjpcXG4rXFx0XFx0Y2FzZSBQUlVFVEhfU1dEQVRBX1hEUEZfVFg6XFxuIFxcdFxcdFxcdHhkcGYgPSBzd2RhdGEtXFx1MDAzZWRhdGEueGRwZjtcXG4gXFx0XFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZGV2LCAxLCB4ZHBmLVxcdTAwM2VsZW4pO1xcbiBcXHRcXHRcXHR0b3RhbF9ieXRlcyArPSB4ZHBmLVxcdTAwM2VsZW47XFxuQEAgLTc2OSw3ICs3NzEsOCBAQCB1MzIgZW1hY194bWl0X3hkcF9mcmFtZShzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsXFxuIFxcdGszX3VkbWFfZ2x1ZV90eF9kbWFfdG9fY3BwaTVfYWRkcih0eF9jaG4tXFx1MDAzZXR4X2NobiwgXFx1MDAyNmJ1Zl9kbWEpO1xcbiBcXHRjcHBpNV9oZGVzY19hdHRhY2hfYnVmKGZpcnN0X2Rlc2MsIGJ1Zl9kbWEsIHhkcGYtXFx1MDAzZWxlbiwgYnVmX2RtYSwgeGRwZi1cXHUwMDNlbGVuKTtcXG4gXFx0c3dkYXRhID0gY3BwaTVfaGRlc2NfZ2V0X3N3ZGF0YShmaXJzdF9kZXNjKTtcXG4tXFx0c3dkYXRhLVxcdTAwM2V0eXBlID0gUFJVRVRIX1NXREFUQV9YRFBGO1xcbitcXHRzd2RhdGEtXFx1MDAzZXR5cGUgPSAoYnVmZl90eXBlID09IFBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX1RYID9cXG4rXFx0XFx0UFJVRVRIX1NXREFUQV9YRFBGX1RYIDogUFJVRVRIX1NXREFUQV9YRFBGKTtcXG4gXFx0c3dkYXRhLVxcdTAwM2VkYXRhLnhkcGYgPSB4ZHBmO1xcbiBcXG4gXFx0LyogUmVwb3J0IEJRTCBiZWZvcmUgc2VuZGluZyB0aGUgcGFja2V0ICovXFxuQEAgLTgwNCw2ICs4MDcsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChlbWFjX3htaXRfeGRwX2ZyYW1lKTtcXG4gICovXFxuIHN0YXRpYyB1MzIgZW1hY19ydW5feGRwKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiAqbGVuKVxcbiB7XFxuK1xcdGVudW0gcHJ1ZXRoX3R4X2J1ZmZfdHlwZSB0eF9idWZmX3R5cGU7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gZW1hYy1cXHUwMDNlbmRldjtcXG4gXFx0c3RydWN0IG5ldGRldl9xdWV1ZSAqbmV0aWZfdHhxO1xcbiBcXHRpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpO1xcbkBAIC04MjYsMTEgKzgzMCwyMSBAQCBzdGF0aWMgdTMyIGVtYWNfcnVuX3hkcChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgKmxlblxcbiBcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIFxcdFxcdH1cXG4gXFxuK1xcdFxcdC8qIEluIEFGX1hEUCB6ZXJvLWNvcHkgbW9kZSB4ZHBfY29udmVydF9idWZmX3RvX2ZyYW1lKClcXG4rXFx0XFx0ICogY2xvbmVzIHRoZSB4c2sgYnVmZmVyIGludG8gYSBmcmVzaCBNRU1fVFlQRV9QQUdFX09SREVSMFxcbitcXHRcXHQgKiBwYWdlIHRoYXQgaXMgbm90IERNQSBtYXBwZWQuIFN1Y2ggYSBmcmFtZSBtdXN0IGJlIG1hcHBlZFxcbitcXHRcXHQgKiB2aWEgdGhlIE5ETyBwYXRoOyBvbmx5IGEgcGFnZSBwb29sLWJhY2tlZCBmcmFtZSBhbHJlYWR5XFxuK1xcdFxcdCAqIGNhcnJpZXMgYSB1c2FibGUgcGFnZV9wb29sIERNQSBhZGRyZXNzLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0dHhfYnVmZl90eXBlID0gKHhkcGYtXFx1MDAzZW1lbV90eXBlID09IE1FTV9UWVBFX1BBR0VfUE9PTCA/XFxuK1xcdFxcdFxcdFxcdFBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX1RYIDpcXG4rXFx0XFx0XFx0XFx0UFJVRVRIX1RYX0JVRkZfVFlQRV9YRFBfTkRPKTtcXG4rXFxuIFxcdFxcdHFfaWR4ID0gY3B1ICUgZW1hYy1cXHUwMDNldHhfY2hfbnVtO1xcbiBcXHRcXHRuZXRpZl90eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKG5kZXYsIHFfaWR4KTtcXG4gXFx0XFx0X19uZXRpZl90eF9sb2NrKG5ldGlmX3R4cSwgY3B1KTtcXG4gXFx0XFx0cmVzdWx0ID0gZW1hY194bWl0X3hkcF9mcmFtZShlbWFjLCB4ZHBmLCBxX2lkeCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICBQUlVFVEhfVFhfQlVGRl9UWVBFX1hEUF9UWCk7XFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgdHhfYnVmZl90eXBlKTtcXG4gXFx0XFx0X19uZXRpZl90eF91bmxvY2sobmV0aWZfdHhxKTtcXG4gXFx0XFx0aWYgKHJlc3VsdCA9PSBJQ1NTR19YRFBfQ09OU1VNRUQpIHtcXG4gXFx0XFx0XFx0bmRldi1cXHUwMDNlc3RhdHMudHhfZHJvcHBlZCsrO1xcbkBAIC0xMzk1LDYgKzE0MDksNyBAQCB2b2lkIHBydWV0aF90eF9jbGVhbnVwKHZvaWQgKmRhdGEsIGRtYV9hZGRyX3QgZGVzY19kbWEpXFxuIFxcdFxcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIFBSVUVUSF9TV0RBVEFfWERQRjpcXG4rXFx0Y2FzZSBQUlVFVEhfU1dEQVRBX1hEUEZfVFg6XFxuIFxcdFxcdHhkcGYgPSBzd2RhdGEtXFx1MDAzZWRhdGEueGRwZjtcXG4gXFx0XFx0eGRwX3JldHVybl9mcmFtZSh4ZHBmKTtcXG4gXFx0XFx0YnJlYWs7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmhcXG5pbmRleCBkZjkzZDE1YzViNzg2ZC4uMDBiYjc2MGQ2OGE5NGQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaFxcbkBAIC0xNTMsNiArMTUzLDcgQEAgZW51bSBwcnVldGhfc3dkYXRhX3R5cGUge1xcbiBcXHRQUlVFVEhfU1dEQVRBX0NNRCxcXG4gXFx0UFJVRVRIX1NXREFUQV9YRFBGLFxcbiBcXHRQUlVFVEhfU1dEQVRBX1hTSyxcXG4rXFx0UFJVRVRIX1NXREFUQV9YRFBGX1RYLFxcbiB9O1xcbiBcXG4gZW51bSBwcnVldGhfdHhfYnVmZl90eXBlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDc6Mzg6MDcuMDgzOTA1NzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MjM4MTY3OTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVEkgSUNTU0cgUFJVIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gVGV4YXMgSW5zdHJ1bWVudHMgSzMgU29DcyBhbmQgcmVxdWlyZXMgdGhlIFBSVS1JQ1NTIGhhcmR3YXJlIHN1YnN5c3RlbSBhbmQgc3BlY2lmaWMgZmlybXdhcmUuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVjNjZiZTg3NzAzNDc1MzMwNWUxZWY1ZTJkOTIxMjVkYjM2NzAzYTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAwNzozODowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmNcbmluZGV4IDgyZGRlZjljMTdkNTRlLi42NGFlMzcwNDQ4MWUwNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uY1xuQEAgLTE4NSw3ICsxODUsOCBAQCB2b2lkIHBydWV0aF94bWl0X2ZyZWUoc3RydWN0IHBydWV0aF90eF9jaG4gKnR4X2NobixcbiBcdGZpcnN0X2Rlc2MgPSBkZXNjO1xuIFx0bmV4dF9kZXNjID0gZmlyc3RfZGVzYztcbiBcdHN3ZGF0YSA9IGNwcGk1X2hkZXNjX2dldF9zd2RhdGEoZmlyc3RfZGVzYyk7XG4tXHRpZiAoc3dkYXRhLVx1MDAzZXR5cGUgPT0gUFJVRVRIX1NXREFUQV9YU0spXG4rXHRpZiAoc3dkYXRhLVx1MDAzZXR5cGUgPT0gUFJVRVRIX1NXREFUQV9YU0sgfHxcbitcdCAgICBzd2RhdGEtXHUwMDNldHlwZSA9PSBQUlVFVEhfU1dEQVRBX1hEUEZfVFgpXG4gXHRcdGdvdG8gZnJlZV9wb29sO1xuIFxuIFx0Y3BwaTVfaGRlc2NfZ2V0X29idWYoZmlyc3RfZGVzYywgXHUwMDI2YnVmX2RtYSwgXHUwMDI2YnVmX2RtYV9sZW4pO1xuQEAgLTI1OSw2ICsyNjAsNyBAQCBpbnQgZW1hY190eF9jb21wbGV0ZV9wYWNrZXRzKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgaW50IGNobixcbiBcdFx0XHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgYnVkZ2V0KTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBQUlVFVEhfU1dEQVRBX1hEUEY6XG4rXHRcdGNhc2UgUFJVRVRIX1NXREFUQV9YRFBGX1RYOlxuIFx0XHRcdHhkcGYgPSBzd2RhdGEtXHUwMDNlZGF0YS54ZHBmO1xuIFx0XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmRldiwgMSwgeGRwZi1cdTAwM2VsZW4pO1xuIFx0XHRcdHRvdGFsX2J5dGVzICs9IHhkcGYtXHUwMDNlbGVuO1xuQEAgLTc2OSw3ICs3NzEsOCBAQCB1MzIgZW1hY194bWl0X3hkcF9mcmFtZShzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsXG4gXHRrM191ZG1hX2dsdWVfdHhfZG1hX3RvX2NwcGk1X2FkZHIodHhfY2huLVx1MDAzZXR4X2NobiwgXHUwMDI2YnVmX2RtYSk7XG4gXHRjcHBpNV9oZGVzY19hdHRhY2hfYnVmKGZpcnN0X2Rlc2MsIGJ1Zl9kbWEsIHhkcGYtXHUwMDNlbGVuLCBidWZfZG1hLCB4ZHBmLVx1MDAzZWxlbik7XG4gXHRzd2RhdGEgPSBjcHBpNV9oZGVzY19nZXRfc3dkYXRhKGZpcnN0X2Rlc2MpO1xuLVx0c3dkYXRhLVx1MDAzZXR5cGUgPSBQUlVFVEhfU1dEQVRBX1hEUEY7XG4rXHRzd2RhdGEtXHUwMDNldHlwZSA9IChidWZmX3R5cGUgPT0gUFJVRVRIX1RYX0JVRkZfVFlQRV9YRFBfVFggP1xuK1x0XHRQUlVFVEhfU1dEQVRBX1hEUEZfVFggOiBQUlVFVEhfU1dEQVRBX1hEUEYpO1xuIFx0c3dkYXRhLVx1MDAzZWRhdGEueGRwZiA9IHhkcGY7XG4gXG4gXHQvKiBSZXBvcnQgQlFMIGJlZm9yZSBzZW5kaW5nIHRoZSBwYWNrZXQgKi9cbkBAIC04MDQsNiArODA3LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZW1hY194bWl0X3hkcF9mcmFtZSk7XG4gICovXG4gc3RhdGljIHUzMiBlbWFjX3J1bl94ZHAoc3RydWN0IHBydWV0aF9lbWFjICplbWFjLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyICpsZW4pXG4ge1xuK1x0ZW51bSBwcnVldGhfdHhfYnVmZl90eXBlIHR4X2J1ZmZfdHlwZTtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gZW1hYy1cdTAwM2VuZGV2O1xuIFx0c3RydWN0IG5ldGRldl9xdWV1ZSAqbmV0aWZfdHhxO1xuIFx0aW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTtcbkBAIC04MjYsMTEgKzgzMCwyMSBAQCBzdGF0aWMgdTMyIGVtYWNfcnVuX3hkcChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgKmxlblxuIFx0XHRcdGdvdG8gZHJvcDtcbiBcdFx0fVxuIFxuK1x0XHQvKiBJbiBBRl9YRFAgemVyby1jb3B5IG1vZGUgeGRwX2NvbnZlcnRfYnVmZl90b19mcmFtZSgpXG4rXHRcdCAqIGNsb25lcyB0aGUgeHNrIGJ1ZmZlciBpbnRvIGEgZnJlc2ggTUVNX1RZUEVfUEFHRV9PUkRFUjBcbitcdFx0ICogcGFnZSB0aGF0IGlzIG5vdCBETUEgbWFwcGVkLiBTdWNoIGEgZnJhbWUgbXVzdCBiZSBtYXBwZWRcbitcdFx0ICogdmlhIHRoZSBORE8gcGF0aDsgb25seSBhIHBhZ2UgcG9vbC1iYWNrZWQgZnJhbWUgYWxyZWFkeVxuK1x0XHQgKiBjYXJyaWVzIGEgdXNhYmxlIHBhZ2VfcG9vbCBETUEgYWRkcmVzcy5cbitcdFx0ICovXG4rXHRcdHR4X2J1ZmZfdHlwZSA9ICh4ZHBmLVx1MDAzZW1lbV90eXBlID09IE1FTV9UWVBFX1BBR0VfUE9PTCA/XG4rXHRcdFx0XHRQUlVFVEhfVFhfQlVGRl9UWVBFX1hEUF9UWCA6XG4rXHRcdFx0XHRQUlVFVEhfVFhfQlVGRl9UWVBFX1hEUF9ORE8pO1xuK1xuIFx0XHRxX2lkeCA9IGNwdSAlIGVtYWMtXHUwMDNldHhfY2hfbnVtO1xuIFx0XHRuZXRpZl90eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKG5kZXYsIHFfaWR4KTtcbiBcdFx0X19uZXRpZl90eF9sb2NrKG5ldGlmX3R4cSwgY3B1KTtcbiBcdFx0cmVzdWx0ID0gZW1hY194bWl0X3hkcF9mcmFtZShlbWFjLCB4ZHBmLCBxX2lkeCxcbi1cdFx0XHRcdFx0ICAgICBQUlVFVEhfVFhfQlVGRl9UWVBFX1hEUF9UWCk7XG4rXHRcdFx0XHRcdCAgICAgdHhfYnVmZl90eXBlKTtcbiBcdFx0X19uZXRpZl90eF91bmxvY2sobmV0aWZfdHhxKTtcbiBcdFx0aWYgKHJlc3VsdCA9PSBJQ1NTR19YRFBfQ09OU1VNRUQpIHtcbiBcdFx0XHRuZGV2LVx1MDAzZXN0YXRzLnR4X2Ryb3BwZWQrKztcbkBAIC0xMzk1LDYgKzE0MDksNyBAQCB2b2lkIHBydWV0aF90eF9jbGVhbnVwKHZvaWQgKmRhdGEsIGRtYV9hZGRyX3QgZGVzY19kbWEpXG4gXHRcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQUlVFVEhfU1dEQVRBX1hEUEY6XG4rXHRjYXNlIFBSVUVUSF9TV0RBVEFfWERQRl9UWDpcbiBcdFx0eGRwZiA9IHN3ZGF0YS1cdTAwM2VkYXRhLnhkcGY7XG4gXHRcdHhkcF9yZXR1cm5fZnJhbWUoeGRwZik7XG4gXHRcdGJyZWFrO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmhcbmluZGV4IGRmOTNkMTVjNWI3ODZkLi4wMGJiNzYwZDY4YTk0ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaFxuQEAgLTE1Myw2ICsxNTMsNyBAQCBlbnVtIHBydWV0aF9zd2RhdGFfdHlwZSB7XG4gXHRQUlVFVEhfU1dEQVRBX0NNRCxcbiBcdFBSVUVUSF9TV0RBVEFfWERQRixcbiBcdFBSVUVUSF9TV0RBVEFfWFNLLFxuK1x0UFJVRVRIX1NXREFUQV9YRFBGX1RYLFxuIH07XG4gXG4gZW51bSBwcnVldGhfdHhfYnVmZl90eXBlIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA3OjM4OjA3LjA4MzkwODM2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE2NzI4NDY0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBUSSBJQ1NTRyBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIHRvdWNoaW5nIGBpY3NzZ19jb21tb24uY2AgYW5kIGBpY3NzZ19wcnVldGguaGAgaW4gdGhlIFRJIElDU1NHIEV0aGVybmV0IGRyaXZlciBkaXJlY3RvcnkuIEl0J3MgYWRkaW5nIGBQUlVFVEhfU1dEQVRBX1hEUEZfVFhgIGFuZCBtYWtpbmcgc2lnbmlmaWNhbnQgY2hhbmdlcyB0byB0aGUgWERQLXJlbGF0ZWQgdHJhbnNtaXQgcGF0aHM6IGBwcnVldGhfeG1pdF9mcmVlYCwgYGVtYWNfdHhfY29tcGxldGVfcGFja2V0c2AsIGBlbWFjX3htaXRfeGRwX2ZyYW1lYCwgYW5kIGBwcnVldGhfdHhfY2xlYW51cGAuIEl0IGFsc28gbG9va3MgbGlrZSBgZW1hY19ydW5feGRwYCBoYXMgYmVlbiBtb2RpZmllZCB0byBoYW5kbGUgYE1FTV9UWVBFX1BBR0VfUE9PTGAgYW5kIHNldCB0aGUgYHR4X2J1ZmZfdHlwZWAgYXBwcm9wcmlhdGVseS4gU3BlY2lmaWNhbGx5LCB3ZSdyZSBsb29raW5nIGF0IHNldHRpbmcgYHR4X2J1ZmZfdHlwZWAgdG8gZWl0aGVyIGBQUlVFVEhfVFhfQlVGRl9UWVBFX1hEUF9UWGAgb3IgYFBSVUVUSF9UWF9CVUZGX1RZUEVfWERQX05ET2AuXG5cblRoaXMgc2NyZWFtcyBYRFAgb2ZmbG9hZCBmb3IgdGhpcyBUSSBJQ1NTRyBFdGhlcm5ldCBibG9jay4gTm93LCBnaXZlbiBteSBleHBlcmllbmNlIHdpdGggdGhpcyBhcmNoaXRlY3R1cmUsIEkga25vdyB0aGF0IFRJIElDU1NHLCB3aGljaCBpbmNsdWRlcyB0aGUgUFJVLUlDU1MsIGlzIHByZXR0eSBtdWNoIHRpZWQgdG8gc3BlY2lmaWMgVGV4YXMgSW5zdHJ1bWVudHMgU29DcywgbGlrZSB0aGUgQU02NXggYW5kIEFNNjR4IHNlcmllcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gZ29pbmcgdG8gYmUgKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0PyBJIGNhbid0IGltbWVkaWF0ZWx5IHJlY2FsbCBzZWVpbmcgYSBnb29kIElDU1NHIGVtdWxhdGlvbiBpbiBRRU1VIG9yIGV2ZW4gR29vZ2xlIENvbXB1dGUgRW5naW5lLiBUaG9zZSBoYXJkd2FyZSBibG9ja3MgYXJlIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBTb0Mgc2lsaWNvbi4gSXQncyB1bmxpa2VseSB0aGF0IHRoZSBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIGFueSBwbGF0Zm9ybSBvdGhlciB0aGFuIHRoZSBhY3R1YWwgc2lsaWNvbi5cblxuQWxyaWdodCwgbGV0J3MgY29uZmlybSBteSBzdXNwaWNpb25zLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMuIEknbSBnb2luZyB0byBzZWFyY2ggZm9yIGBUSV9JQ1NTR19QUlVFVEhgIG9yIGEgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBzZWUgaWYgdGhlcmUncyBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb3IgcGxhdGZvcm0tc3BlY2lmaWMgbG9naWMgdGhhdCBtaWdodCBpbGx1bWluYXRlIHRoaXMgZnVydGhlci4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIHRoZXJlJ3MgYW55IHBvc3NpYmlsaXR5IG9mIGVtdWxhdGluZyB0aGlzIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxNSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA3OjM4OjEzLjI1MTE5NjQ2NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjMwODI1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVElfSUNTU0dfUFJVRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTE2OT1jb25maWcgVExBTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxODY6Y29uZmlnIFRJX0lDU1NHX1BSVUVUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTg3LVxcdHRyaXN0YXRlIFxcXCJUSSBHaWdhYml0IFBSVSBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIwNDpjb25maWcgVElfSUNTU0dfUFJVRVRIX1NSMVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjA1LVxcdHRyaXN0YXRlIFxcXCJUSSBHaWdhYml0IFBSVSBTUjEuMCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA3OjM4OjEzLjM0NzUxNDMxNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTE5Mjk3NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uLCBwcmVzZW50ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBEZXBlbmRlbmNpZXMgb2YgVElfSUNTU0dfUFJVRVRIKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRJX0lDU1NHX1BSVUVUSGAuIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbiwgaXNuJ3QgaXQ/IFVuZGVyc3RhbmRpbmcgd2hhdCB0aGlzIG1vZHVsZSByZWxpZXMgb24gaXMgYWJzb2x1dGVseSBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgYmVoYXZpb3IsIHBvdGVudGlhbCBpbXBhY3Qgb24gdGhlIHN5c3RlbSwgYW5kIGhvdyB0byBwcm9wZXJseSBjb25maWd1cmUgYW5kIGludGVncmF0ZSBpdC4gSSBuZWVkIHRvIGtub3cgdGhlIHByZXJlcXVpc2l0ZXM6IG90aGVyIGRyaXZlcnMsIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zLCBwZXJoYXBzIGZpcm13YXJlIHZlcnNpb25zLCBhbmQgYW55IHJlbGV2YW50IGxpYnJhcmllcyBvciBzdXBwb3J0IG1vZHVsZXMuIFRoZSBkZXBlbmRlbmN5IHRyZWUgaXMgd2hhdCBJIG5lZWQgdG8gdW5wYWNrLiBJJ2xsIG5lZWQgdG8gY29uc2lkZXIgbm90IGp1c3QgdGhlIGltbWVkaWF0ZWx5IG9idmlvdXMgZGVwZW5kZW5jaWVzLCBidXQgYWxzbyB0aG9zZSB0aGF0IGFyZSBtb3JlIGRlZXBseSBuZXN0ZWQuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIGF2b2lkaW5nIGNvbmZsaWN0cywgZW5zdXJpbmcgcHJvcGVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgYW5kIG9wdGltaXppbmcgb3ZlcmFsbCBwZXJmb3JtYW5jZS4gU28sIG15IGZvY3VzIG5vdyBpcyBpZGVudGlmeWluZyB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kIGNhdGFsb2dpbmcgdGhlbSBzeXN0ZW1hdGljYWxseS4gSSdsbCBuZWVkIHRvIHJlZmVyIHRvIGRvY3VtZW50YXRpb24sIGNvZGUsIGFuZCBwb3RlbnRpYWxseSBldmVuIGRlYnVnIHRoZSBzeXN0ZW0gaWYgdGhlIGluZm9ybWF0aW9uIGlzbid0IHJlYWRpbHkgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTgyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDc6Mzg6MTYuODU5NDQ2NTkzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0OTY4MzY5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipUSV9JQ1NTR19QUlVFVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNzozODoxNi45NTQ0MjQyNzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjI2MDMxNTg4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKktjb25maWcgUmV2aWV3IGZvciBUSV9JQ1NTR19QUlVFVEgqKlxuXG5Pa2F5LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcGF0aCwgSSByZWFsbHkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgYFRJX0lDU1NHX1BSVUVUSGAuIFRoYXQncyB0aGUgY3J1Y2lhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBjb25maWd1cmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBkcml2ZXIuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgaWYgaXQgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkIGFuZCB3aHksIG9yIGlmIGl0IGlzIGRpc2FibGVkLCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBpdCAqY2FuKiBiZS4gQXJlIHRoZXJlIG90aGVyIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGF1dG9tYXRpY2FsbHkgcHVsbGVkIGluIHdoZW4gdGhpcyBpcyBzZWxlY3RlZD8gQXJlIHRoZXJlIGFueSBjb25mbGljdGluZyBvcHRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gVGhpcyB3aWxsIGhlbHAgbWUgcXVpY2tseSB1bmRlcnN0YW5kIHdoeSBgVElfSUNTU0dfUFJVRVRIYCBpcyBiZWhhdmluZyB0aGUgd2F5IGl0IGlzLCBvciBpZiBpdCB3aWxsIGJlaGF2ZSB0aGUgd2F5IGl0IGlzIHN1cHBvc2VkIHRvLiBHcmFzcGluZyB0aGlzIGNvbnRleHQgbm93IHdpbGwgc2F2ZSBtZSBhIHRvbiBvZiB0aW1lIGRvd24gdGhlIHJvYWQuIEFscmlnaHQsIEtjb25maWcsIGhlcmUgSSBjb21lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDc1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDc6Mzg6MjkuMjE0NzQzNzAzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODYsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODY6XFx0Y29uZmlnIFRJX0lDU1NHX1BSVUVUSFxcbiAxODc6XFx0XFx0dHJpc3RhdGUgXFxcIlRJIEdpZ2FiaXQgUFJVIEV0aGVybmV0IGRyaXZlclxcXCJcXG4gMTg4OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gMTg5OlxcdFxcdHNlbGVjdCBUSV9JQ1NTX0lFUFxcbiAxOTA6XFx0XFx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXFxuIDE5MTpcXHRcXHRkZXBlbmRzIG9uIFBSVV9SRU1PVEVQUk9DXFxuIDE5MjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcXG4gMTkzOlxcdFxcdGRlcGVuZHMgb24gQVJDSF9LMyBcXHUwMDI2XFx1MDAyNiBPRiBcXHUwMDI2XFx1MDAyNiBUSV9LM19VRE1BX0dMVUVfTEFZRVJcXG4gMTk0OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gMTk1OlxcdFxcdGRlcGVuZHMgb24gSFNSIHx8ICFIU1JcXG4gMTk2OlxcdFxcdGhlbHBcXG4gMTk3OlxcdFxcdCAgU3VwcG9ydCBkdWFsIEdpZ2FiaXQgRXRoZXJuZXQgcG9ydHMgb3ZlciB0aGUgSUNTU0cgUFJVIFN1YnN5c3RlbS5cXG4gMTk4OlxcdFxcdCAgVGhpcyBzdWJzeXN0ZW0gaXMgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggdGhlIEFNNjUgcGxhdGZvcm0uXFxuIDE5OTpcXHRcXG4gMjAwOlxcdFxcdCAgVGhpcyBkcml2ZXIgcmVxdWlyZXMgZmlybXdhcmUgYmluYXJpZXMgd2hpY2ggd2lsbCBydW4gb24gdGhlIFBSVXNcXG4gMjAxOlxcdFxcdCAgdG8gc3VwcG9ydCB0aGUgRXRoZXJuZXQgb3BlcmF0aW9uLiBDdXJyZW50bHksIGl0IHN1cHBvcnRzIEV0aGVybmV0XFxuIDIwMjpcXHRcXHQgIHdpdGggMUcgYW5kIDEwME0gbGluayBzcGVlZC5cXG4gMjAzOlxcdFxcbiAyMDQ6XFx0Y29uZmlnIFRJX0lDU1NHX1BSVUVUSF9TUjFcXG4gMjA1OlxcdFxcdHRyaXN0YXRlIFxcXCJUSSBHaWdhYml0IFBSVSBTUjEuMCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA3OjM4OjI5LjIxNDg0NDA3M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMDcxODcxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBoaW5nZXMgb24gdGhyZWUga2V5IGZhY3RvcnM6IGBBUkNIX0szYCwgYE9GYCwgYW5kIGBUSV9LM19VRE1BX0dMVUVfTEFZRVJgLiBUaGUgZmlyc3Qgb25lLCBgQVJDSF9LM2AsIGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgVEkncyBLMyBNdWx0aWNvcmUgU29DIGFyY2hpdGVjdHVyZSDigJMgYSBoYXJkd2FyZS1zcGVjaWZpYyBiZWFzdC4gSSBrbm93IHRoaXMgaXMgYSBkcml2ZXIgZGVzaWduZWQgZm9yIHRob3NlIHBhcnRpY3VsYXIgVEkgU29DcywgbWVhbmluZyBpdCdzIGludHJpbnNpY2FsbHkgdGllZCB0byB0aGUgc2lsaWNvbi5cblxuVGhlIGltcGxpY2F0aW9uIGlzIGNsZWFyOiB5b3UgY2FuJ3Qgc2ltcGx5IGZpcmUgdXAgYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBzb21ldGhpbmcgbGlrZSBRRU1VIG9yIEdDRSwgYW5kIGV4cGVjdCB0byBtZWFuaW5nZnVsbHkgZnV6eiB0aGlzLiBJdCBuZWVkcyB0aGF0IHNwZWNpZmljIGhhcmR3YXJlLCBvciBhdCBsZWFzdCBhIGhpZ2hseSBhY2N1cmF0ZSBlbXVsYXRpb24gb2YgaXQsIGFuZCBmcmFua2x5LCB0aGF0IGxldmVsIG9mIGVtdWxhdGlvbiBpcyByYXJlbHksIGlmIGV2ZXIsIHByZXNlbnQgaW4gdGhlIHN5emthbGxlciB3b3JrZmxvdy4gVGhlcmVmb3JlLCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgdGhpcyBpcyBub3QgXCJXb3J0aEZ1enppbmdcIi5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLiBPa2F5LCBJIHNlZS4gVGhlIGRyaXZlciBuZWVkcyBmaXJtd2FyZSBiaW5hcmllcyB0aGF0IHJ1biBvbiB0aGUgUFJVcyB0byBoYW5kbGUgRXRoZXJuZXQgb3BlcmF0aW9uLiBSaWdodCwgaXQncyBkZWZpbml0ZWx5IGhhcmR3YXJlLWRlcGVuZGVudC5cblxuU28sIHRoZSBwYXRjaCBpcyB0b3VjaGluZyB0aGUgVEkgSUNTU0cgUFJVIEV0aGVybmV0IGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ApLiBJdCdzIGFsbCBhYm91dCB0aGF0IFBSVS1JQ1NTIHN1YnN5c3RlbSBhbmQgdGhlIGZpcm13YXJlIGl0IG5lZWRzLiBUaGlzIGlzIGFib3V0IGFzIGhhcmR3YXJlLXNwZWNpZmljIGFzIGl0IGdldHMuIEl0J3Mgc2ltcGx5IG5vdCBhY2Nlc3NpYmxlIG9yIHRlc3RhYmxlIGluIG91ciBzdGFuZGFyZCBmdXp6aW5nIHNldHVwLlxuXG5Pa2F5LCBJJ20gY29uZmlkZW50IGluIG15IGNvbmNsdXNpb24uIEknbSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwODUsIk91dHB1dFRva2VucyI6OTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNzozODozNS4zMjIwMzQyMDlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVEkgSUNTU0cgUFJVIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gVGV4YXMgSW5zdHJ1bWVudHMgSzMgU29DcyBhbmQgcmVxdWlyZXMgdGhlIFBSVS1JQ1NTIGhhcmR3YXJlIHN1YnN5c3RlbSBhbmQgc3BlY2lmaWMgZmlybXdhcmUuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVEkgSUNTU0cgUFJVIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gVGV4YXMgSW5zdHJ1bWVudHMgSzMgU29DcyBhbmQgcmVxdWlyZXMgdGhlIFBSVS1JQ1NTIGhhcmR3YXJlIHN1YnN5c3RlbSBhbmQgc3BlY2lmaWMgZmlybXdhcmUuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowjqkmr[1] Phase: Running StartedAt: 2026-06-25 07:40:10 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjqkmr[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-25 07:40:10 +0000 UTC FinishedAt: 2026-06-25 07:40:16 +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,}